Databricks アプリを使用してカスタム MCP サーバーをホストする
ベータ版
この機能は ベータ版です。
独自のカスタム MCP サーバーまたはサードパーティの MCP サーバーを Databricks アプリとしてホストします。カスタム MCP サーバーは、展開する MCP サーバーが既にある場合、またはサードパーティの MCP サーバーをツールのソースとして実行する場合に便利です。
必要条件
- Databricks アプリとしてホストされている MCP サーバーは、 ストリーミング可能な HTTP トランスポートなどの HTTP 互換トランスポートを実装する必要があります。
MCP サーバーを Databricks アプリとしてホストする
独自の MCP サーバーを作成し、Databricks アプリとしてデプロイする例については、 カスタム MCP サーバー リポジトリ を参照してください。
既存の Python MCP サーバーを Databricks アプリとしてホストするには、次の手順に従います。
環境を設定する
MCP サーバーを展開する前に、OAuth を使用してワークスペースに認証します。
-
ローカルターミナルで次のコマンドを実行します。
Bashdatabricks auth login --host https://<your-workspace-hostname>
MCP サーバーをセットアップする
-
MCP サーバーのルート ディレクトリに
requirements.txtを追加し、サーバーの Python 依存関係を指定します。サーバーがパッケージ管理にuv を使用する場合は、requirements.txt に
uvを追加すると、追加の依存関係のインストールが処理されます。 -
MCP サーバーを実行するための CLI コマンドを指定する
app.yamlを追加します。デフォルトでは、Databricks アプリはポート 8000 でリッスンします。サーバーが別のポートをリッスンする場合は、
app.yamlファイル内の環境変数オーバーライドを使用して設定します。app.yaml例:YAMLcommand: [
'uv',
'run',
'your-server-name',
..., # optionally include additional parameters here
]
MCPサーバーをDatabricksアプリとしてデプロイする
-
MCP サーバーをホストする Databricks アプリを作成します。
Bashdatabricks apps create mcp-my-custom-server -
ソース コードを Databricks にアップロードし、
app.yamlファイルを含むディレクトリから次のコマンドを実行してアプリをデプロイします。BashDATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
databricks sync . "/Users/$DATABRICKS_USERNAME/mcp-my-custom-server"
databricks apps deploy mcp-my-custom-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/mcp-my-custom-server"
カスタム MCP サーバーに接続する
タブをクリックすると、さまざまな環境から MCP サーバーに接続する方法が表示されます。
- Local environment
- Notebook (service principal)
- Agent code (on-behalf-of-user)
- Agent code (service principal)
「環境を設定する」の説明に従って、OAuth を使用してワークスペースに認証します。
次の例は、カスタム MCP サーバーに接続し、使用可能なツールを一覧表示する方法を示しています。
from databricks_mcp import DatabricksOAuthClientProvider
from databricks.sdk import WorkspaceClient
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client
databricks_cli_profile = "DEFAULT"
workspace_client = WorkspaceClient(profile=databricks_cli_profile)
# Replace with your actual custom MCP server URL
mcp_server_url = "https://<workspace-hostname>/serving-endpoints/mcp-my-custom-server/invocations"
async def test_connection_to_server():
async with streamablehttp_client(
f"{mcp_server_url}", auth=DatabricksOAuthClientProvider(workspace_client)
) as (read_stream, write_stream, _), ClientSession(
read_stream, write_stream
) as session:
# List available tools
tools = await session.list_tools()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
サービスプリンシパルを使用して、DatabricksノートブックでホストされたDatabricksアプリにアクセスします。
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
async def main():
app_url = "https://mcp-server.databricksapps.com/mcp"
client = WorkspaceClient(
host="https://workspace_url",
client_id="client_id",
client_secret="client_secret"
)
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()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
ユーザーに代わっての認証を設定します。「ユーザー代理認証」を参照してください。
次の例は、 ModelServingUserCredentials使用してユーザーに代わってアクセスを有効にし、エージェントからホストされた Databricks アプリにアクセスする方法を示しています。
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
async def main():
app_url = "https://mcp-server.databricksapps.com/mcp"
client = WorkspaceClient(credentials_strategy = ModelServingUserCredentials())
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()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
apps.appsスコープを使用してエージェントモデルをログに記録します。「 ユーザー代理認証」を参照してください。
サービスプリンシパルを使用してシステム認証を有効にし、エージェントからホストされているDatabricksアプリにアクセスします。
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://mcp-server.databricksapps.com/mcp"
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()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
DatabricksAppsをリソースとして使用してエージェントモデルをログに記録します。自動認証パススルーを参照してください。
サンプルノートブック: Databricks MCP サーバーを使用してエージェントを構築する
次のノートブックは、Databricks アプリでホストされているカスタム MCP サーバーを使用して MCP ツールを呼び出す LangGraph および OpenAI エージェントを作成する方法を示しています。
LangGraph MCPツール呼び出しエージェント
OpenAI MCP ツール呼び出しエージェント
Additional リソース
アプリのクックブックには、MCP サーバーをさまざまなフレームワークと統合するためのエンドツーエンドのコード例が記載されています。
完全なソース コードと追加の例については、 Databricks Apps クックブック リポジトリを参照してください。