关于 openmetadata
OpenMetadata MCP 服务为 OpenMetadata 提供实体查询与 CRUD 工具,涵盖元数据、血缘、数据质量及 1.12+ 数据契约等类型。面向需要批量元数据操作、质量调查和影响分析的团队,并提供聚合工具、提示词与资源。
主要功能
- 01查询并管理多类元数据实体
- 02支持数据契约验证与结果查询
- 03执行关键词和语义搜索
- 04汇总血缘影响与数据质量
- 05提供 MCP 提示词和 URI 资源
适用场景
- 01评估表变更影响及相关负责人
- 02调查近期数据质量失败
- 03批量建立术语表并关联术语
- 04查找并重新分配用户拥有的实体
MCP 相关
通过 stdio 或可选的 Streamable HTTP 向 MCP 客户端暴露工具、提示词和只读 URI 资源;写入操作默认关闭,可配置启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @us-all/openmetadata-mcpOPENMETADATA_HOSTOpenMetadata server URL (e.g. https://om.example.com).OPENMETADATA_TOKEN密钥OpenMetadata bot/JWT token.OPENMETADATA_ALLOW_WRITESet to 'true' to enable write/destructive tools. Default read-only.OM_TOOLSComma-separated category allowlist. Default: all categories enabled.OM_DISABLEComma-separated category disablelist.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
173收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 是 | 搜索查询 |
| from | number | 否 | 分页偏移量 |
| size | number | 否 | 要返回的结果数(最多 100 条) |
| index | enum | 否 | 将搜索范围限制为特定实体索引table_search_index | topic_search_index | dashboard_search_index | pipeline_search_index | mlmodel_search_index | container_search_index | query_search_index | user_search_index | team_search_index | glossary_term_search_index | tag_search_index | data_product_search_index | stored_procedure_search_index | dashboard_data_model_search_index | search_entity_search_index | domain_search_index | api_collection_search_index | api_endpoint_search_index |
| deleted | boolean | 否 | 包括软删除的实体 |
| sortField | string | 否 | 排序字段(例如 'updatedAt') |
| sortOrder | enum | 否 | 排序顺序asc | desc |
| queryFilter | string | 否 | ElasticSearch 查询筛选器(JSON) |
| extractFields | string | 否 | 从响应中提取并投影字段的逗号分隔点路径(例如 'id,name,owner.name,columns.*.name')。使用 `*` 作为数组/对象的通配符。用反引号括住包含点的字段名。可大幅减少大型实体的响应令牌数。 |
| trackTotalHits | boolean | 否 | 跟踪精确的命中总数 |
| includeSourceFields | string | 否 | 要包含的源字段 |
详细介绍
OpenMetadata MCP 服务
这款 OpenMetadata MCP 服务为所有实体类型提供完整的 CRUD 能力,涵盖 OM 1.12+ Data Contracts、Metrics、Search Index、API Collections 和 API Endpoints,而内嵌 MCP 尚未支持这些类型。
提供 172 个工具、4 个工作流提示词(血缘影响分析 / 数据质量调查 / 术语表初始化 / 负责人重新分配)、7 个 MCP 资源,以及
lineage-impact(下游影响范围及负责人通知名单)、quality-rollup(指定范围内的数据质量状态汇总)和官方 Data Contract 验证等聚合功能。
它的独特之处
- 覆盖 OM 1.12+ 实体 — Data Contracts、Metrics、Search Index、API Collections、API Endpoints,以及原生合约验证和结果检索。内嵌 MCP 尚未支持这些类型。
- 聚合工具 —
lineage-impact通过遍历血缘关系、统计使用方、按实体类型细分,并解析所有相关负责人的名单,用一次调用回答“如果我更改或删除 X,会影响什么?”,以便通知变更管理相关人员。get-domain-summary通过/search/query一次性返回域及 6 种子实体类型,并启用track_total_hits,无需依次发起 7 次调用。get-table-summary也会以类似方式汇总表、血缘关系、样例数据和数据质量信息。 - 语义搜索 — 使用 OM 1.12+ 向量索引执行
semantic-search(POST/search/vector/query)。适用于关键词搜索无法匹配同义词的情况。 - MCP 提示词(4 个)—
lineage-impact-analysis、data-quality-investigation、glossary-term-bootstrap、owner-change-propagation。模型可直接调用这些工作流模板。 - MCP 资源(7 个)—
om://table/{fqn}、om://glossary-term/{fqn}、om://lineage/{type}/{fqn}、om://search/{query}、om://dashboard/{fqn}、om://pipeline/{fqn}、om://schema/{fqn}。 - 专为节省令牌而设计 — 28 个读取工具支持
extractFields投影(移除changeDescription/version/updatedBy/href等冗余信息,体积约减少 80%),并支持OM_TOOLS/OM_DISABLE分类开关及search-tools元工具。 - Apps SDK 卡片 — 在 ChatGPT 客户端中,
lineage-impact会通过_meta["openai/outputTemplate"]渲染为影响范围卡片(包含下游/上游数量、类型细分、主要使用方及待通知负责人)。Claude 客户端会收到相同的 JSON 内容。 - stdio + Streamable HTTP — 默认使用 stdio。设置
MCP_TRANSPORT=http可用于 ChatGPT Apps SDK 或远程客户端(通过MCP_HTTP_TOKEN使用 Bearer 身份验证)。
试试这些提示词——共 5 条
将此服务连接到 Claude Desktop 或 Claude Code,然后粘贴以下任意一条:
- 血缘影响分析 — “
payments.transactions表即将弃用。列出所有依赖它的仪表板、管道和机器学习模型(上游 + 下游,深度 3)。” - 数据质量调查 — “显示过去 7 天内所有未通过的测试用例。先按表分组,再按测试类型分组,并统计通过/未通过数量。”
- 术语表初始化 — “创建一个名为
payments的术语表,包含以下 8 个术语:chargeback、refund、settlement、KYC、AML、transaction、customer-id、payment-method。关联相关术语。” - 负责人重新分配 — “用户
taehee即将离职。列出所有由其负责的实体(表/仪表板/管道/机器学习模型),然后将这些实体的负责人全部改为团队data-platform。” - 域摘要 — “总结
analytics域:表/仪表板/管道/机器学习模型的总数、近期更新最多的前 5 项,以及它拥有的数据产品。”
何时使用此工具而非 OpenMetadata 内置 MCP
OpenMetadata 1.12+ 自带内置 MCP。两者互为补充:
| OM 1.12 内置 MCP | @us-all/openmetadata-mcp(此工具) | |
|---|---|---|
| 工具数量 | ~10(搜索、词汇表基础功能、数据血缘、DQ、RCA、语义搜索) | 172(涵盖所有实体类型的完整 CRUD) |
| OM 1.12+ 实体类型(Data Contracts/Metrics/Search Index/API) | 部分支持 | ✅ 12 个工具 |
| 聚合工具 | ❌ | ✅ lineage-impact、get-domain-summary、get-table-summary |
| MCP 提示词 | ❌ | ✅ 4 个 |
| MCP 资源 | ❌ | ✅ 7 个 |
| 身份验证 | OAuth2 / PAT、OM Authorization Engine(RBAC) | JWT 机器人令牌 + 写入门控 |
| 部署 | 内置于 OM 服务中(通过 marketplace 安装) | 独立 npm / Docker / npx |
| OM 版本 | 仅支持 1.12+ | 兼容 1.x |
| 最适用于 | 支持 RBAC 的 AI Agent、使用 SSO 的组织 | 批量 CRUD、自动化、示例数据、较旧的 OM 集群 |
使用内置 MCP 实现支持 RBAC 且使用 SSO 的治理。对于批量元数据操作、完整的实体 CRUD 功能、自动化,以及低于 1.12 的 OM 集群,请使用此服务。
安装
Claude Desktop
{
"mcpServers": {
"openmetadata": {
"command": "npx",
"args": ["-y", "@us-all/openmetadata-mcp"],
"env": {
"OPENMETADATA_HOST": "http://your-host:8585",
"OPENMETADATA_TOKEN": "<jwt-bot-token>"
}
}
}
}
Claude Code
claude mcp add openmetadata -s user \
-e OPENMETADATA_HOST=http://your-host:8585 \
-e OPENMETADATA_TOKEN=<jwt-bot-token> \
-- npx -y @us-all/openmetadata-mcp
Docker
docker run --rm -i \
-e OPENMETADATA_HOST=http://your-host:8585 \
-e OPENMETADATA_TOKEN=<jwt-bot-token> \
ghcr.io/us-all/openmetadata-mcp-server
从源代码构建
git clone https://github.com/us-all/openmetadata-mcp-server.git
cd openmetadata-mcp-server && pnpm install && pnpm build
node dist/index.js
获取令牌
- 打开 OpenMetadata UI → Settings → Bots
- 创建新机器人,或使用现有机器人(
ingestion-bot可用) - 复制 JWT 令牌
配置
| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
OPENMETADATA_HOST | ✅ | — | OpenMetadata 服务 URL(例如 http://localhost:8585) |
OPENMETADATA_TOKEN | ✅ | — | JWT 或机器人令牌 |
OPENMETADATA_ALLOW_WRITE | ❌ | false | 设置为 true 以启用变更操作(创建/更新/删除) |
OM_TOOLS | ❌ | — | 以逗号分隔的类别允许列表。最节省令牌。 |
OM_DISABLE | ❌ | — | 以逗号分隔的类别拒绝列表。设置 OM_TOOLS 时将忽略此项。 |
MCP_TRANSPORT | ❌ | stdio | 设置为 http 以启用 Streamable HTTP 传输 |
MCP_HTTP_TOKEN | 条件必需 | — | Bearer 令牌。当 MCP_TRANSPORT=http 时必需 |
MCP_HTTP_PORT | ❌ | 3000 | HTTP 监听端口 |
MCP_HTTP_HOST | ❌ | 127.0.0.1 | HTTP 绑定主机(针对 localhost 自动启用 DNS 重绑定保护) |
MCP_HTTP_SKIP_AUTH | ❌ | false | 跳过 Bearer 身份验证——例如,服务位于负责身份验证的反向代理之后时 |
类别(10 个):search、core、discovery、governance、quality、services、admin、events、entities、meta(始终启用)。
当 MCP_TRANSPORT=http 时:POST /mcp(Bearer 身份验证的 JSON-RPC)+ GET /health(公开存活状态检查)。
令牌效率
| 场景 | 工具数 | Schema 令牌数 | 相较默认值 |
|---|---|---|---|
| 默认(所有类别) | 172 | 24,000 | — |
典型(OM_TOOLS=search,core,governance,quality,discovery) | 120 | 19,500 | −19% |
精简(OM_TOOLS=search,core) | 26 | 4,600 | −81% |
extractFields 还能进一步将单次响应缩减约 80–90%(例如,使用 extractFields: "name,columns.*.name,columns.*.dataType",get-table 的响应可从 8KB 缩至 200B)。此功能会自动应用于 28 个读取工具。
// without
get-table { "id": "..." }
// with
get-table { "id": "...", "extractFields": "name,description,columns.*.name,columns.*.dataType" }
MCP 提示词(4 个)
可通过 MCP prompts/list 使用的工作流模板:
lineage-impact-analysis— 给定一个实体,遍历其上游和下游数据血缘,并按影响程度排序。data-quality-investigation— 对比两个时间窗口内的 DQ 测试结果;对失败模式进行聚类。glossary-term-bootstrap— 批量创建包含 N 个相关术语的词汇表,并自动建立关联。owner-change-propagation— 查找用户 X 拥有的所有实体,并提出批量重新分配方案。
MCP 资源
基于 URI 的只读访问:
om://table/{fqn}(表 + 列 + 所有者 + 标签 + 关联)、om://glossary-term/{fqn}、om://lineage/{type}/{fqn}(深度 3)、om://search/{query}(前 10 个关键词命中结果)、om://dashboard/{fqn}、om://pipeline/{fqn}(含任务)、om://schema/{fqn}。
工具(172)
10 个类别。运行时使用 search-tools 进行发现;完整列表已在下方折叠。
| 类别 | 工具数 |
|---|---|
| 表 / 数据库 / 架构 / 血缘 | 22 |
| 服务(数据库 / 仪表板 / 消息 / 管道 / ML / 存储) | 16 |
| 术语表 / 术语 | 12 |
| 领域 / 数据产品 | 12 |
| 分类 / 标签 | 10 |
| 发现(仪表板 / 管道 / 图表 / 主题 / 容器 / ML 模型) | 36 |
| 治理(角色 / 策略 / 用户 / 团队 / Bot) | 13 |
| 质量(测试套件 / 用例 / 示例数据) | 13 |
| 存储过程 / 查询 | 11 |
| OM 1.12+ 实体(数据契约 / 指标 / 搜索索引 / API 集合 / API 端点) | 12 |
搜索(search-metadata、suggest-metadata、semantic-search) | 3 |
聚合(lineage-impact、quality-rollup、get-domain-summary、get-table-summary) | 4 |
质量(受写入权限控制的 run-test-suite) | 1 |
元信息(search-tools) | 1 |
完整工具列表
搜索(3)
search-metadata、suggest-metadata、semantic-search
表(6)
list-tables、get-table、get-table-by-name、create-table、update-table、delete-table
数据库(6)
list-databases、get-database、get-database-by-name、create-database、update-database、delete-database
数据库架构(6)
list-schemas、get-schema、get-schema-by-name、create-schema、update-schema、delete-schema
血缘(4)
get-lineage、get-lineage-by-name、add-lineage、delete-lineage
服务(16)
6 个数据库服务工具 + 仪表板 / 消息 / 管道 / ML 模型 / 存储服务各 2 个工具。
术语表(12)
6 个术语表 CRUD 工具 + 6 个术语 CRUD 工具。
仪表板 / 管道 / 主题 / 图表 / 容器 / ML 模型(36)
每类 6 个 CRUD 工具,遵循 list / get / get-by-name / create / update / delete 模式。
分类和标签(10)
4 个分类工具 + 6 个标签 CRUD 工具。
领域和数据产品(12)
6 个领域工具 + 6 个数据产品 CRUD 工具。
用户和团队(9)
3 个用户读取工具 + 6 个团队 CRUD 工具。
访问控制(4)
list-roles、get-role、list-policies、get-policy
数据质量(7)
list-test-suites、get-test-suite、get-test-suite-by-name、list-test-cases、get-test-case、get-test-case-by-name、list-test-case-results
存储过程(6)
6 个 CRUD 工具。
查询(5)
list-queries、get-query、create-query、update-query、delete-query
事件(3)
list-events、get-event-subscription、get-event-subscription-by-name
Bot(3)
list-bots、get-bot、get-bot-by-name
示例数据(6,只读)
get-table-sample-data、get-table-sample-data-by-name、get-topic-sample-data、get-topic-sample-data-by-name、get-container-sample-data、get-container-sample-data-by-name
OM 1.12+ 实体(12)
list-data-contracts、get-data-contract-by-name、run-data-contract-validation、get-data-contract-latest-result、list-metrics、get-metric-by-name、list-search-indexes、get-search-index-by-name、list-api-collections、get-api-collection-by-name、list-api-endpoints、get-api-endpoint-by-name
聚合
lineage-impact、quality-rollup、get-domain-summary、get-table-summary
质量(受写入权限控制)
run-test-suite — 触发与该测试套件关联的摄取管道。异步执行;结果通过常规管道流程写入。
元信息
search-tools — 按关键字查询其他工具;始终启用。
架构
Claude → MCP stdio → src/index.ts → src/tools/*.ts → OpenMetadataClient (fetch) → OpenMetadata REST
基于 @us-all/mcp-toolkit 构建:
extractFields— 节省令牌的响应投影aggregate(fetchers, caveats)— 扇出辅助函数,由lineage-impact/get-domain-summary/get-table-summary使用createWrapToolHandler— 对OPENMETADATA_TOKEN进行脱敏,并提取OpenMetadataErrorsearch-tools元工具
面向 OM 1.x。已使用 OM 1.12+ 实体在真实 OM 后端上完成验证。
技术栈
Node.js 22+ • TypeScript strict ESM • pnpm • @modelcontextprotocol/sdk • zod • dotenv • vitest。
自动处理 JSON-Patch 更新(PATCH application/json-patch+json 内容类型)。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。