独自のMCPサーバーをホストする
カスタムまたはサードパーティのMCPサーバーをDatabricksアプリとしてホストします。カスタムMCPサーバーは、デプロイするMCPサーバーがすでに存在する場合、サードパーティのMCPサーバーをツールのソースとしてランする場合、または既存のREST APIをMCPツールとしてラップする場合に役立ちます。
カスタム MCP サーバーへのアクセスは、Databricks Apps の権限を通じて制御されます。他の MCP サーバーや LLM Endpoint と併せてカスタム MCP アクティビティを監視するには、Unity Gateway を使用します。
エージェントコードでホストされたカスタムMCPサーバーを使用するには、カスタムエージェントでのMCPサーバーの使用を参照してください。
要件
- Databricks アプリとしてホストされる MCP サーバーは、ストリーミング可能な HTTP トランスポートなど、HTTP 互換のトランスポートを実装する必要があります。
AppsテンプレートからカスタムMCPサーバーを作成する
組み込みのHello World MCP Server Templateを使用して、サンプルツールが既に含まれているMCPサーバーを作成およびデプロイします:
-
サイドバーで、 コンピュート をクリックします。
-
[ Apps ] tabをクリックします。
-
「 アプリを作成 」をクリックします。
-
[Agents] カテゴリで、 [MCP Server - Hello World] Templateを選択します。
-
mcp-で始まるアプリ名を入力します(例:mcp-hello-world)。
AI Playground で MCP サーバーとして認識されるには、アプリ名が mcp- で起動する必要があります。
- 「 アプリを作成 」をクリックします。
Databricksは、カスタマイズ可能なサンプルコードを含むアプリをデプロイします。
このTemplateには、作業を起動するための2つのサンプルツールが含まれています:
health(): サーバーが動作中であることを確認し、ステータス情報を返す診断ツール。get_current_user(): Databricks SDK を使用して現在のユーザーの情報を取得し、ワークスペース認証を統合する方法を示すツール。
カスタムツールを追加
独自のツールを追加するには、アプリのソースコードを開き、@mcp.tool()デコレータを使用して新しい関数を定義します。たとえば、次のツールは文字列を大文字に変換します:
@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の下に公開する操作を宣言します。
{
"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サーバーを作成する
-
OpenAPI 仕様を Unity Catalog ボリュームに upload します。default では、template はボリュームのルートから
spec.jsonを読み取ります。 -
サイドバーで、 コンピュート をクリックします。
-
[ Apps ] tabをクリックします。
-
「 アプリを作成 」をクリックします。
-
Agents カテゴリで、 MCP Server (OpenAPI) Templateを選択します。
-
Unity Catalogボリュームリソースの場合は、仕様ファイルが含まれているボリュームを選択します。See Add リソース to a Databricks app.
-
mcp-で始まるアプリ名を入力します(例:mcp-my-api)。
AI Playground で MCP サーバーとして認識されるには、アプリ名が mcp- で起動する必要があります。
- 「 アプリを作成 」をクリックします。
仕様と接続を設定する
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を使用してワークスペースへの認証を行います。
-
ローカルターミナルで次のコマンドをランします:
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ファイルを追加します。defaultでは、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-を付けます。この命名規則は、ワークスペース内での検出可能性と整理に役立ちます。
-
app.yamlファイルを含むディレクトリから次のコマンドを実行して、ソースコードを Databricks に upload し、アプリをデプロイします。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 サーバーの Endpoint は https://<app-url>/mcp で利用可能です。
価格
カスタム MCP サーバーには、Databricks Apps の価格が適用されます。
その他のリソース
- エージェントでカスタムMCPサーバーを使用することで、ノートブック、ローカル環境、エージェントコードからホストされたサーバーに接続できます。
- Claude、Cursor、MCP Inspector、その他の外部クライアントをセットアップするには、MCP を AI アシスタントおよびコーディングエージェントに接続します。