mcp-datahub
使用说明(Markdown 格式)
-
项目简介
- mcp-datahub 是一个可运行的 MCP 服务器实现,围绕 DataHub 元数据 catalogs 提供后端服务。它通过 MCP 框架暴露一组工具(Tools)来读取数据、获取实体与 schema、查询血缘、列级血缘等,并可通过集成的查询提供者(如 Trino)注入执行上下文。服务器支持多连接数据源配置(Multi-Server),并提供标准的 stdio 传输(StdioTransport)作为默认通道。
-
主要功能点
- MCP 服务器核心实现:实现 RegisterAll/WrapHandler 等机制,提供工具的 JSON-RPC 风格请求响应。
- 资源与工具管理:提供诸如 datahub_search、datahub_get_entity、datahub_get_schema、datahub_get_lineage 等工具,以及 list_tags、list_domains、list_data_products、get_data_product 等工具。
- 多服务器支持:通过 internal/server 与 multiserver 包实现对多个 DataHub 实例的注册与并发访问。
- 集成中间件:支持 URN 解析、访问控制、审计日志、元数据富化等集成接口,便于企业级管控。
- QueryProvider 集成:通过 integration 包的 QueryProvider 接口,工具输出可注入执行上下文(如 table resolution、query examples、execution context 等),实现与外部查询引擎的双向上下文传递。
- Transport 与客户端:默认使用 StdioTransport 进行 MCP JSON-RPC 的通信,亦可扩展为 SSE、WebSocket 等传输。
-
安装与运行步骤
- 构建与运行
- 使用 Go 构建并运行服务器二进制。
- 运行时自动从环境变量加载多服务器配置(Primary 数据源及附加服务器),并可通过 MCP 客户端连接进行交互。
- 服务器配置(给 MCP 客户端的启动信息, client 侧配置请见下方示例)
- MCP 服务器是对外提供上下文服务的后端,MCP 客户端(如 Claude Desktop、Cursor、其他 MCP 客户端)需要指向服务器的启动命令与参数,以及必要的环境变量来建立连接。
- JSON 配置示例(用于 Claude Desktop 等客户端的服务器启动配置): { "mcpServers": { "datahub": { "command": "/path/to/mcp-datahub", "args": [], "env": { "DATAHUB_URL": "https://datahub.example.com", "DATAHUB_TOKEN": "your_token" } } } }
- 说明:
- command 指定 MCP 服务器可执行文件的路径。
- args 可以包含服务器启动时的额外参数(本仓库默认通过环境变量读取配置,无需额外必填参数)。
- env 中的 DATAHUB_URL 与 DATAHUB_TOKEN 用以让服务器连接 DataHub GraphQL API,若有多实例,通过 DATAHUB_ADDITIONAL_SERVERS 等环境变量可扩展。
- 如果需要多服务器并发连接,可在 DATAHUB_ADDITIONAL_SERVERS JSON 中添加更多服务器配置,字段包括 url、token、timeout、defaultLimit、maxLimit、maxLineageDepth 等,且附加服务器会从主服务器继承未显式覆盖的参数。
- 运行后使用
- MCP 客户端通过 MCP 协议向服务器发起 JSON-RPC 请求,调用上述工具、读取数据、获取 schema、 lineage 等信息。
- 服务器支持多传输方案,当前默认实现为 Stdio 传输,亦可扩展为 SSE/WebSocket 等。
- 构建与运行
-
基本使用方法
- 启动后,MCP 客户端即可连接并通过工具名称调用各工具(如 datahub_search、datahub_get_entity、datahub_get_schema 等),服务端会返回对应的 JSON-RPC 响应。
- 如果配置了 QueryProvider,某些工具(如 datahub_get_entity、datahub_get_schema、datahub_get_lineage 等)将附带执行上下文信息(query_table、query_examples、execution_context 等),以便 LLM 更好地构建上下文。
- 多服务器模式下,可以通过工具中的 connection 字段指定具体 DataHub 实例,默认使用主连接。
-
额外提示
- 该仓库包含完整的服务端实现、工具注册、中间件、以及大量针对工具的单元测试,确保 MCP 服务端行为可预测且可扩展。
- 开发者若要自定义工具或接入自家数据源,可使用 toolkit 提供的多服务器管理器(NewToolkitWithManager)并利用 WithURNResolver、WithAccessFilter、WithAuditLogger、WithMetadataEnricher、WithQueryProvider 等选项扩展能力。