メインコンテンツまでスキップ

Genie One MCPサーバー

Genie One MCP サーバーは、Databricks が提供するMCPであり、 Genie One でのチャット を活用して、Model Context Protocol (MCP) を介して Genie を会話型ツールとして公開します。MCP クライアントまたはエージェントが自然言語の質問を送信すると、Genie がエンタープライズデータを検索し、SQL を記述して、引用された Databricks ソースへのディープリンクとともに Genie オントロジーに基づく回答を返します。

MCP クライアントまたはエージェントを接続して、Genie の信頼できる知見に基づいてデータに関する質問を行えるようにします。MCP Apps をサポートするクライアントは、Genie の進捗状況、視覚化、結果をインラインで表示するインタラクティブな View をレンダリングできます。

Unity Catalogのアクセス許可は常に適用されるため、ユーザーとエージェントはアクセスを許可されたデータのみをクエリーできます。

ワークスペース全体のアナリティクスにこのサーバーを使用します。自然言語で質問されるビジネス上の問いに対し、データの意味を理解することで正確な回答を提供します。Genieは、管理されたセマンティックレイヤーであるGenie Ontologyを通じて、ビジネス用語、メトリクス定義、およびテーブル関係を解決します。これにより、エージェントが生のテーブルに対して直接SQLを記述するよりも正確な回答が得られます。

ヒント

Pythonから1つのキュレーション済みGenie Agentをクエリーするには、AI Bridgeツールの例を使用します。MCP上の特定のエージェントをクエリーするには、Genie Agent MCPサーバーを参照してください。MCPを使用せずにアプリケーションからGenie Oneを呼び出すには、Genie One APIを使用します。

要件:​

Genie One MCPサーバーを呼び出すには、ユーザーまたはService Principalに以下が必要です:

  • EXECUTE system.ai.genie_one_mcpで。その保護対象のタイプはmcp_serviceです。
  • USE CATALOG systemカタログと、system.aiスキーマ上のUSE SCHEMA。
  • ワークスペースへの割り当て。

Databricks CLI を使用して呼び出し元の有効な権限を確認するには、次のコマンドを実行します。

Bash
databricks grants get-effective mcp_service system.ai.genie_one_mcp --principal someone@example.com

EXECUTEを付与するには、次をラン。

Bash
databricks grants update mcp_service system.ai.genie_one_mcp \
--json '{"changes": [{"principal": "someone@example.com", "add": ["EXECUTE"]}]}'

Databricksが提供するMCPへのアクセスを付与するには、メタストア管理者はまずsystem.aiスキーマで自身にMANAGEを付与する必要があります。MCPを共有するを参照してください。

Unity Gateway経由でのアクセス​

Genie One MCP サーバーは、Databricks が提供する MCP であり、system.ai.genie_one_mcp、Unity Gateway を通じて管理されます。

MCPのUnity Gateway URLでMCPを呼び出し、パスに完全修飾 Unity Catalog 名を、oクエリーパラメーターにワークスペースIDを指定します。

Text
https://<workspace-hostname>/ai-gateway/mcp-services/system.ai.genie_one_mcp?o=<workspace-id>

UI を使用せずにワークスペース ID を取得するには、次のいずれかを使用します。

  • ワークスペース URL 内の o= 値。
  • 任意の Databricks REST API レスポンスの x-databricks-org-id ヘッダー。
  • WorkspaceClient().get_workspace_id() Databricks SDK for Pythonの場合。

ユーザー代理認証を使用して接続する場合は、ai-gateway OAuthスコープを含めてください。アクセスを制御し、ポリシーを適用するには、「MCPを管理する」をご覧ください。エージェントにMCPを追加するには、「PythonエージェントからMCPツールを呼び出す」をご覧ください。CursorやClaude Desktopなどの外部クライアントを接続するには、「サポートされているコーディングエージェントとワークエージェント」をご覧ください。

警告

非推奨

ベータ版Endpoint https://<workspace-hostname>/api/2.0/mcp/genie は非推奨となっており、2026年11月30日にサポートが終了します。その日付以降、ベータ版Endpointへのリクエストは失敗します。それまでに、すべてのワークロードを一般公開されている system.ai.genie_one_mcp MCP に移行してください。

ツール名と引数は、両方のEndpointで同じです。Beta endpointからクライアントを移動するには、MCP設定を更新します。

  • サーバーのURLをhttps://<workspace-hostname>/ai-gateway/mcp-services/system.ai.genie_one_mcp?o=<workspace-id>に置き換えます。
  • クライアントがOAuthを使用する場合は、genieスコープの代わりにai-gatewayスコープを要求してください。
  • 呼び出し元が 「要件」 の権限を持っていることを確認してください。

AI エージェントを Genie One MCP に接続する​

コーディングエージェントまたは他の MCP クライアントを接続するには、Unity Gateway MCP URL https://<workspace-hostname>/ai-gateway/mcp-services/system.ai.genie_one_mcp?o=<workspace-id> に接続するようにクライアントを構成します。コーディングエージェント または 他の MCP クライアント の設定に従ってください。

MCP とそのURLを表示するには、ワークスペースに移動し、 Unity Gateway > MCPs を選択します。REST API で Databricks 提供の MCP を一覧表示するには、 GET /api/2.1/unity-catalog/mcp-services?parent=schemas/system.ai を呼び出します。MCP の検索を参照してください。

MCP SDKを使用してPythonから呼び出す​

サーバーはストリーミング可能なHTTP転送を使用し、Authorization: Bearer <token>ヘッダーでDatabricksトークンを受け入れます。以下の例では、MCP Python SDKとDatabricks SDK for Pythonを使用して質問をし、Genieが終了するまでポーリングし、同じ会話でフォローアップの質問をします。

パッケージをインストールします:

Bash
pip install mcp databricks-sdk

例をランします。

Python
import asyncio

from databricks.sdk import WorkspaceClient
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client

w = WorkspaceClient()
url = (
f"{w.config.host}/ai-gateway/mcp-services/system.ai.genie_one_mcp"
f"?o={w.get_workspace_id()}"
)


async def ask(session, question, conversation_id=None):
args = {"question": question}
if conversation_id:
args["conversation_id"] = conversation_id
state = (await session.call_tool("genie_ask", args)).structuredContent

# Poll until Genie finishes: completed, incomplete, or failed.
while state["status"] == "in_progress":
poll = await session.call_tool(
"genie_poll_response",
{
"conversation_id": state["conversation_id"],
"response_id": state["response_id"],
},
)
state = poll.structuredContent
return state


async def main():
# w.config.authenticate() returns {"Authorization": "Bearer <token>"}.
async with streamablehttp_client(url, headers=w.config.authenticate()) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print([tool.name for tool in tools.tools])

first = await ask(session, "What were total sales last month?")
print(first["status"], first.get("final_answer"))

follow_up = await ask(
session, "Break that down by region.", first["conversation_id"]
)
print(follow_up["status"], follow_up.get("final_answer"))


asyncio.run(main())

この例では進行状況通知を要求しないため、genie_askはstatus: in_progressで直ちに返され、クライアントは回答についてgenie_poll_responseをポーリングします。

ChatGPT、Claude、Grok Bot/Cursor用のDatabricks Genieプラグイン​

Databricks Genie プラグインは、ChatGPT、Claude、および Grok Bot/Cursor を Genie One MCP に接続します。default OAuth アプリを使用するため、ユーザーは Databricks アカウントでサインインし、管理者は OAuth アプリを作成する必要はありません。

まず、管理者がプラグインをセットアップします。次に、各ユーザーがそれに接続し、サインインします。

注記

ワークスペースでインバウンドネットワークアクセスが制限されている場合、Databricks管理者がChatGPTまたはClaudeのトラフィックを許可する必要があります。そうしないと、プラグインは接続できません。「 コンテキストベースのイングレスポリシーでのパートナープラットフォームの許可」を参照してください。

プラグインをセットアップするには、ChatGPT 管理者が次の手順を実行します:

  1. ChatGPTのワークスペース設定で、 プラグイン をクリックします。
  2. Databricks Genie を検索します。
  3. Templateから作成 をクリックします。
  4. Databricks ワークスペースの URL を入力します。カスタム URLを使用する場合は、ワークスペース ID を ?o=<workspace-id> として含めてください。
  5. 「 下書きを作成 」をクリックします。
  6. 「 公開 」をクリックします。

接続するために、各ユーザーは以下の手順を実行します。

  1. ChatGPTで、 Plugins ページを開きます。
  2. Databricks Genie を検索します。
  3. 管理者が設定したプラグインの「 接続 」をクリックします。
  4. ChatGPTからリダイレクトされたら、Databricksアカウントでサインインしてください。

情報については、ChatGPT Genie プラグインを参照してください。

利用可能なツール​

Genie One MCPサーバーは、以下のツールを公開します。実際には、エージェントは genie_ask (またはMCP Appsクライアント上の view_ask) を呼び出して質問を行います。エージェントは、回答を作成する過程で、残りのツールをユーザーの代わりに管理します。

ツール

説明

genie_ask

Genieに自然言語でデータに関する質問をして、回答を起動します。conversation_id、response_id、およびstatusを返します。以前の会話を続けるには、conversation_idを渡します。

genie_poll_response

進行中または完了した応答の最新状態を取得します。これには、進捗ステップ、最終的な回答、および Databricks ソースへのディープLinkが含まれます。

genie_get_query_result

Genieが実行したクエリーについて、カラムのスキーマと行を含む完全なSQL結果をフェッチします。genie_poll_responseがstatus: completedをレポートした後に呼び出します。ポーリングに使用したconversation_idとresponse_id、およびgenie_poll_responseのクエリーのitem_idをstructuredContent.query_items[].item_idに取得します。

genie_cancel_response

実行中の Genie ターンのキャンセルをリクエストします。

view_ask

Genie に質問して、インタラクティブなビューを開きます。MCP Apps クライアントに対して genie_ask の代わりとして提供され、利用可能な場合はこちらが推奨されます。

ツール

説明

genie_ask

Genieに自然言語でデータに関する質問をして、回答を起動します。conversation_id、response_id、およびstatusを返します。以前の会話を続けるには、conversation_idを渡します。

genie_poll_response

進行中または完了した応答の最新状態を取得します。これには、進捗ステップ、最終的な回答、および Databricks ソースへのディープLinkが含まれます。

genie_get_query_result

Genieが実行したクエリーについて、カラムのスキーマと行を含む完全なSQL結果をフェッチします。genie_poll_responseがstatus: completedをレポートした後に呼び出します。ポーリングに使用したconversation_idとresponse_id、およびgenie_poll_responseのクエリーのitem_idをstructuredContent.query_items[].item_idに取得します。

genie_cancel_response

実行中の Genie ターンのキャンセルをリクエストします。

view_ask

Genie に質問して、インタラクティブなビューを開きます。MCP Apps クライアントに対して genie_ask の代わりとして提供され、利用可能な場合はこちらが推奨されます。

質問を入力​

Genie はデータを検索して SQL をランするエージェントをランするため、回答は非同期になります。あなた(またはエージェント)が質問を伴って genie_ask を呼び出すと、エージェントがその後のやり取りを自動的に管理します。一般的なフローは次のようになります。

  1. genie_ask 応答を起動し、conversation_id および response_id を status: in_progress とともに返します。Genieはバックグラウンドで動作し続けます。
  2. エージェントは応答が完了するまで genie_poll_response をポーリングし、その過程で progress_steps と narration_instruction を表示して状況を通知します。
  3. status が completed (または incomplete / failed) の場合、エージェントはレンダリングされた回答を返します。これには、完全な会話への Explore in Databricks ディープLinkと、Genie が生成した視覚化が含まれます。

同じ会話を続けるために、フォローアップの質問では以前の conversation_id を再利用します。

MCPアプリ​

Genie One MCPサーバーは、サーバーがプレーンテキストの代わりにインタラクティブなビューを返せるようにする拡張機能である MCP App を提供します。MCPアプリをサポートするクライアントでは、サーバーはインタラクティブな View を返します。これは、テキストのみの返信ではなく、会話の進行に合わせてGenieの進捗状況、可視化、最終的な回答を表示するクライアント埋め込み型のパネルです。

Claude Desktop 内で棒グラフ、サマリーメトリクス、および Genie Ontology の引用を表示する Genie One MCP アプリ。

Claude Desktop 内で棒グラフ、サマリーメトリクス、および Genie Ontology の引用を表示する Genie One MCP アプリ。

追加のセットアップは不要です。MCPアプリをサポートするクライアントは、自動的にインタラクティブなビューを取得します。テキスト結果の受信を継続しないクライアント。

考慮事項​

  • 権限 : Unity Catalog の権限はすべてのリクエストで適用されるため、結果はユーザーがアクセスできる範囲に限定されます。
  • ユーザー認証 :データガバナンスのベストプラクティスに従い、Genieのソースへスムーズに移動できるユーザーに代わって行うOAuth認証をおすすめします。プログラムによるワークロードや自動化されたワークロードでは、Service Principal認証もサポートされています。Authorization: Bearerヘッダーで送信されるDatabricksトークンは、OAuthユーザー対マシン(U2M)、OAuthマシン対マシン(M2M)、個人用アクセストークンなど、いずれも使用できます。そのため、ブラウザーでのOAuthフローは必要ありません。サポートされているインバウンド認証を参照してください。
  • 構成 : サーバーは、Databricks 内の Genie One 構成を尊重します。そこで Genie の動作を調整および構成します。Chat in Genie One を参照してください。
  • ポーリング間隔 : 前の genie_poll_response 呼び出しが完了するのを待ってから、再度ポーリングします。
  • 結果サイズ :モデルのコンテキストウィンドウを保護するため、genie_ask および genie_poll_response は切り捨てられたクエリー結果を返します。エージェントが完全な結果を必要とする場合、genie_get_query_result を呼び出して完全なスキーマと行を取得できます。非常に大きな結果には依然としてサイズ制限が適用されます。制限を超えた場合、応答は切り捨てられます。
  • SQL Warehouse :特定のSQL Warehouseでクエリーをランするには、genie_askまたはview_askの_metaパラメーターでwarehouse_idを渡します。
  • 価格 : Genie One MCPサーバーは Genie Oneでのチャットを使用します。Genieの価格を参照してください。

トラブルシューティング​

  • Routine or Model ... does not exist または MCP is not a valid securable type で権限を確認または付与する場合 : セキュアブル タイプとして mcp_service を使用します。 function または mcp は使用しないでください。function 型と mcp 型は MCP を解決しません。
  • genie_poll_response は応答が完了した後に query_items を返しません : ポーリングテキストの末尾にある Tool-call IDs コメントから item_id を取得するか、応答の送信中に以前のポーリングから structuredContent.query_items[].item_id をキャプチャします。
  • item_idはgenie_get_query_resultで解決されません :有効なitem_idはpub_..._outputのような形式です。結果テーブルのコメントマーカーにあるquery_...埋め込みIDをitem_idとして渡さないでください。解決されないためです。

その他のリソース​