エージェントで外部MCPサーバーを使用する
プレビュー
この機能は パブリック プレビュー段階です。
ワークスペースに外部MCPサーバーをインストールしたら、Databricksが管理するプロキシURLに接続することで、エージェントコード内でそのサーバーを使用します。プロキシは、外部サーバーを管理対象のMCPサーバーのように動作させ、認証とトークン管理を処理します。
外部MCPサーバーをインストールするには、 「外部MCPサーバーのインストール」を参照してください。
外部MCPサーバーに接続します
プロキシ URL パターンはhttps://<workspace-hostname>/api/2.0/mcp/external/<connection-name>で、 <connection-name>は外部サービス用に登録したUnity Catalog接続です。
ご使用のエージェントフレームワークとデプロイメントターゲットに一致するタブを選択してください。
- OpenAI Agents SDK (Apps)
- LangGraph (Apps)
- Model Serving
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接続へのアクセス権限を付与します。
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_langchain import ChatDatabricks, DatabricksMCPServer, DatabricksMultiServerMCPClient
from langgraph.prebuilt import create_react_agent
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMultiServerMCPClient([
DatabricksMCPServer(
name="external-service",
url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
),
])
async with mcp_client:
tools = await mcp_client.get_tools()
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=tools,
)
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Send a Slack message to the team about the deployment"}]}
)
print(result["messages"][-1].content)
アプリにdatabricks.ymlのUnity Catalog接続へのアクセス権限を付与します。
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow
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()
mlflow.pyfunc.log_model(
"agent",
python_model=my_agent,
resources=mcp_client.get_databricks_resources(),
)
エージェントをデプロイするには、 「生成AIアプリケーション用のエージェントのデプロイ (モデルサービング)」を参照してください。 MCP を使用したエージェントのログ記録の詳細については、 Databricks管理の MCP サーバーの使用を参照してください。
下位レベル:MCP SDKを直接使用する
Databricksが提供するフレームワークヘルパーを使用していない場合は、標準のMCP SDKを使用してプロキシURLを呼び出してください。このパターンはフレームワークに依存しません。カスタムオーケストレーションを行う場合や、セッションを直接制御する必要がある場合に使用してください。
%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直接使用してください。
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ツール呼び出しエージェント
次のステップ
- エージェントを外部サービスに接続する方法については、「エージェントを外部サービスに接続する」を参照してください。エージェントを外部サービスに接続するすべての方法の概要が表示されます。
- 外部サーバーと管理対象MCPサーバーを併用する
- 組織固有のツールには、エージェントでカスタム MCP サーバーを使用する
- 外部MCPサーバーを使用するエージェントをデプロイする