mcpField
D
Data Product Mcp

Data Product Mcp

ローカル
github.com/entropy-dataデータ・分析4653 週間前に更新

Data Product Mcp について

Data Product MCPは、Data Mesh Managerを使うチーム向けのMCPサーバーです。ガバナンス対象のデータプロダクトを検索し、アクセスを申請して、対応プラットフォームでSQLを実行できます。

主な機能

  1. 01有効なデータプロダクトの検索
  2. 02出力ポート、アクセス状況、データ契約の確認
  3. 03出力ポートへのアクセス申請
  4. 04アクセス可能なデータプロダクトへのSQL実行
  5. 05Snowflake、Databricks、BigQueryに対応

活用シーン

  1. 01ビジネス上の問いに関係するデータプロダクトの特定
  2. 02クエリ実行前の管理されたアクセス申請
  3. 03データ契約の意味に沿ったアクセス可能データの検索

MCP 対応

MCPクライアントに、データプロダクトの検索・詳細確認、出力ポートへのアクセス申請、SQL実行のツールを提供します。クエリは基盤となるデータプラットフォームで実行されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dataproduct": {
"command": "uvx",
"args": [
"dataproduct_mcp"
],
"env": {
"DATAMESH_MANAGER_API_KEY": "<DATAMESH_MANAGER_API_KEY>",
"DATAMESH_MANAGER_HOST": "<DATAMESH_MANAGER_HOST>",
"SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
"SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
"SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
"SNOWFLAKE_WAREHOUSE": "<SNOWFLAKE_WAREHOUSE>",
"DATABRICKS_HOST": "<DATABRICKS_HOST>",
"DATABRICKS_HTTP_PATH": "<DATABRICKS_HTTP_PATH>",
"DATABRICKS_CLIENT_ID": "<DATABRICKS_CLIENT_ID>",
"DATABRICKS_CLIENT_SECRET": "<DATABRICKS_CLIENT_SECRET>",
"BIGQUERY_CREDENTIALS_PATH": "<BIGQUERY_CREDENTIALS_PATH>"
}
}
}
}
起動コマンドuvx dataproduct_mcp
設定が必要な環境変数
DATAMESH_MANAGER_API_KEYシークレット
DATAMESH_MANAGER_HOST
SNOWFLAKE_USER
SNOWFLAKE_PASSWORDシークレット
SNOWFLAKE_ROLE
SNOWFLAKE_WAREHOUSE
DATABRICKS_HOST
DATABRICKS_HTTP_PATH
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRETシークレット
BIGQUERY_CREDENTIALS_PATHシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidataproduct_mcp

ツール

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

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

詳細

Data Product MCP

Data Mesh Managerでデータプロダクトを検索してアクセスをリクエストし、データプラットフォーム上でクエリを実行してビジネスデータにアクセスするための、Model Context Protocol(MCP)サーバーです。

Data Product MCP

コンセプト

アイデア:データガバナンスポリシーを適用しながら、AI エージェントがセマンティックなビジネスコンテキストに基づいてあらゆるデータプロダクトを検索し、アクセスできるようにします。

または、こちらがお好みなら:

AI があらゆるビジネス上の質問に答えられるようにします。

データプロダクトは、データコントラクトで定義された、組織内の他のチームと共有される、管理された高品質のビジネスデータセットです。 データコントラクトは、構造、セマンティクス、品質、利用規約を記述します。データプロダクトは、どのようなデータが存在するかだけでなく、その意味や正しい使い方を AI が理解するために必要なセマンティックなコンテキストを提供します。 利用可能なデータプロダクトを検索し、そのメタデータを分析してタスクに関連するかどうかを評価するために、データプロダクトマーケットプレイスとしてData Mesh Managerを使用します。

データプロダクトが特定されたら、データガバナンスが重要な役割を果たします。データプロダクトへのアクセスを制御し、クエリがデータコントラクトの利用規約に準拠していることを確認し、組織全体のポリシーへの準拠を確保します。必要に応じて、AI エージェントはデータプロダクトの出力ポートへのアクセスをリクエストできます。その際、データプロダクトのオーナーによる手動承認が必要となる場合があります。

最後に、LLM はデータコントラクトのデータモデルの説明とセマンティクスに基づいて SQL クエリを生成できます。セキュリティガードレールを設けたうえで SQL クエリを実行し、機密データの不正使用を防止するとともに、プロンプトインジェクションなどの攻撃経路を緩和します。結果は AI エージェントに返され、元のビジネス上の質問への回答に利用されます。

README の画像

手順:

  1. 検索: データプロダクトマーケットプレイスで、タスクに関連するデータプロダクトを検索します
  2. ガバナンス: データプロダクトへのアクセスを確認し、リクエストします
  3. クエリ: プラットフォーム固有の MCP サーバーを使用して SQL ステートメントを実行します。

Data Mesh Managerは、データプロダクトの一元的なマーケットプレイスおよびガバナンスレイヤーとして機能し、組織内のすべてのデータプロダクトのメタデータ、アクセス制御、データコントラクトを提供します。

データプラットフォーム(Snowflake、Databricks など)は実際のデータをホストし、クエリを実行します。MCP サーバーはこれらのプラットフォームに接続し、アクセス権のあるデータプロダクトに対する SQL クエリを実行します。

ツール

  1. dataproduct_search

    • 検索語に基づいてデータプロダクトを検索します。包括的な結果を得るために、複数の検索方法(リスト検索、セマンティック検索)を使用します。有効なデータプロダクトのみを返します。
    • 任意の入力:
      • search_term(文字列):データプロダクトを絞り込む検索語です。ID、タイトル、説明を対象に検索します。複数の検索語をスペースで区切って指定できます。
    • 戻り値:データプロダクトの ID、名前、説明、オーナー情報、結果の取得元を含む構造化リストです。
  2. dataproduct_get

    • ID を指定してデータプロダクトを取得します。データプロダクトには、すべての出力ポートとサーバー情報が含まれます。レスポンスには各出力ポートのアクセス状況が含まれ、データコントラクトはインラインで展開されます。
    • 必須の入力:
      • data_product_id(文字列):データプロダクトの ID です。
    • 戻り値:アクセス状況とインラインで展開されたデータコントラクトを含む、拡張された出力ポートを備えたデータプロダクトの詳細です。
  3. dataproduct_request_access

    • データプロダクトの特定の出力ポートへのアクセスをリクエストします。これによりアクセスリクエストが作成されます。データプロダクトの設定、目的、データガバナンスルールに応じて、アクセスは自動的に許可されるか、データプロダクトのオーナーによる審査を受けます。
    • 必須の入力:
      • data_product_id(文字列):データプロダクトの ID です。
      • output_port_id(文字列):出力ポートの ID です。
      • purpose(文字列):ユーザーがデータを使って何を行うのか、またアクセスが必要な理由を具体的に指定します。アクセスリクエストがデータオーナーの承認を必要とする場合、データオーナーはこの目的をもとに、ビジネス、技術、ガバナンスの観点からアクセスが適格かどうかを判断します。
    • 戻り値:access_id、ステータス、承認情報を含むアクセスリクエストの詳細です。
  4. dataproduct_query

    • データプロダクトの出力ポートに対して SQL クエリを実行します。このツールは基盤となるデータプラットフォームに接続し、指定された SQL クエリを実行します。クエリを実行するには、出力ポートへの有効なアクセス権が必要です。
    • 必須の入力:
      • data_product_id(文字列):データプロダクトの ID です。
      • output_port_id(文字列):出力ポートの ID です。
      • query(文字列):実行する SQL クエリです。
    • 戻り値:構造化データ形式のクエリ結果です(最大 100 行)。

インストール

uv をインストールしておく必要があります。

次に、このエントリーを MCP クライアントの設定に追加します。

{
  "mcpServers": {
    "dataproduct": {
      "command": "uvx",
      "args": [
        "dataproduct_mcp"
      ],
      "env": {
        "DATAMESH_MANAGER_API_KEY": "dmm_live_user_...",
        "DATAMESH_MANAGER_HOST": "https://api.datamesh-manager.com",
        "QUERY_ACCESS_EVALUATION_ENABLED": "true",
        "SNOWFLAKE_USER": "",
        "SNOWFLAKE_PASSWORD": "",
        "SNOWFLAKE_ROLE": "",
        "SNOWFLAKE_WAREHOUSE": "COMPUTE_WH",
        "DATABRICKS_HOST": "adb-xxx.azuredatabricks.net",
        "DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/xxx",
        "DATABRICKS_CLIENT_ID": "",
        "DATABRICKS_CLIENT_SECRET": "",
        "BIGQUERY_CREDENTIALS_PATH": "/path/to/service-account-key.json"
      }
    }
  }
}

これは Claude Desktop の設定形式(~/Library/Application Support/Claude/claude_desktop_config.json)です。他の MCP クライアントにも同様の設定オプションがあります。

設定
Data Mesh Manager の設定
環境変数説明必須デフォルト
DATAMESH_MANAGER_API_KEY認証用の API キーはいN/A
DATAMESH_MANAGER_HOSTセルフホストインスタンスのベース URLいいえhttps://api.datamesh-manager.com
QUERY_ACCESS_EVALUATION_ENABLEDAI によるクエリアクセス評価の有効/無効いいえtrue

Data Mesh Manager で認証するには、DATAMESH_MANAGER_API_KEY 変数に API キーを設定する必要があります。

Data Mesh Manager で API キーを作成する方法。

セルフホストの Data Mesh Manager インスタンスでは、DATAMESH_MANAGER_HOST 環境変数にインスタンスの URL を設定します。

Data Mesh Manager インスタンスで AI 機能が有効になっていない場合は、QUERY_ACCESS_EVALUATION_ENABLED を false に設定すると、AI によるクエリアクセス評価を無効にできます。

(はい。今後、これを簡素化するために OAuth2 ベースの認証に取り組む予定です。)

Snowflake

データプラットフォームとして Snowflake を使用する場合は、ユーザー用のプログラムによるアクセストークンを作成します。AI エージェントが実在するユーザーの代理として動作しない場合は、Snowflake に新しいユーザーを作成し、AI エージェント用の新しいサービスユーザーを作成して、データプロダクトにアクセスするために必要な権限を付与します。

プログラムによるアクセストークンを有効にするために、ネットワークポリシーの設定も必要になる場合があります。

ユーザーには以下が必要です。

  • 使用するウェアハウスに対する USAGE 権限。
  • アクセスするデータプロダクトのデータベースとスキーマに対する USAGE 権限を持つ割り当て済みのロール(例:DATAPRODUCT_MCP)。

Data Mesh Manager でアクセスリクエストが承認されると、Snowflake Connectorを使用して、Snowflake 内のデータへのアクセス権を自動的に付与できます。

環境変数説明
DATACONTRACT_SNOWFLAKE_USERNAMEユーザー名
DATACONTRACT_SNOWFLAKE_PASSWORDプログラムによるアクセストークン
DATACONTRACT_SNOWFLAKE_WAREHOUSE使用するウェアハウス(例:COMPUTE_WH)。
DATACONTRACT_SNOWFLAKE_ROLE割り当て済みのユーザーロール(例:DATAPRODUCT_MCP)
Databricks

データプラットフォームとして Databricks を使用する場合は、サービスプリンシパルを作成し、データプロダクトにアクセスするために必要な権限を割り当てます。サービスプリンシパル用の OAuth2 クライアント ID とシークレットを作成します。

Data Mesh Manager でアクセスリクエストが承認されると、Databricks Connectorを使用して、Databricks 内のデータへのアクセス権を自動的に付与できます。

Databricks SQL ウェアハウスを設定する必要があります。クエリを高速に実行するには、サーバーレスウェアハウスをおすすめします。

環境変数説明
DATABRICKS_CLIENT_IDサービスプリンシパルの OAuth2 クライアント ID
DATABRICKS_CLIENT_SECRETサービスプリンシパルの OAuth2 クライアントシークレット
DATABRICKS_HOSTDatabricks ワークスペースの URL(先頭の https:// を除く)。例:adb-xxx.azuredatabricks.net。Compute -> SQL warehouses -> Your Warehouse -> Connection details -> Server hostname に移動します
DATABRICKS_HTTP_PATHSQL エンドポイントの HTTP パス(例:/sql/1.0/warehouses/xxx)。Compute -> SQL warehouses -> Your Warehouse -> Connection details -> HTTP path に移動します
BigQuery

データプラットフォームとして BigQuery を使用する場合は、サービスアカウントを作成し、データプロダクトにアクセスするために必要な権限を割り当てる必要があります。サービスアカウントキーを JSON ファイルとしてダウンロードしてください。

Data Mesh Manager でアクセスリクエストが承認された際に BigQuery の権限管理を自動化するには、BigQuery Connectorを使用できます。

サービスアカウントには、以下の IAM ロールが必要です。

  • BigQuery Data Viewer - データセットをクエリするため
  • BigQuery Job User - ジョブとしてクエリを実行するため
環境変数説明
BIGQUERY_CREDENTIALS_PATHサービスアカウントキーの JSON ファイルへのパス

注:Google Cloud プロジェクト ID とデータセット情報は、環境変数ではなく、データプロダクトの出力ポートサーバー設定で指定します。

サービスアカウントの認証情報を取得するには、次の手順を実行します。

  1. Google Cloud Console に移動します
  2. IAM & Admin > Service Accounts に移動します
  3. 新しいサービスアカウントを作成するか、既存のアカウントを使用します
  4. BigQuery Data Viewer ロールと BigQuery Job User ロールを追加します
  5. JSON キーファイルを生成してダウンロードします
  6. BIGQUERY_CREDENTIALS_PATH に JSON ファイルへのパスを設定します

サポートされているサーバーの種類

dataproduct_query ツールは、データプロダクトに対するクエリの実行をサポートします。MCP クライアントは、データモデルの構造とセマンティクスを含むデータコントラクトに基づいて SQL クエリを作成します。

現在、以下のサーバーの種類が標準でサポートされています。

サーバーの種類ステータス備考
Snowflake✅SNOWFLAKE_USER、SNOWFLAKE_PASSWORD、SNOWFLAKE_WAREHOUSE、SNOWFLAKE_ROLE 環境変数が必要です
Databricks✅DATABRICKS_HOST、DATABRICKS_HTTP_PATH、DATABRICKS_CLIENT_ID、DATABRICKS_CLIENT_SECRET 環境変数が必要です
BigQuery✅BIGQUERY_CREDENTIALS_PATH 環境変数が必要です
S3近日対応予定DuckDB クライアントを通じて実装されています
Fabric近日対応予定

注: それ以外のデータプラットフォームの種類(例:Redshift、PostgreSQL)には、追加のプラットフォーム固有の MCP サーバーを MCP クライアントに追加して使用してください。

コントリビューション

開発環境のセットアップとコントリビューションのガイドラインについては、CONTRIBUTING.mdを参照してください。

Credits

Maintained by Simon Harrer, André Deuerling, and Jochen Christ.

.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}

コメント

MCP は初めてですか?

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

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