mcpField
M
mcp-datahub

mcp-datahub

ローカル
github.com/txn2データベース38 週間前に更新

mcp-datahub について

mcp-datahubは、AIアシスタントとDataHubメタデータカタログをつなぐMCPサーバー兼Goライブラリです。データ資産の検索、スキーマ確認、リネージ追跡を支援し、複数接続や任意のカタログ編集にも対応します。

主な機能

  1. 01データセット、ダッシュボード、パイプラインの検索
  2. 02エンティティのメタデータとスキーマの確認
  3. 03上流・下流リネージの追跡
  4. 04用語集、タグ、データプロダクトの参照
  5. 05任意でエンティティを作成・更新・削除

活用シーン

  1. 01カタログからデータセットやダッシュボードを検索
  2. 02フィールド構造や資産のリネージを把握
  3. 03用語の定義やデータプロダクトを確認
  4. 04カスタムMCPサーバーにカタログツールを統合

MCP 対応

mcp-datahubは、検索、メタデータ、スキーマ、リネージ、用語集のツールをMCPクライアントに提供します。書き込みツールは既定で無効で、Goライブラリとして独自のMCPサーバーに組み込むこともできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbmcp-datahub_1.15.1_darwin_arm64.mcpb
mcpbmcp-datahub_1.15.1_darwin_amd64.mcpb
mcpbmcp-datahub_1.15.1_windows_amd64.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

txn2/mcp-datahub

GitHub license Go Reference Go Report Card codecov OpenSSF Scorecard SLSA 3

AI アシスタントを DataHub のメタデータカタログに接続する MCP サーバー兼コンポーザブル Go ライブラリです。データセットを検索し、スキーマを探索し、リネージを追跡して、用語集の用語やドメインにアクセスできます。

mcp-datahub.txn2.com | インストール | ライブラリのドキュメント

MCP データプラットフォームのエコシステム

mcp-datahub は、コンポーザブルなデータプラットフォームとして連携するよう設計された、オープンソースの MCP サーバー群の一部です。各コンポーネントは単独で実行することも、組み合わせて AI アシスタントからストレージ、クエリエンジン、メタデータカタログに統合的にアクセスすることもできます。

2 つの使い方

1. スタンドアロン MCP サーバー

Claude Desktop、Cursor、または任意の MCP クライアントにインストールして接続します。

Claude Desktop(最も簡単) — リリースから .mcpb バンドルをダウンロードし、ダブルクリックしてインストールします。

  • macOS Apple Silicon:mcp-datahub_X.X.X_darwin_arm64.mcpb
  • macOS Intel:mcp-datahub_X.X.X_darwin_amd64.mcpb
  • Windows:mcp-datahub_X.X.X_windows_amd64.mcpb

その他のインストール方法:

# Homebrew (macOS)
brew install txn2/tap/mcp-datahub

# Go install
go install github.com/txn2/mcp-datahub/cmd/mcp-datahub@latest

Claude Desktop の手動設定(MCPB を使用しない場合):

{
  "mcpServers": {
    "datahub": {
      "command": "/opt/homebrew/bin/mcp-datahub",
      "env": {
        "DATAHUB_URL": "https://datahub.example.com",
        "DATAHUB_TOKEN": "your_token"
      }
    }
  }
}
複数サーバーの設定

複数の DataHub インスタンスに同時に接続します。

# Primary server
export DATAHUB_URL=https://prod.datahub.example.com/api/graphql
export DATAHUB_TOKEN=prod-token
export DATAHUB_CONNECTION_NAME=prod

# Additional servers (JSON)
export DATAHUB_ADDITIONAL_SERVERS='{"staging":{"url":"https://staging.datahub.example.com/api/graphql","token":"staging-token"}}'

datahub_list_connections を使用して利用可能な接続を確認し、任意のツールに connection パラメーターを渡します。

2. コンポーザブルな Go ライブラリ

カスタム認証、テナント分離、監査ログに対応する独自の MCP サーバーにインポートします。

import (
    "github.com/txn2/mcp-datahub/pkg/client"
    "github.com/txn2/mcp-datahub/pkg/tools"
)

// Create client and register tools with your MCP server
datahubClient, _ := client.NewFromEnv()
defer datahubClient.Close()

toolkit := tools.NewToolkit(datahubClient, tools.Config{})
toolkit.RegisterAll(yourMCPServer)
ツールの説明のカスタマイズ

デプロイ環境に合わせてツールの説明を上書きします。

toolkit := tools.NewToolkit(datahubClient, tools.Config{},
    tools.WithDescriptions(map[tools.ToolName]string{
        tools.ToolSearch: "Search our internal data catalog for datasets and dashboards",
    }),
)
ツールのアノテーションのカスタマイズ

MCP ツールのアノテーション(AI クライアント向けの動作ヒント)を上書きします。

toolkit := tools.NewToolkit(datahubClient, tools.Config{},
    tools.WithAnnotations(map[tools.ToolName]*mcp.ToolAnnotations{
        tools.ToolSearch: {ReadOnlyHint: true, OpenWorldHint: boolPtr(true)},
    }),
)

12 個すべてのツールにはデフォルトのアノテーションが設定されています。読み取りツールは ReadOnlyHint: true としてマークされ、datahub_create は非破壊的かつ非冪等、datahub_update は非破壊的かつ冪等、datahub_delete は破壊的かつ冪等です。

拡張機能(ログ、メトリクス、エラーヒント)

extensions パッケージを使用して、任意のミドルウェアを有効にします。

import "github.com/txn2/mcp-datahub/pkg/extensions"

// Load from environment variables (MCP_DATAHUB_EXT_*)
cfg := extensions.FromEnv()
opts := extensions.BuildToolkitOptions(cfg)
toolkit := tools.NewToolkit(datahubClient, toolsCfg, opts...)

// Or load from a YAML/JSON config file
serverCfg, _ := extensions.LoadConfig("config.yaml")

ミドルウェア、選択的なツール登録、エンタープライズ向けのパターンについては、ライブラリのドキュメントをご覧ください。

mcp-trino との連携

DataHub のメタデータと Trino のクエリ実行を組み合わせて、統合データプラットフォームの MCP サーバーを構築します。

import (
    datahubClient "github.com/txn2/mcp-datahub/pkg/client"
    datahubTools "github.com/txn2/mcp-datahub/pkg/tools"
    trinoClient "github.com/txn2/mcp-trino/pkg/client"
    trinoTools "github.com/txn2/mcp-trino/pkg/tools"
)

// Add DataHub tools (search, lineage, schema, glossary)
dh, _ := datahubClient.NewFromEnv()
datahubTools.NewToolkit(dh, datahubTools.Config{}).RegisterAll(server)

// Add Trino tools (query execution, catalog browsing)
tr, _ := trinoClient.NewFromEnv()
trinoTools.NewToolkit(tr, trinoTools.Config{}).RegisterAll(server)

// AI assistants can now:
// - Search DataHub for tables -> Get schema -> Query via Trino
// - Explore lineage -> Understand data flow -> Run validation queries

関連ライブラリについては、txn2/mcp-trinoをご覧ください。

QueryProvider との双方向連携

このライブラリは、双方向のコンテキスト注入に対応しています。mcp-trino が DataHub からセマンティックコンテキストを取得できる一方で、mcp-datahub はクエリエンジンからクエリ実行コンテキストを受け取ることができます。

import (
    datahubTools "github.com/txn2/mcp-datahub/pkg/tools"
    "github.com/txn2/mcp-datahub/pkg/integration"
)

// QueryProvider enables query engines to inject context into DataHub tools
type myQueryProvider struct {
    trinoClient *trino.Client
}

func (p *myQueryProvider) Name() string { return "trino" }

func (p *myQueryProvider) ResolveTable(ctx context.Context, urn string) (*integration.TableIdentifier, error) {
    // Map DataHub URN to Trino table (catalog.schema.table)
    return &integration.TableIdentifier{
        Catalog: "hive", Schema: "production", Table: "users",
    }, nil
}

func (p *myQueryProvider) GetTableAvailability(ctx context.Context, urn string) (*integration.TableAvailability, error) {
    // Check if table is queryable
    return &integration.TableAvailability{Available: true}, nil
}

func (p *myQueryProvider) GetQueryExamples(ctx context.Context, urn string) ([]integration.QueryExample, error) {
    // Return sample queries for this entity
    return []integration.QueryExample{
        {Name: "sample", SQL: "SELECT * FROM hive.production.users LIMIT 10"},
    }, nil
}

// Wire it up
toolkit := datahubTools.NewToolkit(datahubClient, config,
    datahubTools.WithQueryProvider(&myQueryProvider{trinoClient: trino}),
)

QueryProvider を設定すると、ツールの応答が拡充されます。

  • 検索結果:テーブルの利用可否を含む query_context を追加します
  • エンティティの詳細:query_table、query_examples、query_availability を追加します
  • スキーマ:すぐに SQL で使用できる query_table を追加します
  • リネージュ:URN からテーブルへのマッピングを示す execution_context を追加します
連携ミドルウェア

アクセス制御や監査ログなどのエンタープライズ機能は、ミドルウェアアダプターを通じて有効にできます。

import (
    datahubTools "github.com/txn2/mcp-datahub/pkg/tools"
    "github.com/txn2/mcp-datahub/pkg/integration"
)

// Access control - filter entities by user permissions
type myAccessFilter struct{}
func (f *myAccessFilter) CanAccess(ctx context.Context, urn string) (bool, error) { /* ... */ }
func (f *myAccessFilter) FilterURNs(ctx context.Context, urns []string) ([]string, error) { /* ... */ }

// Audit logging - track all tool invocations
type myAuditLogger struct{}
func (l *myAuditLogger) LogToolCall(ctx context.Context, tool string, params map[string]any, userID string) error { /* ... */ }

// Wire up with multiple integration options
toolkit := datahubTools.NewToolkit(datahubClient, config,
    datahubTools.WithAccessFilter(&myAccessFilter{}),
    datahubTools.WithAuditLogger(&myAuditLogger{}, func(ctx context.Context) string {
        return ctx.Value("user_id").(string)
    }),
    datahubTools.WithURNResolver(&myURNResolver{}),      // Map external IDs to URNs
    datahubTools.WithMetadataEnricher(&myEnricher{}),    // Add custom metadata
)

連携パターンの詳細については、ライブラリのドキュメントをご覧ください。

利用可能なツール

読み取りツール(常に利用可能)
ツール説明
datahub_searchクエリとエンティティタイプを指定して、データセット、ダッシュボード、パイプラインを検索します
datahub_get_entityURN でエンティティのメタデータ(説明、所有者、タグ、ドメイン)を取得します
datahub_get_schemaフィールドの型と説明を含むデータセットのスキーマを取得します
datahub_get_lineage上流/下流のリネージュを取得します(列レベルの場合は level=column をサポートします)
datahub_get_queriesデータセットに関連付けられた SQL クエリを取得します
datahub_browseカタログを参照します。タグ、ドメイン、データプロダクトを一覧表示します
datahub_get_glossary_term用語集の用語の定義とプロパティを取得します
datahub_get_data_productデータプロダクトの詳細(所有者、ドメイン、プロパティ)を取得します
datahub_list_connections設定済みの DataHub サーバー接続を一覧表示します(マルチサーバーモード)
書き込みツール(DATAHUB_WRITE_ENABLED=true が必要)

what 判別パターンを使用する 3 つの CRUD ツール — 合計 37 個の操作:

ツール操作数説明
datahub_create10タグ、ドメイン、用語集の用語、データプロダクト、ドキュメント、アプリケーション、クエリ、インシデント、構造化プロパティ、データコントラクトを作成します
datahub_update19説明(タグ/glossaryTerm の説明を含む)、タグ、用語集の用語、リンク、所有者、ドメイン、構造化プロパティ、カスタムプロパティ、インシデント、クエリ、ドキュメント、データコントラクトを更新します
datahub_delete8クエリ、タグ、ドメイン、用語集エンティティ、データプロダクト、アプリケーション、ドキュメント、構造化プロパティを削除します

安全のため、書き込みツールはデフォルトで無効になっています。

DataHub のバージョン互換性

最小要件:DataHub 1.3.x。すべての機能を利用するには DataHub 1.4.x が必要です。

DataHub バージョン機能
1.3.x+(最小要件)すべての読み取りツール、およびドキュメント以外のすべての書き込み操作(タグ、ドメイン、用語集、データプロダクト、クエリ、所有者、リンク、説明、インシデント、アプリケーション、削除を含む構造化プロパティ、データコントラクト)
1.4.x+(すべての機能)+ドキュメント(作成/更新/削除)

クライアントはバージョンの違いを適切に処理します。古いバージョンで機能を利用できない場合、読み取りクエリはエラーではなく空の結果を返します。

詳細については、ツールのリファレンスをご覧ください。

設定

変数説明デフォルト
DATAHUB_URLDataHub GraphQL API の URL(必須)
DATAHUB_TOKENAPI トークン(必須)
DATAHUB_TIMEOUTリクエストのタイムアウト(秒)30
DATAHUB_DEFAULT_LIMIT検索結果のデフォルト上限10
DATAHUB_MAX_LIMIT上限の最大値100
DATAHUB_CONNECTION_NAMEプライマリ接続の表示名datahub
DATAHUB_ADDITIONAL_SERVERS追加サーバーの JSON マップ(任意)
DATAHUB_WRITE_ENABLED書き込み操作を有効にします(true または 1)false
DATAHUB_DEBUGデバッグログを有効にします(1 または true)false
拡張機能
変数説明デフォルト
MCP_DATAHUB_EXT_LOGGINGツール呼び出しの構造化ログを有効にしますfalse
MCP_DATAHUB_EXT_METRICSメトリクスの収集を有効にしますfalse
MCP_DATAHUB_EXT_METADATA結果へのメタデータ拡充を有効にしますfalse
MCP_DATAHUB_EXT_ERRORSエラーヒントの拡充を有効にしますtrue
設定ファイル

環境変数の代わりに、YAML または JSON で設定できます。

datahub:
  url: https://datahub.example.com
  token: "${DATAHUB_TOKEN}"
  timeout: "30s"
  write_enabled: true

toolkit:
  default_limit: 20
  descriptions:
    datahub_search: "Custom search description for your deployment"

extensions:
  logging: true
  errors: true

extensions.LoadConfig("config.yaml") で読み込みます。機密性の高いフィールドについては、環境変数の値がファイルの値より優先されます。トークン値では $VAR / ${VAR} の展開がサポートされています。

すべてのオプションについては、設定リファレンスを参照してください。

開発

make build     # Build binary
make test      # Run tests with race detection
make lint      # Run golangci-lint
make security  # Run gosec and govulncheck
make coverage  # Generate coverage report
make verify    # Run tidy, lint, and test
make help      # Show all targets

関連プロジェクト

  • txn2/mcp-trino(ドキュメント) - Trino クエリ実行のためのコンポーザブルな MCP ツールキット
  • DataHub - オープンソースのメタデータプラットフォーム

貢献

ガイドラインについては、CONTRIBUTING.mdを参照してください。

ライセンス

Apache License 2.0


Craig Johnstonによるオープンソースプロジェクトで、Deasil Works, Inc.がスポンサーです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。