Databricks SQL MCPサーバーは、エージェントがAI生成のSQLをUnityカタログのテーブルに対して実行し、Unityカタログの権限で管理されるデータの読み書きを可能にします。 クエリは非同期で実行されます。エージェントはツールを呼び出してクエリを開始し、応答が完了するまでポーリングを行います。
Important
system.ai.dbsql、system.ai.sandbox、またはsystem.ai.web_searchを利用するには、アカウント管理者がアカウントコンソールのプレビューページからUnity Gatewayベータを有効にする必要があります。
アカウント プレビューを管理をご覧ください。
このサーバーは開発やデータエンジニアリングに使います。自分やコーディングエージェントが書いた特定のクエリを実行し、スキーマを検査し、SQL構文を検証し、AIコーディングツールからデータパイプラインを作成します。 実行する正確なSQLを決定論的にコントロールできます。
MCPはデフォルトで読み書きを許可しています。 読み取り専用にするには、組み込みのsystem.ai.dbsql_policyポリシーでdisallow_writesをtrueに設定してください。 「ポリシーの適用」をご覧ください。
Genie One MCPとDatabricks SQL MCPサーバーの比較
自然言語でのビジネス質問には、Databricks は Genie One MCP server を推奨しています。 Genieは、管理されたセマンティックレイヤーであるGenie Ontologyを通じてビジネス用語を解釈します。 これにより、エージェントが生のテーブルに対して直接SQLを書くよりも正確な回答が得られます。
構文の検証やパイプラインの作成など、自分やコーディングエージェントが書いた特定のクエリを実行する必要がある場合は、Databricks SQL MCPサーバーを使いましょう。
エージェントを接続してください
このURLをコーディングエージェントのセットアップガイドやPythonエージェントの設定と組み合わせてください:
| URL パターン | OAuth スコープ |
|---|---|
https://<workspace-hostname>/ai-gateway/mcp-services/system.ai.dbsql |
ai-gateway |
エージェントに依頼して、SELECT 1 AS resultを実行してもらってください。 MCPツールを呼び出し、1 を返すことを確認します。
_meta パラメーター
_meta パラメータとは、ツール呼び出し時に LLM に動的に生成させるのではなく、MCP サーバーの動作を決定論的に定めるために、エージェントコード内であらかじめ設定しておく構成値のことです。 Databricks SQL MCPサーバーは以下の _meta パラメータをサポートしています:
| パラメーター名 | タイプ | Description |
|---|---|---|
warehouse_id |
str |
クエリの実行に使用する SQL ウェアハウスの ID。 例: "a1b2c3d4e5f67890"指定しない場合、リソースとアクセス許可に基づいて倉庫が自動的に選択されます。 |
例: Databricks SQL クエリの SQL ウェアハウスを指定する
この例では、warehouse_id_meta パラメーターを使用して、公式の Python MCP SDK を使用して Databricks SQL MCP サーバーからクエリを実行する SQL ウェアハウスを指定する方法を示します。
このシナリオでは、次の操作を行います。
- システムがクエリを自動的に選択するのではなく、クエリ実行に特定の SQL ウェアハウスを使用する
- 専用ウェアハウスにクエリをルーティングして一貫したパフォーマンスを確認する
この例を実行するには、 マネージド MCP 開発用に Python 環境を設定します。
SQL ウェアハウス ID を見つけるには、「 SQL ウェアハウスへの接続」を参照してください。
# Import required libraries for MCP client and Databricks authentication
import asyncio
from databricks.sdk import WorkspaceClient
from databricks_mcp.oauth_provider import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
from mcp.types import CallToolRequest, CallToolResult
async def run_dbsql_tool_call_with_meta():
# Initialize Databricks workspace client for authentication
workspace_client = WorkspaceClient()
# Construct the MCP server URL for DBSQL
# Replace <workspace-hostname> with your workspace hostname
mcp_server_url = "https://<workspace-hostname>/ai-gateway/mcp-services/system.ai.dbsql"
# Establish connection to the MCP server with OAuth authentication
async with streamablehttp_client(
url=mcp_server_url,
auth=DatabricksOAuthClientProvider(workspace_client),
) as (read_stream, write_stream, _):
# Create an MCP session for making tool calls
async with ClientSession(read_stream, write_stream) as session:
# Initialize the session before making requests
await session.initialize()
# Create the tool call request with warehouse_id in _meta
request = CallToolRequest(
method="tools/call",
params={
# Tool name for executing SQL queries
"name": "execute_sql",
# Dynamic arguments - typically provided by your AI agent
"arguments": {
"query": "SELECT * FROM my_catalog.my_schema.my_table LIMIT 10"
},
# Meta parameters - specify which warehouse to use
"_meta": {
"warehouse_id": "a1b2c3d4e5f67890" # Your SQL warehouse ID
}
}
)
# Send the request and get the response
response = await session.send_request(request, CallToolResult)
return response
# Execute the async function and get results
response = asyncio.run(run_dbsql_tool_call_with_meta())
Limitations
- 意味的な文脈は一切ありません。 サーバーは与えられたSQLを実行します。 ビジネス用語、メトリック定義、テーブル関係を解決しないため、エージェントはスキーマのみからそれらを推論しなければなりません。 自然言語で行われる分析の質問には、 Genie OneのMCPサーバーを使用してください。このサーバーはGenie Ontologyに基づく回答を提供します。
- 結果のサイズ。 サーバーはツール応答で大きな結果セットを切り詰め、モデルのコンテキストウィンドウを使い果たさないようにしています。 結果を制限内に抑えるために、行や列を少なく返すか、SQLで集約します。
- 非同期実行。 クエリは同期的に返ってくるわけではありません。 エージェントはクエリを開始し、完了するまでポーリングを行うため、進行中の状態を処理しなければなりません。
レガシーワークスペースエンドポイント
既存の統合については、https://<workspace-hostname>/api/2.0/mcp/sql OAuth スコープで sql を使いましょう。 このエンドポイントは、Managed MCP Servers ワークスペースのプレビューおよび基盤リソースのアクセス許可を使用します。