mcp-server-openmetadata について
mcp-server-openmetadata は、OpenMetadata の REST API をラップした MCP サーバーで、MCP クライアントから標準的な方法で OpenMetadata を操作できます。README にはエンティティごとに実装済みのエンドポイントを示す一覧があります。
主な機能
- 01OpenMetadata REST API のラップ
- 02テーブルとスキーマの作成、参照、更新、削除
- 03ダッシュボード、チャート、パイプライン、トピックの操作
- 04ユーザー、チーム、ロール、ポリシーの管理
- 05リネージ、利用状況、検索のエンドポイント
- 06データ品質のテストケースとテストスイートの操作
活用シーン
- 01MCP クライアントから OpenMetadata のテーブルやデータベースのメタデータを照会する
- 02MCP ツールでグロッサリー、タグ、分類を管理する
- 03データリネージとデータ品質テスト結果を取得する
MCP 対応
本プロジェクトは MCP サーバーであり、OpenMetadata の REST API 操作を MCP クライアントに ツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-server-openmetadata
OpenMetadata と MCP クライアントをシームレスに統合できる、Model Context Protocol(MCP)サーバーの実装です。このプロジェクトは、Model Context Protocol を通じて OpenMetadata を操作する標準的な方法を提供します。
概要
このプロジェクトは、OpenMetadata の REST API をラップする Model Context Protocol サーバーを実装し、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 | ✅ |
| ボットの取得 | /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- データベーススキーマの管理
データアセット
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 経由でのインストール
Smithery 経由で、Claude Desktop 用の OpenMetadata MCP Server を自動的にインストールするには、次の手順を実行してください。
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 ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
