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

カスタムエージェントでMCPサーバーを使用する

備考

プレビュー

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

エージェントコードをDatabricks上の任意のMCPサーバーに接続します:DatabricksマネージドサーバーMCPサービスとして登録された外部MCPサーバー、およびDatabricksアプリとしてホストされるカスタムサーバー。それらはすべて同じMCPインターフェースを公開しているため、エージェントコードは同一です。異なるのは、 サーバーURL認証 方法です。

databricks-mcp Python ライブラリは Databricks MCP サーバーへの認証を処理するため、同じクライアント コードが 3 つのサーバー タイプすべてで機能します。

サーバーURLを取得する

最初にMCPサーバーをセットアップし、以下の例でそのURLを使用してください:

サーバータイプ

URL パターン

セットアップ

マネージド

https://<workspace-hostname>/api/2.0/mcp/<service>/<path>

利用可能なマネージドサーバー

外部(MCPサービス)

https://<workspace-hostname>/ai-gateway/mcp-services/<catalog>.<schema>.<mcp-service>

MCPサービスを使用してエージェントをサードパーティ製ツールに接続します。

カスタム

https://<app-url>/mcp

独自の MCP サーバーをホストする

サーバータイプ

URL パターン

セットアップ

マネージド

https://<workspace-hostname>/api/2.0/mcp/<service>/<path>

利用可能なマネージドサーバー

外部(MCPサービス)

https://<workspace-hostname>/ai-gateway/mcp-services/<catalog>.<schema>.<mcp-service>

MCPサービスを使用してエージェントをサードパーティ製ツールに接続します。

カスタム

https://<app-url>/mcp

独自の MCP サーバーをホストする

環境をセットアップする

  1. OAuth を使用してワークスペースを認証します:

    Bash
    databricks auth login --host https://<workspace-hostname>
  2. プロンプトが表示されたら、プロファイル名を入力し、後で使用するためにメモしておきます。defaultのプロファイル名は DEFAULT です。

  3. Python 3.12 以降のローカル環境があることを確認してから、依存関係をインストールします:

    Bash
    pip install -U "mcp>=1.9" "databricks-sdk[openai]" "mlflow>=3.1.0" "databricks-agents>=1.0.0" "databricks-mcp"

ツールの接続と一覧表示

サーバーURLを使用して DatabricksMCPClient を作成し、そのツールをリストします。同じクライアントが、管理対象、外部 (MCP サービス)、およびカスタムサーバーURLで機能します:

Python
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient

workspace_client = WorkspaceClient(profile="DEFAULT")
host = workspace_client.config.host

# Use a managed, MCP Service, or custom server URL:
mcp_server_url = f"{host}/api/2.0/mcp/functions/system/ai"

mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
tools = mcp_client.list_tools()
print(f"Available tools: {[t.name for t in tools]}")

ツールを直接呼び出すには:

Python
result = mcp_client.call_tool("system__ai__python_exec", {"code": "print('Hello, world!')"})
print(result.content)
注記

管理対象の system.ai ツールをランするには、ワークスペースで Serverless コンピュートが有効になっている必要があります。

認証

エージェントのランする場所と一致する認証方法を選択します。外部MCPサービスの場合、呼び出し元はサービスに対する EXECUTE も持っている必要があります。AI Gateway は、すべての呼び出しに対してこの権限を適用します。

OAuthを使用してワークスペースに認証し(「環境のセットアップ」を参照)、プロファイルをクライアントに渡します:

Python
workspace_client = WorkspaceClient(profile="DEFAULT")
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)

エージェントの構築

エージェントフレームワークを使用して、MCPサーバーのツールをエージェントに変換します。フレームワークをサーバーURLに向け、認証済みのWorkspaceClientを渡します。

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


async def main():
workspace_client = WorkspaceClient()
host = workspace_client.config.host

async with McpServer(
url=f"{host}/ai-gateway/mcp-services/main.default.github_mcp",
name="github-mcp",
workspace_client=workspace_client,
) as mcp_server:
agent = Agent(
name="Local agent",
instructions="You are a helpful assistant with access to external services.",
model="databricks-claude-sonnet-4-5",
mcp_servers=[mcp_server],
)
result = await Runner.run(agent, "List my open GitHub pull requests.")
print(result.final_output)


asyncio.run(main())

ノートブックの例

以下のノートブックでは、マネージド、外部、およびカスタムの MCP サーバー間で MCP ツールを呼び出す LangGraph および OpenAI エージェントを構築する方法を紹介します:

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

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

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

エージェントをデプロイ

Databricks では、エージェントを Databricks Apps にデプロイすることを推奨しています。これにより、エージェントコード、サーバー構成、および Git ベースのバージョン管理をフルマネージドで管理できます。または、Model Serving にデプロイします。

いずれを選択する場合でも、その MCP サーバーが依存するすべてのリソースへのアクセス権をエージェントに付与してください。例えば、Genie Agent 上の CAN_RUN や、AI Search インデックス上の SELECT などがあります。

エージェントが使用する各リソース(すべての MCP サーバーの背後にあるリソースを含む)を databricks.yml 内の resources.apps.<app>.resources で宣言し、バンドルをデプロイしてアプリの Databricks Service Principal にアクセス権を付与します。たとえば、マネージド Genie サーバーと AI Search サーバーを使用するエージェントの場合:

YAML
resources:
apps:
my_agent_app:
name: 'my-agent-app'
source_code_path: ./
resources:
- name: 'llm'
serving_endpoint:
name: 'databricks-claude-sonnet-4-5'
permission: 'CAN_QUERY'
- name: 'genie_space'
genie_space:
space_id: '<genie-space-id>'
permission: 'CAN_RUN'
- name: 'vector_index'
uc_securable:
securable_full_name: '<catalog>.<schema>.<index-name>'
securable_type: 'TABLE'
permission: 'SELECT'
Bash
databricks bundle deploy
databricks bundle run my_agent_app

完全なオーサリングおよびデプロイのワークフローについては、AIエージェントを作成してDatabricks Appsにデプロイするを参照してください。すべてのリソースタイプと権限値については、エージェントの認証を参照してください。

次のステップ