OpenMetadata MCP服务器

一个为OpenMetadata实现的Model Context Protocol (MCP)服务器,提供标准化的数据实体管理、治理分类和访问控制功能,适用于数据管理和元数据集成场景。

  • by yangkyeongmo
  • Python
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 yangkyeongmo/mcp-server-openmetadata

使用说明

mcp服务器openmetadata

OpenMetadata的模型上下文协议(MCP)服务器实现,实现了与MCP客户端的无缝集成。该项目提供了一种通过模型上下文协议与OpenMetadata交互的标准化方法。

关于

该项目实现了 模型上下文协议 包装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} ✅
数据库架构
列出数据库架构 /api/v1/databaseSchemas ✅
获取数据库架构 /api/v1/databaseSchemas/{id} ✅
按名称获取数据库架构 /api/v1/databaseSchemas/name/{fqn} ✅
创建数据库架构 /api/v1/databaseSchemas ✅
更新数据库架构 /api/v1/databaseSchemas/{id} ✅
删除数据库架构 /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 ✅
获取Bot /api/v1/bots/{id} ✅
按名称获取Bot /api/v1/bots/name/{name} ✅
创建机器人 /api/v1/bots ✅
更新Bot /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 ❌
Webhooks /api/v1/webhooks ❌

API组

服务器支持通过命令行参数进行模块化API组选择。可用的API组:

核心数据实体

  • table -表实体管理
  • database -数据库实体管理
  • databaseschema -数据库模式管理

数据资产

  • dashboard -仪表板实体管理
  • chart -图表实体管理
  • pipeline -管道实体管理
  • topic -主题实体管理
  • metrics -度量实体管理
  • container -容器实体管理
  • report -报表实体管理
  • mlmodel -ML模型实体管理

用户和团队

  • 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安装

通过以下方式自动安装克劳德桌面版OpenMetadata MCP服务器 史密瑟里:

npx -y @smithery/cli install @yangkyeongmo/mcp-server-openmetadata --client claude

环境变量

设置以下身份验证方法之一:

令牌身份验证(推荐)

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 使用以下身份验证方法之一:

令牌身份验证(推荐)

{
  "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:

令牌身份验证(推荐)

{
  "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)

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证