Data Product Mcp について
Data Product MCPは、Data Mesh Managerを使うチーム向けのMCPサーバーです。ガバナンス対象のデータプロダクトを検索し、アクセスを申請して、対応プラットフォームでSQLを実行できます。
主な機能
- 01有効なデータプロダクトの検索
- 02出力ポート、アクセス状況、データ契約の確認
- 03出力ポートへのアクセス申請
- 04アクセス可能なデータプロダクトへのSQL実行
- 05Snowflake、Databricks、BigQueryに対応
活用シーン
- 01ビジネス上の問いに関係するデータプロダクトの特定
- 02クエリ実行前の管理されたアクセス申請
- 03データ契約の意味に沿ったアクセス可能データの検索
MCP 対応
MCPクライアントに、データプロダクトの検索・詳細確認、出力ポートへのアクセス申請、SQL実行のツールを提供します。クエリは基盤となるデータプラットフォームで実行されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx dataproduct_mcpDATAMESH_MANAGER_API_KEYシークレットDATAMESH_MANAGER_HOSTSNOWFLAKE_USERSNOWFLAKE_PASSWORDシークレットSNOWFLAKE_ROLESNOWFLAKE_WAREHOUSEDATABRICKS_HOSTDATABRICKS_HTTP_PATHDATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRETシークレットBIGQUERY_CREDENTIALS_PATHシークレットローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Data Product MCP
Data Mesh Managerでデータプロダクトを検索してアクセスをリクエストし、データプラットフォーム上でクエリを実行してビジネスデータにアクセスするための、Model Context Protocol(MCP)サーバーです。
コンセプト
アイデア:データガバナンスポリシーを適用しながら、AI エージェントがセマンティックなビジネスコンテキストに基づいてあらゆるデータプロダクトを検索し、アクセスできるようにします。
または、こちらがお好みなら:
AI があらゆるビジネス上の質問に答えられるようにします。
データプロダクトは、データコントラクトで定義された、組織内の他のチームと共有される、管理された高品質のビジネスデータセットです。 データコントラクトは、構造、セマンティクス、品質、利用規約を記述します。データプロダクトは、どのようなデータが存在するかだけでなく、その意味や正しい使い方を AI が理解するために必要なセマンティックなコンテキストを提供します。 利用可能なデータプロダクトを検索し、そのメタデータを分析してタスクに関連するかどうかを評価するために、データプロダクトマーケットプレイスとしてData Mesh Managerを使用します。
データプロダクトが特定されたら、データガバナンスが重要な役割を果たします。データプロダクトへのアクセスを制御し、クエリがデータコントラクトの利用規約に準拠していることを確認し、組織全体のポリシーへの準拠を確保します。必要に応じて、AI エージェントはデータプロダクトの出力ポートへのアクセスをリクエストできます。その際、データプロダクトのオーナーによる手動承認が必要となる場合があります。
最後に、LLM はデータコントラクトのデータモデルの説明とセマンティクスに基づいて SQL クエリを生成できます。セキュリティガードレールを設けたうえで SQL クエリを実行し、機密データの不正使用を防止するとともに、プロンプトインジェクションなどの攻撃経路を緩和します。結果は AI エージェントに返され、元のビジネス上の質問への回答に利用されます。
手順:
- 検索: データプロダクトマーケットプレイスで、タスクに関連するデータプロダクトを検索します
- ガバナンス: データプロダクトへのアクセスを確認し、リクエストします
- クエリ: プラットフォーム固有の MCP サーバーを使用して SQL ステートメントを実行します。
Data Mesh Managerは、データプロダクトの一元的なマーケットプレイスおよびガバナンスレイヤーとして機能し、組織内のすべてのデータプロダクトのメタデータ、アクセス制御、データコントラクトを提供します。
データプラットフォーム(Snowflake、Databricks など)は実際のデータをホストし、クエリを実行します。MCP サーバーはこれらのプラットフォームに接続し、アクセス権のあるデータプロダクトに対する SQL クエリを実行します。
ツール
-
dataproduct_search- 検索語に基づいてデータプロダクトを検索します。包括的な結果を得るために、複数の検索方法(リスト検索、セマンティック検索)を使用します。有効なデータプロダクトのみを返します。
- 任意の入力:
search_term(文字列):データプロダクトを絞り込む検索語です。ID、タイトル、説明を対象に検索します。複数の検索語をスペースで区切って指定できます。
- 戻り値:データプロダクトの ID、名前、説明、オーナー情報、結果の取得元を含む構造化リストです。
-
dataproduct_get- ID を指定してデータプロダクトを取得します。データプロダクトには、すべての出力ポートとサーバー情報が含まれます。レスポンスには各出力ポートのアクセス状況が含まれ、データコントラクトはインラインで展開されます。
- 必須の入力:
data_product_id(文字列):データプロダクトの ID です。
- 戻り値:アクセス状況とインラインで展開されたデータコントラクトを含む、拡張された出力ポートを備えたデータプロダクトの詳細です。
-
dataproduct_request_access- データプロダクトの特定の出力ポートへのアクセスをリクエストします。これによりアクセスリクエストが作成されます。データプロダクトの設定、目的、データガバナンスルールに応じて、アクセスは自動的に許可されるか、データプロダクトのオーナーによる審査を受けます。
- 必須の入力:
data_product_id(文字列):データプロダクトの ID です。output_port_id(文字列):出力ポートの ID です。purpose(文字列):ユーザーがデータを使って何を行うのか、またアクセスが必要な理由を具体的に指定します。アクセスリクエストがデータオーナーの承認を必要とする場合、データオーナーはこの目的をもとに、ビジネス、技術、ガバナンスの観点からアクセスが適格かどうかを判断します。
- 戻り値:access_id、ステータス、承認情報を含むアクセスリクエストの詳細です。
-
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_ENABLED | AI によるクエリアクセス評価の有効/無効 | いいえ | 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_HOST | Databricks ワークスペースの URL(先頭の https:// を除く)。例:adb-xxx.azuredatabricks.net。Compute -> SQL warehouses -> Your Warehouse -> Connection details -> Server hostname に移動します |
DATABRICKS_HTTP_PATH | SQL エンドポイントの 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 とデータセット情報は、環境変数ではなく、データプロダクトの出力ポートサーバー設定で指定します。
サービスアカウントの認証情報を取得するには、次の手順を実行します。
- Google Cloud Console に移動します
- IAM & Admin > Service Accounts に移動します
- 新しいサービスアカウントを作成するか、既存のアカウントを使用します
BigQuery Data ViewerロールとBigQuery Job Userロールを追加します- JSON キーファイルを生成してダウンロードします
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}}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。