外部 MCP サーバーを使用する
ベータ版
この機能は ベータ版です。
Databricks を外部のモデル コンテキスト プロトコル (MCP) サーバーに接続して、エージェントが Databricks の外部でホストされているより幅広いツールにアクセスできるようにします。外部 MCP サーバーは、Databricks の外部でホストされ、Databricks が管理するプロキシを介して接続するサードパーティの MCP サーバーです。
認証とセキュリティ
Databricks は、マネージド MCP プロキシと Unity Catalog HTTP 接続を使用して、ワークスペースへの認証を安全に処理します。
- セキュリティで保護されたトークン管理 : Databricks は、すべての OAuth フローとトークンの更新を自動的に処理します
- 資格情報が公開されていない : トークンがエンドユーザーに公開されることはありません
- 集中認証 : Unity Catalog接続を使用した一貫した認証パターン
必要条件
- マネージド MCP サーバー のプレビューが有効になっているワークスペース。「Databricks プレビューの管理」を参照してください。
- 外部の MCP サーバーに接続するには、Unity Catalog HTTP 接続を使用する必要があります。ワークスペースにアタッチされたUnity Catalogメタストアに対するCREATE CONNECTION権限が必要です。 詳細については、 Unity Catalog HTTP 接続を作成する」を参照してください。
Unity Catalog HTTP 接続を作成する
外部 MCP サーバーに接続するには、サーバーへの Unity Catalog HTTP 接続を作成する必要があります。
- HTTP 接続を作成します。HTTP接続を参照してください。
- HTTP 接続を作成するときに、MCP 機能を有効にするには、 「Is mcp connection」 チェックボックスをオンにします。
- 接続 URL が有効な MCP サーバーエンドポイントを指していることを確認します。
UC 接続が作成されると、Databricks は Databricks 管理 MCP サーバーとして機能するプロキシ エンドポイントを自動的にプロビジョニングします。このエンドポイントは、トラフィックを外部 MCP サーバーに安全にプロキシし、トークンの挿入と更新を管理します。
プロキシエンドポイント URL は次の形式に従います。
https://<workspace-hostname>/api/2.0/mcp/external/{connection_name}
AI Playground と接続する
コードを書かずにAI Playgroundで外部 MCP サーバーを直接テストできます。
-
Databricks ワークスペースの AI Playground に移動します。
-
ツールが有効になっている ラベルが付いたモデルを選択します。
-
[ツール] > [+ ツールの追加] をクリックし、利用可能なツール オプションから [MCP サーバー] を選択します。
-
MCP サーバー セクションで、 外部 MCP サーバーを 選択して、利用可能な外部接続を参照します。
-
先ほど作成した Unity Catalog HTTP 接続 (例:
github_u2m_connection) を選択します。 -
LLM とチャットして、外部 MCP サーバー ツールとのやり取りをテストします。AI Playground は、外部 MCP サーバーから利用可能なツールを自動的に検出し、LLM で利用できるようにします。
これにより、完全なエージェントを構築したり、本番運用にデプロイしたりする前に、外部の MCP サーバー統合のプロトタイプを迅速に作成してテストできます。
外部MCPサーバーに接続する
プロキシ URL を使用して外部 MCP サーバーに接続します。Databricks プロキシにより、外部サーバーは管理対象 MCP サーバーのように動作します。
- Databricks MCP Client
- Standard MCP SDK
推奨される方法では、プロキシ エンドポイントをMANAGED_MCP_SERVER_URLSリストに追加して、外部 MCP サーバーを Databricks 管理対象サーバーとして扱います。
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
# Initialize workspace client
workspace_client = WorkspaceClient()
host = workspace_client.config.host
# External MCP servers are proxied as managed servers, allowing you
# to use the same API for both managed and external servers
MANAGED_MCP_SERVER_URLS = [
f"{host}/api/2.0/mcp/functions/system/ai", # Default managed MCP
f"{host}/api/2.0/mcp/external/github_u2m_connection" # External MCP proxy
]
エージェントで外部 MCP サーバーを使用するには、プロキシ URL をmanaged_server_urlsに渡します。
# Use with agents - external servers work just like managed ones
import asyncio
from your_agent_code import create_mcp_tools # Your agent's tool creation function
# Create tools from both managed and external (proxied) servers
mcp_tools = asyncio.run(
create_mcp_tools(
ws=workspace_client,
managed_server_urls=MANAGED_MCP_SERVER_URLS
)
)
Databricks MCP クライアントを使用してツールを直接呼び出すこともできます。
# Direct tool call using DatabricksMCPClient
mcp_client = DatabricksMCPClient(
server_url=f"{host}/api/2.0/mcp/external/github_u2m_connection",
workspace_client=workspace_client
)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {[tool.name for tool in tools]}")
# Call a tool
response = mcp_client.call_tool(
"list_commits",
{"owner": "mlflow", "repo": "mlflow", "sha": "master"}
)
print(response.content[0].text)
標準の MCP SDK と async/await を使用して外部 MCP サーバーに接続します。
%pip install -U databricks-sdk databricks_mcp tabulate databricks_ai_bridge
%restart_python
import json
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksOAuthClientProvider
from databricks.sdk.credentials_provider import ModelServingUserCredentials
from mcp.client.streamable_http import streamablehttp_client as connect
from mcp import ClientSession
from tabulate import tabulate
async def main():
app_url = "https://<workspace-hostname>/api/2.0/mcp/external/github_u2m_connection"
client = WorkspaceClient()
async with connect(app_url, auth=DatabricksOAuthClientProvider(client)) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
init = await session.initialize()
print(json.dumps(init.model_dump(), indent=2))
tools = await session.list_tools()
print(json.dumps(tools.model_dump(), indent=2))
arguments = {
"owner": "mlflow",
"repo": "mlflow",
"sha": "master"
}
response = await session.call_tool(name="list_commits", arguments=arguments)
data = json.loads(response.content[0].text)
rows = []
for commit in data:
author = commit.get("commit", {}).get("author", {}).get("name")
message = commit.get("commit", {}).get("message", "").split("\n")[0]
html_url = commit.get("html_url", "")
rows.append([author, message, html_url])
# Print as table
print(tabulate(rows, headers=["Author", "Message", "Commit URL"], tablefmt="github"))
await main()
サンプルノートブック: Databricks MCP サーバーを使用してエージェントを構築する
次のノートブックは、Databricks プロキシ エンドポイントを介してアクセスされる外部 MCP サーバーを含む、MCP ツールを呼び出す LangGraph および OpenAI エージェントを作成する方法を示しています。
LangGraph MCP ツール呼び出しエージェント
OpenAI MCP ツール呼び出しエージェント
制限
-
Private Link を使用した VPC 内のリソースへのプライベート接続はサポートされていません。この機能が必要な場合は、サポート チームにお問い合わせください。
-
Databricks は、ストリーミング可能な HTTP トランスポート メカニズムを使用する外部 MCP サーバーのみをサポートします。
次のステップ
- 管理対象MCPサーバーを 外部サーバーと併用する
- Databricks MCP インフラストラクチャにアクセスするためにクライアントを MCP サーバーに接続します
- 組織のニーズに合わせたカスタム MCP サーバーを構築する
- 外部 MCP サーバーを使用するエージェントをデプロイする