MCP APIおよびSDKリファレンス
MCPセットアップを自動化するには、これらの例を使用します。APIは、各MCPをMcpServiceリソースとして表します。ワークスペースUIについては、外部MCPサーバーを参照してください。アクセス制御とポリシーについては、MCPの管理を参照してください。
前提条件
- MCPサーバーのURLと認証詳細を用意するか、既存のHTTP接続を使用します。
- 操作の登録権限または更新・削除権限を確認してください。
- Databricks CLI または選択した SDK をインストールして認証します。SDK のスニペットでは、認証済みのワークスペースクライアントを前提としています。
main.default.my_mcp、接続名、および data-team を独自の値に置き換えます。CREATE MCP SERVICE などの SQL コマンドを使用した MCP の作成はサポートされていません。
API オペレーション
MCP REST APIはこれらの操作を提供します。各Linkに従って、フィールド、権限、および応答を確認してください。
ツールを発見して呼び出すには、MCP URL (https://<workspace-hostname>/ai-gateway/mcp-services/<catalog>.<schema>.<service>) を指定してMCPクライアントを使用します。これらの管理 APIs は、unity-catalog OAuth スコープを使用します。MCPツール呼び出しではai-gatewayを使用します。
接続を作成
MCP サーバーへのスキーマレベルの HTTP 接続を作成します。これらの例では、ベアラートークンを使用してhttps://mcp.example.com/mcpに接続します。OAuth およびその他の認証設定については、HTTP 接続の設定を参照してください。
RESTまたはCLIの場合、このリクエストを connection.json として保存し、URLとトークンをご利用のサーバーの値に置き換えます。この資格情報ファイルはソース管理の対象外にしてください。
{
"name": "my_connection",
"parent": "schemas/main.default",
"connection_type": "HTTP",
"options": {
"host": "https://mcp.example.com",
"port": "443",
"base_path": "/mcp",
"bearer_token": "<mcp-server-token>"
}
}
- REST API
- CLI
- Python SDK
Connections APIにリクエストを送信します。
databricks api post /api/2.1/unity-catalog/connections --json @connection.json
databricks connections create --json @connection.json
サーバーのベアラートークンを MCP_SERVER_TOKEN 環境変数で使用できるようにします。
import os
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import catalog as c
w = WorkspaceClient()
connection = w.connections.create(
name="my_connection",
parent="schemas/main.default",
connection_type=c.ConnectionType.HTTP,
options={
"host": "https://mcp.example.com",
"port": "443",
"base_path": "/mcp",
"bearer_token": os.environ["MCP_SERVER_TOKEN"],
},
)
接続のフルネームは main.default.my_connection です。以下の MCP を作成するときに、connections/main.default.my_connection として参照します。接続がすでに存在する場合は、その名前を使用してこのステップをスキップします。
MCPを作成する
MCP は既存の HTTP 接続を参照します。公開するツールを制限するには、 ツール選択を設定します。
- REST API
- CLI
- Terraform
- Bundles (Beta)
- Python SDK
- Go SDK
- Go Modular SDK
- Java SDK
- JS Modular SDK
/api/2.1/unity-catalog/mcp-services に POST を送信し、クエリーパラメーターとして parent と mcp_service_id を渡します。config.source_connection.name は、MCP サーバーへの Unity Catalog HTTP 接続を識別します。ツールを制限するには include_tool_selectors を設定し、すべてのツールを公開するには省略します。利用可能なツールの選択を参照してください。
databricks api post \
"/api/2.1/unity-catalog/mcp-services?parent=schemas/main.default&mcp_service_id=my_mcp" \
--json '{
"comment": "External MCP server",
"config": {
"source_connection": {
"name": "connections/main.default.my_connection"
}
}
}'
親スキーマと MCP 名を渡し、--json を使用して構成を指定します。ツールを制限するには include_tool_selectors を設定し、すべてのツールを公開する場合は省略します。
databricks ai-gateway create-mcp-service schemas/main.default my_mcp --json '{
"comment": "External MCP server",
"config": {
"source_connection": {
"name": "connections/main.default.my_connection"
}
}
}'
Databricks Terraform プロバイダーおよび databricks_ai_gateway_mcp_service リソースを使用して、MCP を作成および管理します:
resource "databricks_ai_gateway_mcp_service" "example" {
parent = "schemas/main.default"
mcp_service_id = "my_mcp"
comment = "External MCP server"
config = {
source_connection = {
name = "connections/main.default.my_connection"
}
}
}
バンドルでMCPを定義し、databricks bundle deployを使用してデプロイします。MCPリソースには、Databricks CLIバージョン 1.17.0 以降とdirectデプロイメント エンジンが必要です。
resources:
mcp_services:
my_mcp:
parent: schemas/main.default
mcp_service_id: my_mcp
comment: External MCP server
config:
source_connection:
name: connections/main.default.my_connection
Databricks SDK for Pythonを使用してMCPを作成および管理する:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import catalog as c
w = WorkspaceClient()
mcp_service = w.ai_gateway.create_mcp_service(
parent="schemas/main.default",
mcp_service_id="my_mcp",
mcp_service=c.McpService(
comment="External MCP server",
config=c.McpServiceConfig(
source_connection=c.McpServiceConfigSourceConnection(
name="connections/main.default.my_connection"
),
),
),
)
Databricks SDK for Goを使用してMCPを作成および管理します。
mcpService, err := w.AiGateway.CreateMcpService(ctx, catalog.CreateMcpServiceRequest{
Parent: "schemas/main.default",
McpServiceId: "my_mcp",
McpService: catalog.McpService{
Comment: "External MCP server",
Config: &catalog.McpServiceConfig{
SourceConnection: &catalog.McpServiceConfigSourceConnection{
Name: "connections/main.default.my_connection",
},
},
},
})
Databricks AI Gateway SDK for Go を使用して MCP サービスを作成および管理します。オプショナルフィールドはポインターであるため、この例では1行のヘルパー func ptr[T any](v T) *T { return &v } を使用しています。
mcpService, err := c.CreateMcpService(ctx, aigateway.CreateMcpServiceRequest{
Parent: ptr("schemas/main.default"),
McpServiceId: ptr("my_mcp"),
McpService: &aigateway.McpService{
Comment: ptr("External MCP server"),
Config: &aigateway.McpServiceConfig{
Source: &aigateway.McpServiceConfig_Source_SourceConnection{
SourceConnection: aigateway.McpServiceConfig_SourceConnection{
Name: ptr("connections/main.default.my_connection"),
},
},
},
},
})
Databricks SDK for Java を使用して、MCP を作成および管理します:
McpService mcpService =
w.aiGateway()
.createMcpService(
new CreateMcpServiceRequest()
.setParent("schemas/main.default")
.setMcpServiceId("my_mcp")
.setMcpService(
new McpService()
.setComment("External MCP server")
.setConfig(
new McpServiceConfig()
.setSourceConnection(
new McpServiceConfigSourceConnection()
.setName("connections/main.default.my_connection")))));
JavaScript SDK を使用して MCP を作成および管理します:
const created = await client.createMcpService({
parent: 'schemas/main.default',
mcpServiceId: 'my_mcp',
mcpService: {
comment: 'External MCP server',
config: {
source: {
$case: 'sourceConnection',
sourceConnection: { name: 'connections/main.default.my_connection' },
},
},
},
});
MCPを検索
アクセスできる MCP をスキーマに一覧表示し、リソース名で MCP の構成を取得します。組み込みの MCP の場合は、schemas/system.ai を親として使用します。
- REST API
- CLI
- Python SDK
databricks api get \
"/api/2.1/unity-catalog/mcp-services?parent=schemas/main.default&view=FULL"
databricks api get "/api/2.1/unity-catalog/mcp-services/main.default.my_mcp"
リスト応答に next_page_token が含まれる場合は、次のリクエストでそれを page_token として渡します。next_page_token が存在しないか空になるまで継続します。
databricks ai-gateway list-mcp-services --parent schemas/main.default --view FULL
databricks ai-gateway get-mcp-service mcp-services/main.default.my_mcp
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import catalog as c
w = WorkspaceClient()
for service in w.ai_gateway.list_mcp_services(
parent="schemas/main.default",
view=c.ListMcpServicesRequestView.FULL,
):
print(service.name)
service = w.ai_gateway.get_mcp_service(name="mcp-services/main.default.my_mcp")
リストの応答では default で BASIC ビューが使用され、ソース接続の詳細とレート制限のプリンシパル名が省略されます。それらのフィールドを含めるには、 FULL を使用します。CLI と Python イテレータがページネーションを処理します。
アクセス権を付与
これらの例では、MCP に対して EXECUTE を付与します。親権限を含む完全なアクセス要件については、MCP の共有を参照してください。
- REST API
- CLI
- Terraform
- Bundles (Beta)
- Python SDK
- Go SDK
- Java SDK
databricks api patch \
"/api/2.1/unity-catalog/permissions/mcp_service/main.default.my_mcp" \
--json '{
"changes": [
{ "principal": "data-team", "add": ["EXECUTE"] }
]
}'
Databricks CLI を使用して EXECUTE を付与します:
databricks grants update mcp_service main.default.my_mcp \
--json '{"changes": [{"principal": "data-team", "add": ["EXECUTE"]}]}'
Databricks Terraformプロバイダーとdatabricks_grantリソースを使用して、EXECUTEを付与します。
resource "databricks_grant" "example" {
mcp_service = "main.default.my_mcp"
principal = "data-team"
privileges = ["EXECUTE"]
}
アクセスを付与するには、バンドル内の MCP リソースに grants ブロックを追加して再デプロイします。
resources:
mcp_services:
my_mcp:
parent: schemas/main.default
mcp_service_id: my_mcp
comment: External MCP server
config:
source_connection:
name: connections/main.default.my_connection
grants:
- principal: data-team
privileges: [EXECUTE]
Databricks SDK for Python で EXECUTE を付与します。
from databricks.sdk.service import catalog as c
w.grants.update(
securable_type="mcp_service",
full_name="main.default.my_mcp",
changes=[c.PermissionsChange(principal="data-team", add=[c.Privilege.EXECUTE])],
)
Databricks SDK for Goを使用してEXECUTEを付与します:
_, err := w.Grants.Update(ctx, catalog.UpdatePermissions{
SecurableType: "mcp_service",
FullName: "main.default.my_mcp",
Changes: []catalog.PermissionsChange{{
Principal: "data-team",
Add: []catalog.Privilege{catalog.PrivilegeExecute},
}},
})
Databricks SDK for Javaを使用してEXECUTEを付与します。
w.grants().update(
new UpdatePermissions()
.setSecurableType("mcp_service")
.setFullName("main.default.my_mcp")
.setChanges(Arrays.asList(
new PermissionsChange().setPrincipal("data-team").setAdd(Arrays.asList(Privilege.EXECUTE)))));
プロバイダーのサインインを管理する
ユーザーごとの OAuth を使用する MCP の場合、各呼び出し元が外部プロバイダーにサインインします。対話型サインインについては、外部サービスのセットアップに従ってください。
資格情報 APIs はベータ版です。独自の OAuth フローに統合するには:
- OAuth 交換フィールド (
authorization_code、pkce_verifier、およびoauth_redirect_uri) を使用して 呼び出し元の資格情報を作成します。 - 資格情報のステータスを確認します。資格情報を使用可能にする前に、
provisioning_info.stateをACTIVEにする必要があります。NOT_FOUNDは、呼び出し元がまだ資格情報を持っていないことを意味します。 - サインアウトするには、呼び出し元の資格情報を削除します。
これらの操作により、呼び出し側のユーザーの認証情報が管理されます。呼び出し元には、MCP へのアクセスが必要です。
MCPを更新する
これらの例では、MCPのコメントを更新します。MCP名は変更できません。
update_mask を変更するフィールド(comment、config.source_connection.name、config.include_tool_selectors、config.rate_limits など)に設定します。config を使用すると、構成全体が置き換えられ、省略されたオプションフィールドがクリアされます。接続を変更する際、MCPの所有者には新しい接続に対する USE CONNECTION も必要となります。
条件付き更新を行うには、まずMCPを取得し、更新時にそのetagを渡します。更新は、その読み取り以降に MCP が変更されていない場合にのみ成功します。REST クエリー文字列に追加するときに、etagを URL エンコードします。
- REST API
- CLI
- Terraform
- Bundles (Beta)
- Python SDK
- Go SDK
- Go Modular SDK
- Java SDK
- JS Modular SDK
databricks api patch \
"/api/2.1/unity-catalog/mcp-services/main.default.my_mcp?update_mask=comment" \
--json '{"comment": "Updated: governs an MCP server"}'
databricks ai-gateway update-mcp-service mcp-services/main.default.my_mcp comment \
--json '{"comment": "Updated: governs an MCP server"}'
databricks_ai_gateway_mcp_serviceリソース上のcomment(またはその他の変更可能なフィールド)を編集し、再適用します。変更はその場で適用されます。
バンドルリソース内の comment(またはその他の変更可能なフィールド)を編集し、ラン databricks bundle deploy を実行します。変更はその場で適用されます。
from databricks.sdk.service import catalog as c
from databricks.sdk.common.types.fieldmask import FieldMask
updated = w.ai_gateway.update_mcp_service(
name="mcp-services/main.default.my_mcp",
update_mask=FieldMask(["comment"]),
mcp_service=c.McpService(comment="Updated: governs an MCP server"),
)
updated, err := w.AiGateway.UpdateMcpService(ctx, catalog.UpdateMcpServiceRequest{
Name: "mcp-services/main.default.my_mcp",
UpdateMask: *fieldmask.New([]string{"comment"}),
McpService: catalog.McpService{Comment: "Updated: governs an MCP server"},
})
mask, err := types.NewFieldMask[aigateway.McpService]("comment")
updated, err := c.UpdateMcpService(ctx, aigateway.UpdateMcpServiceRequest{
McpService: &aigateway.McpService{
Name: ptr("mcp-services/main.default.my_mcp"),
Comment: ptr("Updated: governs an MCP server"),
},
UpdateMask: mask,
})
McpService updated =
w.aiGateway()
.updateMcpService(
new UpdateMcpServiceRequest()
.setName("mcp-services/main.default.my_mcp")
.setUpdateMask(FieldMask.newBuilder().addPaths("comment").build())
.setMcpService(new McpService().setComment("Updated: governs an MCP server")));
import { mcpServiceFieldMask } from '@databricks/sdk-aigateway/v1';
const updated = await client.updateMcpService({
mcpService: {
name: 'mcp-services/main.default.my_mcp',
comment: 'Updated: governs an MCP server',
},
updateMask: mcpServiceFieldMask('comment'),
});
例: ツール選択の更新
名前が get_ で始まるツールのみを公開するには:
databricks api patch \
"/api/2.1/unity-catalog/mcp-services/main.default.my_mcp?update_mask=config.include_tool_selectors" \
--json '{
"config": {
"include_tool_selectors": ["get_*"]
}
}'
空の include_tool_selectors リストでは、すべてのツールが公開されます。UI のステップについては、利用可能なツールの選択を参照してください。
MCPの削除
削除する予定のMCPのみを削除してください。そのURLで構成されたクライアントからは呼び出すことができなくなります。
また、MCPの現在のetagを渡して、最後の読み取り以降に変更されていない場合にのみ削除を実行するように条件付けることもできます。RESTクエリー文字列のetagをURLエンコードします。
- REST API
- CLI
- Terraform
- Bundles (Beta)
- Python SDK
- Go SDK
- Go Modular SDK
- Java SDK
- JS Modular SDK
databricks api delete "/api/2.1/unity-catalog/mcp-services/main.default.my_mcp"
databricks ai-gateway delete-mcp-service mcp-services/main.default.my_mcp
構成からMCPリソースを削除し、terraform applyのランを実行します。適用する前に計画を確認してください。
バンドルから MCP リソースを削除し、databricks bundle deploy を実行します。適用する前にデプロイメントの変更内容を確認してください。
w.ai_gateway.delete_mcp_service(name="mcp-services/main.default.my_mcp")
err := w.AiGateway.DeleteMcpService(ctx, catalog.DeleteMcpServiceRequest{
Name: "mcp-services/main.default.my_mcp",
})
err := c.DeleteMcpService(ctx, aigateway.DeleteMcpServiceRequest{
Name: ptr("mcp-services/main.default.my_mcp"),
})
w.aiGateway().deleteMcpService(new DeleteMcpServiceRequest().setName("mcp-services/main.default.my_mcp"));
await client.deleteMcpService({ name: 'mcp-services/main.default.my_mcp' });