Databricks アプリを使用してカスタム MCP サーバーをホストする
カスタムまたはサードパーティの MCP サーバーをDatabricks アプリとしてホストします。カスタム MCP サーバーは、展開する MCP サーバーが既にある場合、またはサードパーティの MCP サーバーをツールのソースとして実行する場合に便利です。
必要条件
- Databricks アプリとしてホストされている MCP サーバーは、 ストリーミング可能な HTTP トランスポートなどの HTTP 互換トランスポートを実装する必要があります。
カスタムMCPサーバーを作成またはデプロイする
出発点に合ったオプションを選択してください。
テンプレートから作成 :MCPサーバーをゼロから構築する
アプリテンプレートからカスタムMCPサーバーを作成する
組み込みの「Hello World MCP Server」テンプレートを使用して、サンプルツールが既に含まれているMCPサーバーを作成およびデプロイします。
-
サイドバーで、 コンピュート をクリックします。
-
「 アプリ」 タブをクリックしてください。
-
「アプリを作成」 をクリックします。
-
「 エージェント」 カテゴリで、 「Hello World MCP Server」 テンプレートを選択します。
-
mcp-で始まるアプリ名を入力してください(例:mcp-hello-world)。
AI PlaygroundでMCPサーバーとして認識されるには、アプリ名がmcp-で始まる必要があります。
- 「アプリを作成」 をクリックします。
Databricksは、カスタマイズ可能なサンプルコードとともにアプリをデプロイします。
テンプレートには、すぐに使い始められるように2つのサンプルツールが含まれています。
health(): サーバーが動作していることを確認し、ステータス情報を返す診断ツール。get_current_user(): Databricks SDK を使用して現在のユーザーの情報を取得するツール。ワークスペース認証を統合する方法を示します。
カスタムツールを追加する
独自のツールを追加するには、アプリのソースコードを開き、 @mcp.tool()デコレータを使用して新しい関数を定義します。例えば、次のツールは文字列を大文字に変換します。
@mcp.tool()
def uppercase(text: str) -> str:
"""Convert a string to uppercase."""
return text.upper()
各ツールにはドキュメント文字列を含める必要があります。AIエージェントは、ドキュメント文字列を使用して、ツールを呼び出すタイミングを理解します。ツールを追加したら、アプリを再デプロイして利用可能にしてください。
アプリテンプレートの操作方法の詳細については、 「テンプレートからアプリを作成する」を参照するか、 GitHub でテンプレートのソースコードを参照してください。
既存サーバーのデプロイ :既存のMCPサーバーをDatabricksアプリとしてデプロイします。
既存のMCPサーバーをDatabricksアプリとしてホストする
既存の Python MCP サーバーを Databricks アプリとしてホストするには、次の手順に従います。
環境を設定する
MCP サーバーを展開する前に、OAuth を使用してワークスペースに認証します。
-
ローカルターミナルで次のコマンドを実行します。
Bashdatabricks auth login --host https://<your-workspace-hostname>
MCP サーバーをセットアップする
MCP サーバーを展開するときに、依存関係の管理と統合ツールにuv を使用します。
-
MCP サーバーのルート ディレクトリに
requirements.txtを追加し、依存関係としてuvを含めます。uvプロジェクト構成で定義された追加の依存関係のインストールを処理します。Txtuv -
サーバーのスクリプト エントリ ポイントを定義する
pyproject.tomlファイルを作成します。pyproject.toml例:Toml[project.scripts]
custom-server = "server.main:main"この例では、
custom-server使用するスクリプト名ですuv runserver.main:main実行するモジュールパス(server/main.py)と関数(main)を指定します
-
uv runを使用して MCP サーバーを実行するための CLI コマンドを指定するapp.yamlファイルを追加します。デフォルトでは、Databricks アプリはポート 8000 でリッスンします。サーバーが別のポートをリッスンする場合は、
app.yamlファイル内の環境変数オーバーライドを使用して設定します。app.yaml例:YAMLcommand: [
'uv',
'run',
'custom-server', # This must match a script defined in pyproject.toml
]
uv run custom-server実行すると、uv はスクリプト定義を検索し、モジュール パスを見つけて、 main()関数を呼び出します。
MCPサーバーをDatabricksアプリとしてデプロイする
-
MCP サーバーをホストする Databricks アプリを作成します。
Bashdatabricks apps create mcp-my-server
アプリ名の前にmcp-を付けることにより、それがMCPサーバーであることを明確に識別できます。この命名規則は、ワークスペース内での発見と整理に役立ちます。
-
ソース コードを Databricks にアップロードし、
app.yamlファイルを含むディレクトリから次のコマンドを実行してアプリをデプロイします。BashDATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
databricks sync . "/Users/$DATABRICKS_USERNAME/mcp-my-server"
databricks apps deploy mcp-my-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/mcp-my-server"
デプロイしたアプリのURLを見つける
デプロイ後、Databricks UI でアプリの URL を見つけることができます。MCP サーバー エンドポイントはhttps://<app-url>/mcpで利用可能です。
カスタム MCP サーバーに接続する
タブをクリックすると、さまざまな環境から MCP サーバーに接続する方法が表示されます。
- Local environment
- Notebook (service principal)
- Agent code (on-behalf-of-user)
- Agent code (service principal)
「環境を設定する」の説明に従って、OAuth を使用してワークスペースに認証します。
次の例は、カスタム MCP サーバーに接続し、使用可能なツールを一覧表示する方法を示しています。
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
# Example: https://mcp-my-server-6051921418418893.aws.databricksapps.com/mcp
mcp_server_url = "https://<app-url>/mcp"
databricks_cli_profile = "DEFAULT"
workspace_client = WorkspaceClient(profile=databricks_cli_profile)
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
サービスプリンシパルを使用して、 DatabricksノートブックでホストされているDatabricksアプリにアクセスします。 以下に示すようにクライアントシークレット値を直接渡すか、 Databricksシークレットを使用して認証情報を安全に取得します。例えば: client_id=dbutils.secrets.get(scope="my-scope", key="client-id") 。
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"
workspace_client = WorkspaceClient(
host="<workspace-url>",
client_id="<client-id>",
client_secret="<client-secret>"
)
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
ユーザーに代わっての認証を設定します。「ユーザー代理認証」を参照してください。
次の例は、 ModelServingUserCredentials使用してユーザーに代わってアクセスを有効にし、エージェントからホストされた Databricks アプリにアクセスする方法を示しています。
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
from databricks.sdk.credentials_provider import ModelServingUserCredentials
# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"
workspace_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
appsスコープを使用してエージェントモデルをログに記録します。「 ユーザー代理認証」を参照してください。
サービスプリンシパルを使用してシステム認証を有効にし、エージェントからホストされているDatabricksアプリにアクセスします。
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"
workspace_client = WorkspaceClient()
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
DatabricksAppsをリソースとして使用してエージェントモデルをログに記録します。自動認証パススルーを参照してください。
サンプルノートブック: Databricks MCP サーバーを使用してエージェントを構築する
次のノートブックは、Databricks アプリでホストされているカスタム MCP サーバーを使用して MCP ツールを呼び出す LangGraph および OpenAI エージェントを作成する方法を示しています。
LangGraph MCPツール呼び出しエージェント
OpenAI MCP ツール呼び出しエージェント
次のステップ
- エージェントを外部サービスに接続する方法については、マネージドOAuthやUC接続プロキシなど、エージェントを外部サービスに接続するためのすべての方法の概要を参照してください。
アプリのクックブックには、MCP サーバーをさまざまなフレームワークと統合するためのエンドツーエンドのコード例が記載されています。
完全なソース コードと追加の例については、 Databricks Apps クックブック リポジトリを参照してください。