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

エージェントで外部MCPサーバーを使用する

備考

プレビュー

この機能は パブリック プレビュー段階です。

ワークスペースに外部MCPサーバーをインストールしたら、Databricksが管理するプロキシURLに接続することで、エージェントコード内でそのサーバーを使用します。プロキシは、外部サーバーを管理対象のMCPサーバーのように動作させ、認証とトークン管理を処理します。

外部MCPサーバーをインストールするには、 「外部MCPサーバーのインストール」を参照してください。

外部MCPサーバーに接続します

プロキシ URL パターンはhttps://<workspace-hostname>/api/2.0/mcp/external/<connection-name>で、 <connection-name>は外部サービス用に登録したUnity Catalog接続です。

ご使用のエージェントフレームワークとデプロイメントターゲットに一致するタブを選択してください。

Python
from agents import Agent, Runner
from databricks.sdk import WorkspaceClient
from databricks_openai.agents import McpServer

workspace_client = WorkspaceClient()
host = workspace_client.config.host

async with McpServer(
url=f"{host}/api/2.0/mcp/external/<connection-name>",
name="external-service",
workspace_client=workspace_client,
) as external_server:
agent = Agent(
name="Connected agent",
instructions="You are a helpful assistant with access to external services.",
model="databricks-claude-sonnet-4-5",
mcp_servers=[external_server],
)
result = await Runner.run(agent, "Send a Slack message to the team about the deployment")
print(result.final_output)

アプリにdatabricks.ymlのUnity Catalog接続へのアクセス権限を付与します。

YAML
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'

下位レベル:MCP SDKを直接使用する

Databricksが提供するフレームワークヘルパーを使用していない場合は、標準のMCP SDKを使用してプロキシURLを呼び出してください。このパターンはフレームワークに依存しません。カスタムオーケストレーションを行う場合や、セッションを直接制御する必要がある場合に使用してください。

Python
%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 mcp.client.streamable_http import streamablehttp_client as connect
from mcp import ClientSession


async def main():
app_url = "https://<workspace-hostname>/api/2.0/mcp/external/<connection-name>"
client = WorkspaceClient()

async with connect(app_url, auth=DatabricksOAuthClientProvider(client)) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
response = await session.call_tool(name="<tool-name>", arguments={...})
print(response.content[0].text)

await main()

同期的な代替手段として、 DatabricksMCPClient直接使用してください。

Python
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient

workspace_client = WorkspaceClient()
host = workspace_client.config.host

mcp_client = DatabricksMCPClient(
server_url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
)

tools = mcp_client.list_tools()
response = mcp_client.call_tool("<tool-name>", {...})
print(response.content[0].text)

ノートブックの例:Databricks MCPサーバーを使用してエージェントを構築する

以下のノートブックでは、Databricksプロキシエンドポイント経由でアクセスされる外部MCPサーバーを含むMCPツールを呼び出すLangGraphおよびOpenAIエージェントを作成する方法を示します。

LangGraph MCPツール呼び出しエージェント

ノートブックを新しいタブで開く

OpenAI MCPツール呼び出しエージェント

ノートブックを新しいタブで開く

次のステップ