关于 mcp-server-openmetadata
mcp-server-openmetadata 是 OpenMetadata REST API 的 MCP 服务实现,使 MCP 客户端能够以标准方式访问 OpenMetadata。README 列出了大部分数据实体的操作支持情况。
主要功能
- 01封装 OpenMetadata REST API
- 02表、数据库、数据库 Schema 的增删改查
- 03仪表盘、图表、管道、主题等数据资产操作
- 04用户、团队、角色与策略管理
- 05血缘、使用情况与搜索接口
- 06数据质量测试用例与测试套件操作
适用场景
- 01让 MCP 客户端查询 OpenMetadata 中的表和数据库元数据
- 02通过 MCP 工具维护术语表、标签和分类
- 03查询数据血缘与数据质量测试结果
MCP 相关
该项目是一个 MCP 服务,将 OpenMetadata 的 REST API 以 MCP 工具的形式提供给 MCP 客户端调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-server-openmetadata
一个面向 OpenMetadata 的 Model Context Protocol (MCP) 服务实现,可与 MCP 客户端无缝集成。该项目提供了一种通过 Model Context Protocol 与 OpenMetadata 交互的标准化方式。
关于
该项目实现了一个 Model Context Protocol 服务,封装了 OpenMetadata 的 REST API,使 MCP 客户端能够以标准化的方式与 OpenMetadata 交互。
功能实现状态
核心数据实体(table、database、databaseschema)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 表 | ||
| 列出表 | /api/v1/tables | ✅ |
| 获取表 | /api/v1/tables/{id} | ✅ |
| 按名称获取表 | /api/v1/tables/name/{fqn} | ✅ |
| 创建表 | /api/v1/tables | ✅ |
| 更新表 | /api/v1/tables/{id} | ✅ |
| 删除表 | /api/v1/tables/{id} | ✅ |
| 数据库 | ||
| 列出数据库 | /api/v1/databases | ✅ |
| 获取数据库 | /api/v1/databases/{id} | ✅ |
| 按名称获取数据库 | /api/v1/databases/name/{fqn} | ✅ |
| 创建数据库 | /api/v1/databases | ✅ |
| 更新数据库 | /api/v1/databases/{id} | ✅ |
| 删除数据库 | /api/v1/databases/{id} | ✅ |
| 数据库 Schema | ||
| 列出数据库 Schema | /api/v1/databaseSchemas | ✅ |
| 获取数据库 Schema | /api/v1/databaseSchemas/{id} | ✅ |
| 按名称获取数据库 Schema | /api/v1/databaseSchemas/name/{fqn} | ✅ |
| 创建数据库 Schema | /api/v1/databaseSchemas | ✅ |
| 更新数据库 Schema | /api/v1/databaseSchemas/{id} | ✅ |
| 删除数据库 Schema | /api/v1/databaseSchemas/{id} | ✅ |
数据资产(dashboard、chart、pipeline、topic、metric、container、report、mlmodel)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 仪表板 | ||
| 列出仪表板 | /api/v1/dashboards | ✅ |
| 获取仪表板 | /api/v1/dashboards/{id} | ✅ |
| 按名称获取仪表板 | /api/v1/dashboards/name/{fqn} | ✅ |
| 创建仪表板 | /api/v1/dashboards | ✅ |
| 更新仪表板 | /api/v1/dashboards/{id} | ✅ |
| 删除仪表板 | /api/v1/dashboards/{id} | ✅ |
| 图表 | ||
| 列出图表 | /api/v1/charts | ✅ |
| 获取图表 | /api/v1/charts/{id} | ✅ |
| 按名称获取图表 | /api/v1/charts/name/{fqn} | ✅ |
| 创建图表 | /api/v1/charts | ✅ |
| 更新图表 | /api/v1/charts/{id} | ✅ |
| 删除图表 | /api/v1/charts/{id} | ✅ |
| 管道 | ||
| 列出管道 | /api/v1/pipelines | ✅ |
| 获取管道 | /api/v1/pipelines/{id} | ✅ |
| 按名称获取管道 | /api/v1/pipelines/name/{fqn} | ✅ |
| 创建管道 | /api/v1/pipelines | ✅ |
| 更新管道 | /api/v1/pipelines/{id} | ✅ |
| 删除管道 | /api/v1/pipelines/{id} | ✅ |
| 主题 | ||
| 列出主题 | /api/v1/topics | ✅ |
| 获取主题 | /api/v1/topics/{id} | ✅ |
| 按名称获取主题 | /api/v1/topics/name/{fqn} | ✅ |
| 创建主题 | /api/v1/topics | ✅ |
| 更新主题 | /api/v1/topics/{id} | ✅ |
| 删除主题 | /api/v1/topics/{id} | ✅ |
| 指标 | ||
| 列出指标 | /api/v1/metrics | ✅ |
| 获取指标 | /api/v1/metrics/{id} | ✅ |
| 按名称获取指标 | /api/v1/metrics/name/{fqn} | ✅ |
| 创建指标 | /api/v1/metrics | ✅ |
| 更新指标 | /api/v1/metrics/{id} | ✅ |
| 删除指标 | /api/v1/metrics/{id} | ✅ |
| 容器 | ||
| 列出容器 | /api/v1/containers | ✅ |
| 获取容器 | /api/v1/containers/{id} | ✅ |
| 按名称获取容器 | /api/v1/containers/name/{fqn} | ✅ |
| 创建容器 | /api/v1/containers | ✅ |
| 更新容器 | /api/v1/containers/{id} | ✅ |
| 删除容器 | /api/v1/containers/{id} | ✅ |
| 报告 | ||
| 列出报告 | /api/v1/reports | ✅ |
| 获取报告 | /api/v1/reports/{id} | ✅ |
| 按名称获取报告 | /api/v1/reports/name/{fqn} | ✅ |
| 创建报告 | /api/v1/reports | ✅ |
| 更新报告 | /api/v1/reports/{id} | ✅ |
| 删除报告 | /api/v1/reports/{id} | ✅ |
| ML 模型 | ||
| 列出 ML 模型 | /api/v1/mlmodels | ✅ |
| 获取 ML 模型 | /api/v1/mlmodels/{id} | ✅ |
| 按名称获取 ML 模型 | /api/v1/mlmodels/name/{fqn} | ✅ |
| 创建 ML 模型 | /api/v1/mlmodels | ✅ |
| 更新 ML 模型 | /api/v1/mlmodels/{id} | ✅ |
| 删除 ML 模型 | /api/v1/mlmodels/{id} | ✅ |
用户与团队(user、team)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 团队 | ||
| 列出团队 | /api/v1/teams | ✅ |
| 获取团队 | /api/v1/teams/{id} | ✅ |
| 按名称获取团队 | /api/v1/teams/name/{name} | ✅ |
| 创建团队 | /api/v1/teams | ✅ |
| 更新团队 | /api/v1/teams/{id} | ✅ |
| 删除团队 | /api/v1/teams/{id} | ✅ |
| 用户 | ||
| 列出用户 | /api/v1/users | ✅ |
| 获取用户 | /api/v1/users/{id} | ✅ |
| 按名称获取用户 | /api/v1/users/name/{name} | ✅ |
| 创建用户 | /api/v1/users | ✅ |
| 更新用户 | /api/v1/users/{id} | ✅ |
| 删除用户 | /api/v1/users/{id} | ✅ |
治理与分类(classification、glossary、tag)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 分类 | ||
| 列出分类 | /api/v1/classifications | ✅ |
| 获取分类 | /api/v1/classifications/{id} | ✅ |
| 按名称获取分类 | /api/v1/classifications/name/{name} | ✅ |
| 创建分类 | /api/v1/classifications | ✅ |
| 更新分类 | /api/v1/classifications/{id} | ✅ |
| 删除分类 | /api/v1/classifications/{id} | ✅ |
| 词汇表 | ||
| 列出词汇表 | /api/v1/glossaries | ✅ |
| 获取词汇表 | /api/v1/glossaries/{id} | ✅ |
| 按名称获取词汇表 | /api/v1/glossaries/name/{name} | ✅ |
| 创建词汇表 | /api/v1/glossaries | ✅ |
| 更新词汇表 | /api/v1/glossaries/{id} | ✅ |
| 删除词汇表 | /api/v1/glossaries/{id} | ✅ |
| 列出词汇表术语 | /api/v1/glossaryTerms | ✅ |
| 获取词汇表术语 | /api/v1/glossaryTerms/{id} | ✅ |
| 标签 | ||
| 列出标签 | /api/v1/tags | ✅ |
| 获取标签 | /api/v1/tags/{id} | ✅ |
| 按名称获取标签 | /api/v1/tags/name/{name} | ✅ |
| 创建标签 | /api/v1/tags | ✅ |
| 更新标签 | /api/v1/tags/{id} | ✅ |
| 删除标签 | /api/v1/tags/{id} | ✅ |
系统与运维(bot、services、event)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 机器人 | ||
| 列出机器人 | /api/v1/bots | ✅ |
| 获取机器人 | /api/v1/bots/{id} | ✅ |
| 按名称获取机器人 | /api/v1/bots/name/{name} | ✅ |
| 创建机器人 | /api/v1/bots | ✅ |
| 更新机器人 | /api/v1/bots/{id} | ✅ |
| 删除机器人 | /api/v1/bots/{id} | ✅ |
| 服务 | ||
| 列出服务 | /api/v1/services | ✅ |
| 数据库服务 | /api/v1/services/databaseServices | ✅ |
| 仪表板服务 | /api/v1/services/dashboardServices | ✅ |
| 消息服务 | /api/v1/services/messagingServices | ✅ |
| 测试连接 | /api/v1/services/testConnection | ✅ |
| 事件 | ||
| 列出事件 | /api/v1/events | ✅ |
| 列出事件订阅 | /api/v1/events/subscriptions | ✅ |
| 获取事件订阅 | /api/v1/events/subscriptions/{id} | ✅ |
| 创建事件订阅 | /api/v1/events/subscriptions | ✅ |
| 更新事件订阅 | /api/v1/events/subscriptions/{id} | ✅ |
| 删除事件订阅 | /api/v1/events/subscriptions/{id} | ✅ |
| 测试目标 | /api/v1/events/subscriptions/testDestination | ✅ |
分析与监控(lineage、usage、search)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 血缘 | ||
| 按实体 ID 获取血缘 | /api/v1/lineage/{entity}/{id} | ✅ |
| 按实体名称获取血缘 | /api/v1/lineage/{entity}/name/{fqn} | ✅ |
| 添加/更新血缘 | /api/v1/lineage | ✅ |
| 删除血缘 | /api/v1/lineage | ✅ |
| 用量 | ||
| 获取实体用量 | /api/v1/usage/{entity}/{id} | ✅ |
| 添加用量数据 | /api/v1/usage | ✅ |
| 获取用量摘要 | /api/v1/usage/summary | ✅ |
| 搜索与发现 | ||
| 搜索查询 | /api/v1/search/query | ✅ |
| 搜索建议 | /api/v1/search/suggest | ✅ |
| 搜索聚合 | /api/v1/search/aggregate | ✅ |
| 搜索字段查询 | /api/v1/search/fieldQuery | ✅ |
数据质量(test_case、test_suite)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 测试用例 | ||
| 列出测试用例 | /api/v1/dataQuality/testCases | ✅ |
| 获取测试用例 | /api/v1/dataQuality/testCases/{id} | ✅ |
| 按名称获取测试用例 | /api/v1/dataQuality/testCases/name/{fqn} | ✅ |
| 创建测试用例 | /api/v1/dataQuality/testCases | ✅ |
| 更新测试用例 | /api/v1/dataQuality/testCases/{id} | ✅ |
| 删除测试用例 | /api/v1/dataQuality/testCases/{id} | ✅ |
| 列出测试用例结果 | /api/v1/dataQuality/testCases/{fqn}/testCaseResult | ✅ |
| 获取测试用例结果 | /api/v1/dataQuality/testCases/testCaseResults/{fqn} | ✅ |
| 测试套件 | ||
| 列出测试套件 | /api/v1/dataQuality/testSuites | ✅ |
| 获取测试套件 | /api/v1/dataQuality/testSuites/{id} | ✅ |
| 按名称获取测试套件 | /api/v1/dataQuality/testSuites/name/{name} | ✅ |
| 创建基础测试套件 | /api/v1/dataQuality/testSuites/basic | ✅ |
| 创建可执行测试套件 | /api/v1/dataQuality/testSuites/executable | ✅ |
| 更新测试套件 | /api/v1/dataQuality/testSuites/{id} | ✅ |
| 删除测试套件 | /api/v1/dataQuality/testSuites/{id} | ✅ |
| 获取执行摘要 | /api/v1/dataQuality/testSuites/executionSummary | ✅ |
| 获取数据质量报告 | /api/v1/dataQuality/testSuites/dataQualityReport | ✅ |
访问控制与安全(policy、role)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 策略 | ||
| 列出策略 | /api/v1/policies | ✅ |
| 获取策略 | /api/v1/policies/{id} | ✅ |
| 按名称获取策略 | /api/v1/policies/name/{name} | ✅ |
| 创建策略 | /api/v1/policies | ✅ |
| 更新策略 | /api/v1/policies/{id} | ✅ |
| 删除策略 | /api/v1/policies/{id} | ✅ |
| 验证策略 | /api/v1/policies/validation/condition | ✅ |
| 列出策略资源 | /api/v1/policies/resources | ✅ |
| 角色 | ||
| 列出角色 | /api/v1/roles | ✅ |
| 获取角色 | /api/v1/roles/{id} | ✅ |
| 按名称获取角色 | /api/v1/roles/name/{name} | ✅ |
| 创建角色 | /api/v1/roles | ✅ |
| 更新角色 | /api/v1/roles/{id} | ✅ |
| 删除角色 | /api/v1/roles/{id} | ✅ |
域管理(domain)
| 功能 | API 路径 | 状态 |
|---|---|---|
| 域 | ||
| 列出域 | /api/v1/domains | ✅ |
| 获取域 | /api/v1/domains/{id} | ✅ |
| 按名称获取域 | /api/v1/domains/name/{name} | ✅ |
| 创建域 | /api/v1/domains | ✅ |
| 更新域 | /api/v1/domains/{id} | ✅ |
| 删除域 | /api/v1/domains/{id} | ✅ |
| 数据产品 | ||
| 列出数据产品 | /api/v1/dataProducts | ✅ |
| 获取数据产品 | /api/v1/dataProducts/{id} | ✅ |
| 按名称获取数据产品 | /api/v1/dataProducts/name/{fqn} | ✅ |
| 创建数据产品 | /api/v1/dataProducts | ✅ |
| 更新数据产品 | /api/v1/dataProducts/{id} | ✅ |
| 删除数据产品 | /api/v1/dataProducts/{id} | ✅ |
尚未实现
| 功能 | API 路径 | 状态 |
|---|---|---|
| API 管理 | ||
| API 集合 | /api/v1/apiCollections | ❌ |
| API 端点 | /api/v1/apiEndpoints | ❌ |
| 其他资产 | ||
| 应用 | /api/v1/apps | ❌ |
| 动态与活动 | ||
| 动态 | /api/v1/feed | ❌ |
| 高级功能 | ||
| 用户画像 | /api/v1/personas | ❌ |
| 查询 | /api/v1/queries | ❌ |
| 搜索索引 | /api/v1/searchIndexes | ❌ |
| 存储过程 | /api/v1/storedProcedures | ❌ |
| 建议 | /api/v1/suggestions | ❌ |
| Webhook | /api/v1/webhooks | ❌ |
API 分组
该服务支持通过命令行参数进行模块化 API 分组选择。可用的 API 分组:
核心数据实体
table- 表实体管理database- 数据库实体管理databaseschema- 数据库 schema 管理
数据资产
dashboard- 仪表盘实体管理chart- 图表实体管理pipeline- 流水线实体管理topic- 主题实体管理metrics- 指标实体管理container- 容器实体管理report- 报告实体管理mlmodel- 机器学习模型实体管理
用户与团队
user- 用户实体管理team- 团队实体管理
治理与分类
classification- 分类实体管理glossary- 词汇表与词汇表术语管理tag- 标签与标签类别管理
系统与运维
bot- 机器人实体管理services- 服务配置与连接测试event- 事件订阅与通知
分析与监控
lineage- 数据血缘管理usage- 使用情况分析管理search- 搜索与发现操作
数据质量
test_case- 数据质量测试用例管理test_suite- 数据质量测试套件管理
访问控制与安全
policy- 访问策略与安全管理role- 基于角色的访问控制管理
域管理
domain- 域与数据产品管理
你可以在运行服务时指定要启用哪些 API 组:
# Enable only core entities
python -m src.main --apis table,database,databaseschema
# Enable comprehensive data quality and governance
python -m src.main --apis test_case,test_suite,policy,role,tag,domain
# Enable all available APIs
python -m src.main --apis table,database,databaseschema,dashboard,chart,pipeline,topic,metrics,container,report,mlmodel,user,team,classification,glossary,tag,bot,services,event,lineage,usage,search,test_case,test_suite,policy,role,domain
# Use default selection (all implemented APIs)
python -m src.main
设置
通过 Smithery 安装
通过 Smithery 自动为 Claude Desktop 安装 OpenMetadata MCP 服务:
npx -y @smithery/cli install @yangkyeongmo/mcp-server-openmetadata --client claude
环境变量
设置以下身份验证方法之一:
Token 身份验证(推荐)
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_JWT_TOKEN=<your-jwt-token>
基本身份验证
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_USERNAME=<your-username>
OPENMETADATA_PASSWORD=<your-password>
在 Claude Desktop 中使用
使用以下身份验证方法之一,添加到你的 claude_desktop_config.json 中:
Token 身份验证(推荐)
{
"mcpServers": {
"mcp-server-openmetadata": {
"command": "uvx",
"args": ["mcp-server-openmetadata"],
"env": {
"OPENMETADATA_HOST": "https://your-openmetadata-host",
"OPENMETADATA_JWT_TOKEN": "your-jwt-token"
}
}
}
}
基本身份验证
{
"mcpServers": {
"mcp-server-openmetadata": {
"command": "uvx",
"args": ["mcp-server-openmetadata"],
"env": {
"OPENMETADATA_HOST": "https://your-openmetadata-host",
"OPENMETADATA_USERNAME": "your-username",
"OPENMETADATA_PASSWORD": "your-password"
}
}
}
}
使用 uv 的替代配置:
Token 身份验证(推荐)
{
"mcpServers": {
"mcp-server-openmetadata": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-server-openmetadata",
"run",
"mcp-server-openmetadata"
],
"env": {
"OPENMETADATA_HOST": "https://your-openmetadata-host",
"OPENMETADATA_JWT_TOKEN": "your-jwt-token"
}
}
}
}
基本身份验证
{
"mcpServers": {
"mcp-server-openmetadata": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-server-openmetadata",
"run",
"mcp-server-openmetadata"
],
"env": {
"OPENMETADATA_HOST": "https://your-openmetadata-host",
"OPENMETADATA_USERNAME": "your-username",
"OPENMETADATA_PASSWORD": "your-password"
}
}
}
}
将 /path/to/mcp-server-openmetadata 替换为你克隆仓库的实际路径。
手动执行
你也可以手动运行该服务:
python src/server.py
选项:
--port:用于 SSE 的监听端口(默认:8000)--transport:传输类型(stdio/sse,默认:stdio)
贡献
欢迎贡献!请随时提交 Pull Request。
许可证
MIT License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
