エラー
MCP クライアントが受け取るエラーは 3 種類あります。届く場所がそれぞれ異なるため、現れた場所に応じて処理してください。
HTTP エラー
リクエストはツールに届いていません。ボディはコード -32000 の JSON-RPC エラーです。
| ステータス | 発生する状況 | 対処方法 |
|---|---|---|
401 | トークンがない、または無効か期限切れ | WWW-Authenticate チャレンジに従います。認可を参照してください |
405 | エンドポイントに GET または DELETE を送った | POST を送ります。このエンドポイントには SSE ストリームもセッションもありません |
429 | クォータの上限を超えた | Retry-After の秒数だけ待ちます。クォータを参照してください |
ツールエラー
ツールが実行されて失敗したか、実行前に拒否された場合です。どちらの場合もレスポンスは通常の 200 で、isError: true と理由のテキストを含む tools/call の結果が返ります。ツール自体のコードが動く前に MCP SDK が出すエラー(入力スキーマに合わない引数や、存在しないツール名)も同じ形で届き、テキストは MCP error -32602: で始まります。これらもツールの結果であって JSON-RPC の error オブジェクトではないため、クライアントは error.code ではなく result.isError を確認する必要があります。
ツール自体が返すエラーの例(check_availability に { "domains": ["!!!"] } を渡した場合):
{
"result": {
"content": [{ "type": "text", "text": "Invalid domain format" }],
"isError": true
},
"jsonrpc": "2.0",
"id": 4
}
入力検証のエラーの例(compare_prices に { "domain": "kettlory" } を渡した場合):
{
"result": {
"content": [
{
"type": "text",
"text": "MCP error -32602: Input validation error: Invalid arguments for tool compare_prices: A full domain name is required at domain"
}
],
"isError": true
},
"jsonrpc": "2.0",
"id": 1
}
| メッセージ | 原因 |
|---|---|
MCP error -32602: Input validation error: Invalid arguments for tool <name>: … | 引数がツールの入力スキーマに合っていません。フィールドの欠落、範囲外の値、ドットのないドメインなどです。テキストの末尾には対象のフィールドが示されます(例:Too big: expected array to have <=20 items at domains) |
Invalid domain format | ドメイン名に使えない文字を取り除いた結果、入力に何も残らなかったか、NameBeta が認識していない TLD の名前です。それ以外の余分な文字はエラーにならず、黙って取り除かれます。check_availability を参照してください |
MCP error -32602: Tool <name> not found | ツール名のつづりが間違っているか、そのツールが存在しません |
| その他のメッセージ | ツールの背後の検索が失敗しました。たとえば WHOIS サーバーや DNS サーバーが応答しなかった場合です。時間をおいて再試行すると成功することがあります |
ツール固有のエラーは各ツールのページに記載しています。失敗した呼び出しがクォータを消費するかどうかは、呼び出しのカウント方法で説明しています。
不正なリクエスト
MCP のトランスポートが受け付けられないリクエストは、ツールが実行される前に 4xx ステータスで拒否されます。たとえば、Accept ヘッダーに application/json と text/event-stream の両方が含まれていなければ 406、ボディが有効な JSON-RPC でなければ JSON-RPC のパースエラー(-32700)になります。バッチ(配列)形式の JSON-RPC リクエストは、400 と JSON-RPC エラー -32600 で拒否されます。MCP 仕様は 2025-06-18 版でバッチを廃止しているためです。POST 1 回につき 1 リクエストを送ってください。このエラーは再試行せず、リクエストを修正してください。エンドポイントが受け付けるリクエストはエンドポイントとトランスポートで説明しています。