次の方法で共有


Databricks アプリを使用してカスタム MCP サーバーをホストする

独自のカスタムまたはサードパーティの MCP サーバーを Databricks アプリとしてホストします。 カスタム MCP サーバーは、デプロイする MCP サーバーが既にある場合や、ツールのソースとしてサードパーティの MCP サーバーを実行する場合に便利です。

Requirements

  • Databricks アプリとしてホストされる MCP サーバーは、 ストリーミング可能な HTTP トランスポートなどの HTTP 互換トランスポートを実装する必要があります。

MCP サーバーを Databricks アプリとしてホストする

独自の MCP サーバーを記述し、Databricks アプリとしてデプロイする例については、 GitHub - カスタム MCP サーバー テンプレートを参照してください。

既存の Python MCP サーバーを Databricks アプリとしてホストするには、次の手順に従います。

環境を設定する

MCP サーバーをデプロイする前に、OAuth を使用してワークスペースに対して認証を行います。

  1. ローカル ターミナルで次を実行します。

    databricks auth login --host https://<your-workspace-hostname>
    

MCP サーバーを設定する

MCP サーバーをデプロイするときに、依存関係管理と統合ツールに uv を使用します。

  1. MCP サーバーのルート ディレクトリに requirements.txt を追加し、依存関係として uv を含めます。

    requirements.txtに uv を追加すると、プロジェクト構成で定義されている追加の依存関係のインストールが処理されます。

    uv
    
    
  2. サーバーのスクリプト エントリ ポイントを定義する pyproject.toml ファイルを作成します。

    pyproject.toml例:

    [project.scripts]
    custom-server = "server.main:main"
    

    この例では:

    • custom-server は、使用するスクリプト名です。 uv run
    • server.main:main は、実行するモジュール パス (server/main.py) と関数 (main) を指定します
  3. app.yamlを使用して MCP サーバーを実行する CLI コマンドを指定するuv run ファイルを追加します。

    既定では、Databricks アプリはポート 8000 でリッスンします。 サーバーが別のポートでリッスンする場合は、 ファイルのapp.yamlを使用して設定します。

    app.yaml例:

    command: [
        'uv',
        'run',
        'custom-server', # This must match a script defined in pyproject.toml
      ]
    

uv run custom-serverを実行すると、uv はスクリプト定義を検索し、モジュール パスを検索して、main()関数を呼び出します。

MCP サーバーを Databricks アプリとしてデプロイする

  1. MCP サーバーをホストする Databricks アプリを作成します。

    databricks apps create custom-mcp-server
    
  2. ソース コードを Databricks にアップロードし、 app.yaml ファイルを含むディレクトリから次のコマンドを実行してアプリをデプロイします。

    DATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
    databricks sync . "/Users/$DATABRICKS_USERNAME/custom-mcp-server"
    databricks apps deploy custom-mcp-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/custom-mcp-server"
    

デプロイされたアプリの URL を見つける

デプロイ後、Databricks UI でアプリの URL を見つけることができます。 MCP サーバー エンドポイントは、 https://<app-url>/mcpで使用できます。

カスタム MCP サーバーに接続する

タブをクリックして、さまざまな環境から MCP サーバーに接続する方法を確認します。

ローカル環境

「環境のセットアップ」の説明に従って、OAuth を使用してワークスペースに対 して認証を行います。

次の例は、カスタム MCP サーバーに接続し、使用可能なツールを一覧表示する方法を示しています。

from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient

# Replace with your deployed app URL
# Example: https://custom-mcp-server-6051921418418893.staging.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 アプリにアクセスします。

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.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 ツール呼び出しエージェント

ノートブックを入手

その他のリソース

このアプリクックブックには、MCP サーバーをさまざまなフレームワークと統合するためのエンドツーエンドのコード例が用意されています。

完全なソース コードとその他の例については、 Databricks Apps Cookbook リポジトリを参照してください。