この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年09月04日(木)
/v1/mcp/servers エンドポイントは、Heroku Managed Inference and Agents チャットモデルに登録されている MCP サーバーのリストを返します。このリストには、各サーバーとそれが公開するツールに関する詳細が含まれています。
MCP サーバーがデプロイおよび登録されていない場合、/v1/mcp/servers へのリクエストは空のリストを返します。
認証
/v1/mcp/servers エンドポイントにはプロビジョニングした Heroku チャット モデル用の有効な INFERENCE_KEY が必要です。
必須ヘッダー
| ヘッダー | 種類 | 説明 |
|---|---|---|
Authorization |
文字列 | INFERENCE_KEY を含むベアラートークン |
リクエストの例
チャットモデルをアタッチしたアプリに対して heroku config -a $APP_NAME を実行することにより、INFERENCE_URL と INFERENCE_KEY の値を取得します。
curl $INFERENCE_URL/v1/mcp/servers -H "Authorization: Bearer $INFERENCE_KEY" | jq
例の値を入力すると、以下のようになります。
curl https://us.inference.heroku.com/v1/mcp/servers -H Authorization: Bearer inf-123abc9f-2a6c-441a-9f72-e2dc15cdcaaa | jq
応答形式
v1/mcp/servers リクエストは、モデルにアタッチされている MCP サーバーごとに 1 つのMCP サーバーオブジェクトの配列を返します。
応答の例:
[
{
"id": "15ac9382-5804-49ac-bf94-8bab2f4b62ce",
"app_id": "434eb878-6bc1-4677-928d-80d27047ad5a",
"process_type": "mcp",
"process_command": "python -m src.stdio_server",
"created_at": "2025-05-07T16:44:34.259Z",
"updated_at": "2025-05-07T16:44:38.291Z",
"namespace": "acute-partridge",
"server_status": "registered",
"primitives_status": "synced",
"tools": [ ... ]
}
]
完全な応答例については、以下を参照してください。
MCP サーバーオブジェクト
| フィールド | 種類 | 説明 | 例 |
|---|---|---|---|
| id | 文字列 (UUID) | 一意のサーバー ID | "15ac9382-..." |
| app_id | 文字列 (UUID) | サーバーを実行している Heroku アプリ ID | "434eb878-..." |
| process_type | 文字列 | サーバーの起動に使用されるプロセスタイプ。MCP アプリの Procfile で指定されます。'mcp’ で始まる必要があります。 | "mcp-my-cool-server" |
| process_command | 文字列 | MCP STDIO サーバーを実行するために使用されるコマンド。MCP アプリのプロファイルで指定されます (process_type: process_command) |
"python -m src.stdio_server" |
| created_at | 文字列 (ISO 8601) | サーバーが登録されたときのタイムスタンプ | "2025-05-07T16:44:34.259Z" |
| updated_at | 文字列 (ISO 8601) | サーバーが最後に更新されたときのタイムスタンプ | "2025-05-07T16:44:38.291Z" |
| namespace | 文字列 | このサーバーが提供するツールの名前空間に使用される名前 | "acute-partridge" |
| server_status | 列挙<文字列> | サーバーのステータス *次のいずれか: * registered、disconnected |
"registered" |
| primitives_status | 列挙<文字列> | サーバーのツールリストのステータス *次のいずれか: * syncing、synced、error |
"synced" |
| tools | 配列 | このサーバーによって公開されるツールのリスト |
ツールオブジェクト
各サーバーは複数の MCP ツールを公開できます。
| フィールド | 種類 | 説明 | 例 |
|---|---|---|---|
| name | 文字列 | 指定されたモデルリソースのサーバー名前空間内で一意のツール名 | "code_exec_ruby" |
| namespaced_name | 文字列 | 完全修飾ツール名。形式は namespace/tool_name |
"acute-partridge/code_exec_ruby" |
| description | 文字列 | (任意) モデルの根拠となるプレーンテキストの説明 | "Executes a Ruby code snippet..." |
| input_schema | オブジェクト | JSON スキーマを使用したツール呼び出し引数の入力スキーマ | 「入力スキーマの例」を参照 |
| annotations | オブジェクト | ツールの機能や危険性に関する任意のヒントを含む注釈 (destructiveHint など) |
{} |
入力スキーマの例
{
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "The Ruby code to execute as a string."
},
"packages": {
"type": "array",
"items": { "type": "string" },
"description": "Optional list of gem names to install before execution."
},
"use_temp_dir": {
"type": "boolean",
"description": "If true, run code in an isolated temp directory."
}
},
"required": ["code"]
}
注釈オブジェクト
| フィールド | 種類 | 説明 | 例 |
|---|---|---|---|
| title | 文字列 | (任意) ツールの UI 向けタイトル | "Awesome Code Executor" |
| readOnlyHint | ブール値 | ツールに副作用がない場合は true | false |
| destructiveHint | ブール値 | ツールがデータを削除したり不可逆的に変更したりする可能性がある場合は true | true |
| idempotentHint | ブール値 | 同じ引数でツールを複数回呼び出しても追加の効果がない場合には true | false |
| openWorldHint | ブール値 | ツールが外部の情報または進化する現実世界の情報をクエリする場合は true | true |
注意事項
/v1/agents/heroku を使用して、このエンドポイントによって登録されたツールを呼び出します。/v1/agents/heroku リクエストでアクセスできるのは、server_status: "registered" かつprimitives_status: "synced" のサーバー上のツールのみです。/v1/mcp/servers へのリクエストは、MCP サーバーをデプロイして登録するまで空のリストを返し、/v1/agents/heroku リクエストでツールにアクセスすることはできません。- MCP ツールとサーバー (Procfile プロセス) の名前は特定のアドオンの名前空間内で一意である必要があります。
- ツール入力スキーマは JSON スキーマ形式に従う必要があります。
完全な応答の例
[
{
"id": "a3bda372-085b-458f-8b1e-6f5704d528fe",
"app_id": "434eb878-6bc1-4677-928d-80d27047ad5a",
"process_type": "mcp",
"process_command": "python -m src.stdio_server",
"created_at": "2025-05-09T15:23:42.318541Z",
"updated_at": "2025-05-09T15:23:45.890484Z",
"tools": [
{
"name": "code_exec_ruby",
"namespaced_name": "mcp/code_exec_ruby",
"description": "Executes a Ruby code snippet with optional gem dependencies.\n\n When `use_temp_dir` is True, the code and any installed gems are run in a throwaway temporary directory,\n and gems are isolated. When False, gems are installed to ~/.gem.\n\n The Ruby runtime has access to networking, the filesystem, and standard libraries.\n A non-zero exit code is an error and should be fixed.\n\n Returns:\n JSON containing:\n - 'returncode': Exit status of the execution.\n - 'stdout': Captured standard output.\n - 'stderr': Captured standard error or install failure messages.\n ",
"input_schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"title": "Code",
"description": "The Ruby code to execute as a string."
},
"packages": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Packages",
"default": null,
"description": "Optional list of gem names to install before execution."
},
"use_temp_dir": {
"type": "boolean",
"title": "Use Temp Dir",
"default": false,
"description": "If True, code and dependencies are run in a temporary working directory. Gems are installed in an isolated directory and will not affect or reuse the user's ~/.gem folder. Not a secure sandbox."
}
},
"required": [
"code"
]
},
"annotations": {}
}
],
"server_status": "registered",
"primitives_status": "synced",
"namespace": "mcp"
}
]