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

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

カスタム MCP サーバーへのアクセスは、 Databricks Apps のアクセス許可によって制御されます。 他の MCP サーバーと LLM エンドポイントと共にカスタム MCP アクティビティを監視するには、 AI Gateway を使用します。

Requirements

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

カスタム MCP サーバーを作成またはデプロイする

開始点に一致するオプションを選択します。

[新しいファイル] アイコン。 テンプレートから作成する: 新しい MCP サーバーをゼロから構築する

アプリ テンプレートからカスタム MCP サーバーを作成する

組み込みの Hello World MCP サーバー テンプレートを使用して、既に含まれているサンプル ツールを使用して MCP サーバーを作成して展開します。

  1. サイドバーで、[コンピューティング] をクリックします。

  2. [ アプリ ] タブをクリックします。

  3. [ アプリの作成] をクリックします。

  4. Agents カテゴリで、MCP サーバー - Hello World テンプレートを選択します。

  5. mcp-で始まるアプリ名 (たとえば、mcp-hello-world) を入力します。

    アプリ名は、 mcp- で始まる必要があります。これは、AI Playground で MCP サーバーとして認識されます。

  6. [ アプリの作成] をクリックします。

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()

各ツールには docstring を含める必要があります。 AI エージェントは docstring を使用して、ツールを呼び出すタイミングを理解します。 ツールを追加した後、アプリを再デプロイして使用できるようにします。

アプリ テンプレートの操作の詳細については、「テンプレートからアプリを作成する」を参照するか、GitHub のテンプレート ソース コードを参照してください。

クラウド アップロード アイコン。 既存のサーバーをデプロイする: 既存の MCP サーバーを Databricks アプリとしてデプロイする

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

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

環境を設定する

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

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

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

MCP サーバーを設定する

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

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

    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 mcp-my-server
    

    MCP サーバーとして明確に識別するには、アプリ名に mcp- のプレフィックスを付けます。 この名前付け規則は、ワークスペース内の検出可能性と編成に役立ちます。

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

    DATABRICKS_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 サーバーに接続する方法を確認します。

ローカル環境

「環境のセットアップ」の説明に従って、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 ツール呼び出しエージェント

ノートブックを入手

次のステップ

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

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