这是一个为DataHub实现的Model Context Protocol服务器。
DataHub是一个开源的上下文平台,它使组织能够在整个数据供应链中获得单一视图。DataHub统一了数据发现、治理和可观测性,涵盖了每个表、列、仪表板管道、文档和ML模型。
通过强大的数据配置文件、数据质量监控、数据血缘、数据所有权和数据分类等功能,DataHub结合了技术和组织上下文,使得团队能够找到、创建、使用和维护可信的数据。
DataHub MCP服务器使AI代理能够:
通过DataHub MCP服务器,您可以立即让AI代理看到整个数据生态系统。查找并理解存储在数据库、数据湖、数据仓库和BI可视化工具中的数据。探索数据血缘,理解使用情况和用例,识别数据专家,并生成SQL——所有这些都通过自然语言完成。
超越关键词匹配,使用强大的查询和过滤语法:
/q revenue_* 查找 revenue_kpis、revenue_daily、revenue_forecast/q tag:PII 查找所有标记为PII的数据/q (sales OR revenue) AND quarterly 进行复杂查询访问热门SQL查询,并生成新的准确查询:
跟踪数据流,包括表和列级别:
user_id 如何变成下游的 customer_key在搜索前理解您的数据是如何组织的:
请参阅DataHub MCP服务器文档获取说明。
查看由Block团队合作制作的demo视频。
DataHub MCP服务器提供以下工具:
search
使用结构化的关键词搜索(/q语法)搜索DataHub,支持布尔逻辑、过滤、分页和可选的按使用指标排序。
get_lineage
检索任何实体(数据集、列、仪表板等)的上游或下游血缘,支持过滤、血缘内的查询、分页和跳跃控制。
get_dataset_queries
获取引用数据集或列的实际SQL查询——手动或系统生成的——以理解使用模式、连接、过滤器和聚合行为。
get_entities
根据URN获取一个或多个实体的详细元数据;支持批量检索以高效检查搜索结果。
list_schema_fields
列出数据集的模式字段,支持关键词过滤和分页,当搜索结果截断字段或探索大型模式时非常有用。
get_lineage_paths_between
检索两个资产或列之间的精确血缘路径,包括中间转换和SQL查询信息。
此示例展示了AI代理如何协调DataHub MCP工具以回答用户的查询。它演示了决策流程、调用哪些工具以及如何使用响应。
示例:
“我如何找出上个月有多少宠物被领养?”
代理将其识别为数据发现→查询构建工作流程。它需要(a)找到相关的数据集,(b)检查元数据,(c)构建正确的SQL查询。
代理从search工具开始(取决于配置,可能是语义或关键词)。
工具: search
输入: 自然语言查询
示例调用:
{
"query": "宠物领养"
}
目的: 识别数据集如领养、宠物概况、宠物详情。
对于搜索返回的每个数据集,代理可能会获取元数据。
工具: list_schema_fields
输入: 数据集的URN
目的: 理解模式、数据类型、查询候选字段。
示例:
{
"urn": "urn:li:dataset:(urn:li:dataPlatform:snowflake,mydb.public.领养,PROD)"
}
工具: get_lineage
目的: 确定数据集是衍生的还是权威的。
工具: get_dataset_queries
目的: 学习数据集的典型使用模式和查询模板。
如果问题需要连接或实体导航(例如,连接宠物→领养):
为了检索与给定URN相关的实体,如上下游表。
如果需要计算数据集之间的精确血缘路径(例如,宠物概况和领养之间)。
代理现在有了:
代理构建了一个准确的SQL查询。
示例:
SELECT COUNT(*)
FROM mydb.public.领养
WHERE 领养日期 >= DATE_TRUNC('月', CURRENT_DATE - INTERVAL '1' 月)
AND 领养日期 < DATE_TRUNC('月', CURRENT_DATE);
代理可以选择:
| 工具名称 | 目的 |
|---|---|
search | 找到与问题相关的数据集。 |
list_schema_fields | 理解数据集结构。 |
get_lineage | 评估数据权威性和来源。 |
get_dataset_queries | 学习数据集通常如何被查询。 |
get_entities | 检索相关实体以提供上下文。 |
get_lineage_paths_between | 理解数据集之间的深层关系。 |
请参阅DEVELOPING.md。