動的なツール登録¶
動的なツール登録により、MCPサーバーはDataRobotのデプロイを検出し、それらをMCPツールとして自動的に公開できます。 ツールが呼び出されると、サーバーはリクエストを登録済みのデプロイに転送します。
この機能は、DataRobot MCPのテンプレートやDataRobot Agentic Starterのテンプレートを使用して構築されたMCPサーバーで利用できます。 MCPサーバーの設定とエージェントの統合については、MCPサーバーを使用してツールを統合するを参照してください。
クイックスタート¶
- モデルまたはサービスをDataRobotにデプロイします。
- デプロイに、タグ名とタグ値の両方を
toolとして設定します。 - 必要に応じて、動的なツール登録を有効にしてサーバーを起動します。
起動時の自動検出を有効にするには(オプション):
MCP_SERVER_REGISTER_DYNAMIC_TOOLS_ON_STARTUP=true
ほとんどのデプロイタイプでは、追加の設定は必要ありません。
サポートされているデプロイのタイプ¶
| デプロイのタイプ | 必要な設定 |
|---|---|
| DataRobotのネイティブ予測モデル | なし。 デプロイにtoolというタグを付けます。 |
| DRUMの構造化予測 | なし。 必要に応じて、model-metadata.yaml内でinputSchemaを定義します。 |
| DRUMのエージェントワークフロー | なし。 必要に応じて、model-metadata.yaml内でinputSchemaを定義します。 |
| DRUMの非構造化モデル | model-metadata.yaml内でinputSchemaを定義します。 |
| FastAPIサービスなどのカスタムサーバー | ツールのメタデータを含む/info/エンドポイントを公開します。 |
動的なツール登録によって他のMCPサーバーをツールとして登録することはサポートされていません。
登録の要件¶
すべてのデプロイは、以下の条件を満たす必要があります。
- アクティブであること。
- 名前と値の両方に
toolというタグが付けられていること。
その他の要件は、デプロイのタイプによって異なります。
- DataRobotのネイティブモデル:追加の要件はありません。
- DRUMの非構造化モデル:
model-metadata.yaml内でinputSchemaを定義してください。 - カスタムサーバー:
/info/を公開し、endpoint、method、およびinput_schemaを返してください。
ランタイムAPI¶
実行時に登録を管理するには、MCPサーバーでこれらのエンドポイントを使用します。
GET /registeredDeployments:登録済みのツールを一覧表示します。PUT /registeredDeployments/{deployment_id}:ツールを登録します。DELETE /registeredDeployments/{deployment_id}:ツールを削除します。
たとえば、GET /registeredDeploymentsエンドポイントは次のように実装できます。
@mcp.custom_route(prefix_mount_path("/registeredDeployments"), methods=["GET"])
async def list_deployments(_: Request) -> JSONResponse:
"""List all deployments."""
try:
deployments = await get_registered_tool_deployments()
formatted_deployments = [
{"deploymentId": k, "toolName": v} for k, v in deployments.items()
]
return JSONResponse(
status_code=HTTPStatus.OK,
content={
"deployments": formatted_deployments,
"count": len(deployments),
},
)
except Exception as e:
return JSONResponse(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
content={"error": f"Failed to retrieve deployments: {str(e)}"},
)
DRUMのデプロイ¶
DataRobot DRUMのデプロイは、通常、追加の設定をほとんど、あるいはまったく行わなくても正常に動作します。
ゼロ設定(ほとんどの場合)¶
これらのデプロイタイプについては、デプロイにtoolというタグを付けると、サーバーが自動的に登録します。
- 二値モデル、連続値モデル、多クラスモデルなどの構造化予測。
- エージェントのワークフロー。
- DataRobotのネイティブ予測モデル。
非構造化モデル¶
ターゲットタイプがunstructuredの場合は、model-metadata.yamlにinputSchemaを追加します。
name: "Fetch dataset"
description: "Fetches a dataset from DataRobot Data Registry"
type: inference
targetType: unstructured
inputSchema:
type: object
properties:
json:
type: object
properties:
dataset_id:
type: string
description: Dataset ID from Data Registry
limit:
type: integer
default: 100
required:
- dataset_id
非構造化モデルのスキーマ
- 非構造化モデルの場合は、
jsonプロパティの下にリクエストパラメーターを定義します。 model-metadata.yamlから入力スキーマを公開するには、datarobot-drumバージョン1.17.2以降が必要です。
オプションのカスタムスキーマ¶
フォールバックスキーマをオーバーライドすることで、LLMに対してより適切な指針を示したり、リクエストの形式をより厳密に制御したりすることができます。
inputSchema:
type: object
properties:
data:
type: string
description: "CSV with columns: transaction_amount, user_age, merchant_category"
required:
- data
カスタムサーバーのデプロイ¶
FastAPI、Flask、および類似のサービスについては、ツールのメタデータを返す/info/エンドポイントを公開してください。
必須の/info/レスポンス¶
{
"endpoint": "directAccess/weather/{city}",
"method": "GET",
"input_schema": {
"type": "object",
"properties": {
"path_params": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name"
}
},
"required": ["city"]
}
}
}
}
FastAPIの例¶
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class WeatherRequest(BaseModel):
class PathParams(BaseModel):
city: str = Field(description="City name")
class QueryParams(BaseModel):
units: str = Field(default="metric", description="metric or imperial")
path_params: PathParams
query_params: QueryParams | None = None
@app.get("/info/")
async def metadata():
return {
# Custom model deployments expose custom server routes behind directAccess/.
"endpoint": "directAccess/weather/{city}",
"method": "GET",
"input_schema": WeatherRequest.model_json_schema(),
}
@app.get("/weather/{city}")
async def get_weather(city: str, units: str = "metric"):
return {"city": city, "temp": 22, "units": units}
リクエストのマッピング¶
次のようなツール呼び出しがある場合:
{
"path_params": {"city": "paris"},
"query_params": {"units": "imperial"}
}
MCPサーバーは次のようなリクエストを生成します。
GET <base_url>/directAccess/weather/paris?units=imperial
各パラメーターについて説明します。
base_urlはDataRobotのデプロイURLから派生します。directAccess/は、カスタムモデルのデプロイにおけるカスタムサーバーエンドポイントに使用されるプレフィックスです。
入力スキーマのリファレンス¶
パラメーターグループ¶
パラメーターは、次のようにHTTPリクエストに対応付けられます。
| グループ | 目的 | 例 |
|---|---|---|
path_params |
URLパスに値を代入します。 | {city} → "paris" |
query_params |
クエリー文字列のパラメーターを追加します。 | ?units=imperial |
data |
CSVなどの生のリクエスト本文を送信します。 | 天気予報の例では使用されていません。 |
json |
JSONのリクエスト本文を送信します。 | 天気予報の例では使用されていません。 |
ルール¶
path_paramsとquery_paramsはフラットなオブジェクトにする必要があります。dataとjsonにはネストされた構造を含めることができます。- エンドポイント内のすべての
{param}が、path_paramsに含まれている必要があります。 - 空のスキーマは、
MCP_SERVER_TOOL_REGISTRATION_ALLOW_EMPTY_SCHEMA=trueの場合にのみ許可されます。
サーバーの動作¶
内部的には、MCPサーバーはツールからの呼び出しをHTTPリクエストに変換します。 天気予報の例の場合、リクエストは次のようになります。
async with session.request(
method="GET",
url="<base_url>/directAccess/weather/paris",
params={"units": "imperial"},
) as response:
return await response.json()
トラブルシューティング¶
ツールが登録されない¶
以下のコマンドを使用して、デプロイ状況を調査し、DRUMまたはカスタムサーバーの場合は/info/エンドポイントをテストします。
# Check that the deployment is active and tagged correctly.
curl -H "Authorization: Bearer $DATAROBOT_API_TOKEN" \
"$DATAROBOT_ENDPOINT/api/v2/deployments/{deployment-id}/" | jq .
# Check the /info/ endpoint for DRUM and custom server deployments.
curl -H "Authorization: Bearer $DATAROBOT_API_TOKEN" \
"$DATAROBOT_ENDPOINT/api/v2/deployments/{deployment-id}/directAccess/info/" | jq .
Common errors¶
| エラー | Fix |
|---|---|
input_schemaがない |
カスタムサーバーの場合は/info/レスポンスにinput_schemaを追加し、DRUMの非構造化モデルの場合はmodel-metadata.yamlにinputSchemaを追加します。 |
| トップレベルのプロパティがサポートされていない | path_params、query_params、data、およびjsonのみを使用します。 |
path_paramsにネストされた構造がある |
構造をフラットにするか、jsonに移動します。 |
| パスパラメーターがない | エンドポイントで使われているすべてのパス変数をpath_params内で定義します。 |
その他のリソース¶
- MCPサーバーを使用してツールを統合する — MCPツールをエージェントワークフローに接続します。
- エージェントコーディング環境をMCPサーバーに接続する — Cursor、Claude Desktop、およびVS Codeを設定します。
- DataRobot MCPのテンプレート — スタンドアロンのMCPサーバーを構築し、デプロイします。
- DataRobot Agentic Starterのテンプレート — MCPと連携したエージェントアプリケーション。