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

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

カスタムまたはサードパーティのMCPサーバーをDatabricksアプリとしてホストします。カスタムMCPサーバーは、デプロイするMCPサーバーがすでに存在する場合、サードパーティのMCPサーバーをツールのソースとしてランする場合、または既存のREST APIをMCPツールとしてラップする場合に役立ちます。

カスタム MCP サーバーへのアクセスは、Databricks Apps の権限を通じて制御されます。他の MCP サーバーや LLM Endpoint と併せてカスタム MCP アクティビティを監視するには、Unity Gateway を使用します。

エージェントコードでホストされたカスタムMCPサーバーを使用するには、カスタムエージェントでのMCPサーバーの使用を参照してください。

要件​

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

組み込みのHello World MCP Server Templateを使用して、サンプルツールが既に含まれているMCPサーバーを作成およびデプロイします:

  1. サイドバーで、 コンピュート をクリックします。

  2. [ Apps ] tabをクリックします。

  3. 「 アプリを作成 」をクリックします。

  4. [Agents] カテゴリで、 [MCP Server - Hello World] Templateを選択します。

  5. mcp- で始まるアプリ名を入力します(例:mcp-hello-world)。

注記

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

  1. 「 アプリを作成 」をクリックします。

Databricksは、カスタマイズ可能なサンプルコードを含むアプリをデプロイします。

このTemplateには、作業を起動するための2つのサンプルツールが含まれています:

  • health() : サーバーが動作中であることを確認し、ステータス情報を返す診断ツール。
  • get_current_user() : Databricks SDK を使用して現在のユーザーの情報を取得し、ワークスペース認証を統合する方法を示すツール。

カスタムツールを追加​

独自のツールを追加するには、アプリのソースコードを開き、@mcp.tool()デコレータを使用して新しい関数を定義します。たとえば、次のツールは文字列を大文字に変換します:

Python
@mcp.tool()
def uppercase(text: str) -> str:
"""Convert a string to uppercase."""
return text.upper()

各ツールはドキュメント文字列を含める必要があります。エージェントはドキュメント文字列を使用して、いつツールを呼び出すかを理解します。ツールを追加した後、アプリを再デプロイして利用可能にします。

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

AppsテンプレートからREST APIをMCPサーバーとしてラップする​

カスタムツールコードを記述することなく、任意の REST API を MCP ツールとして公開するには、組み込みの MCP Server (OpenAPI) Template を使用します。API を記述する OpenAPI 仕様と、それに対して認証を行う Unity Catalog 接続を提供すると、サーバーによって API の操作が任意のエージェントが呼び出せるツールに変換されます。

このTemplateは、3つのツールを備えたMCPサーバーをデプロイします:

  • list_api_endpoints : OpenAPI 仕様で定義されている Endpoint を一覧表示します。
  • get_api_endpoint_schema : 特定のEndpointのリクエストおよびレスポンススキーマを返します。
  • invoke_api_endpoint :指定されたパラメーターを使用してEndpointを呼び出し、レスポンスを返します。

エージェントはlist_api_endpointsとget_api_endpoint_schemaを呼び出してAPI提供内容を確認し、その後invoke_api_endpointを呼び出して操作を実行します。

前提条件​

アプリを作成する前に、次の情報を収集してください。

  • JSON形式のREST API用のOpenAPI 3.x仕様。
  • 仕様ファイルを保存するUnity Catalogボリューム。Unity Catalogボリュームとはを参照してください。
  • API に対する認証を行う Unity Catalog HTTP 接続。この接続は、ベアラー トークン、OAuth マシン間 (M2M)、および OAuth ユーザーマシン間 (U2M) 認証をサポートしています。作成するには、外部サービスへの接続を作成するを参照してください。接続を作成するには CREATE CONNECTION 権限が必要です。持っていない場合は、ワークスペース管理者に接続の作成を依頼してください。

仕様は、JSON形式の有効なOpenAPI 3.xドキュメントである必要があります。最低限、serversの下にAPIのベースURLを、pathsの下に公開する操作を宣言します。

JSON
{
"openapi": "3.1.0",
"info": { "title": "Example API", "version": "1.0.0" },
"servers": [{ "url": "https://api.example.com" }],
"paths": {
"/widgets": {
"get": {
"summary": "List widgets",
"responses": { "200": { "description": "A list of widgets" } }
}
}
}
}

MCPサーバーを作成する​

  1. OpenAPI 仕様を Unity Catalog ボリュームに upload します。default では、template はボリュームのルートから spec.json を読み取ります。

  2. サイドバーで、 コンピュート をクリックします。

  3. [ Apps ] tabをクリックします。

  4. 「 アプリを作成 」をクリックします。

  5. Agents カテゴリで、 MCP Server (OpenAPI) Templateを選択します。

  6. Unity Catalogボリュームリソースの場合は、仕様ファイルが含まれているボリュームを選択します。See Add リソース to a Databricks app.

  7. mcp- で始まるアプリ名を入力します(例:mcp-my-api)。

注記

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

  1. 「 アプリを作成 」をクリックします。

仕様と接続を設定する​

Databricks がアプリをデプロイした後、app.yaml ファイルで次の 環境変数を設定し、アプリを再デプロイします。

  • SPEC_FILE_NAME : Unity Catalogボリュームのルートを基準とした、OpenAPI仕様ファイルのパス。defaultはspec.jsonです。
  • UC_CONNECTION_NAME : サーバーがAPIに対する認証に使用するUnity Catalog HTTP接続の名前。

アプリの再デプロイ後、MCP サーバー Endpoint は https://<app-url>/mcp で利用できるようになります。エージェント コードからサーバーを呼び出すには、Use MCP servers in Custom Agents を参照してください。Claude や Cursor などの外部クライアントを接続するには、Connect MCPs to AI assistants and coding agents を参照してください。

実装の詳細については、GitHub上のTemplateソースコードを参照してください。

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

既存のPython MCPサーバーをDatabricksアプリとしてホストするには、以下のステップに従ってください。

環境をセットアップする​

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

  1. ローカルターミナルで次のコマンドをランします:

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

MCPサーバーのセットアップ​

MCPサーバーをデプロイする際は、依存関係の管理と統合ツールとして uv を使用してください。

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

    uv プロジェクト構成で定義された追加の依存関係のインストールを処理します。

    Txt
    uv

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

    例 pyproject.toml:

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

    この例では:

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

    defaultでは、Databricks アプリはポート 8000 でリッスンします。サーバーが別のポートでリッスンしている場合は、app.yaml ファイル内の 環境変数の上書きを使用して設定します。

    例 app.yaml:

    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アプリを作成します:

    Bash
    databricks apps create mcp-my-server
注記

MCPサーバーとして明確に識別できるように、アプリ名の先頭にmcp-を付けます。この命名規則は、ワークスペース内での検出可能性と整理に役立ちます。

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

    Bash
    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 サーバーの Endpoint は https://<app-url>/mcp で利用可能です。

価格​

カスタム MCP サーバーには、Databricks Apps の価格が適用されます。

その他のリソース​