修正:MCP サーバーの 1000ms 未満タイムアウト設定が全ツール呼び出しを強制終了する問題
原文(日本語に翻訳)
MCP サーバーごとの timeout 設定値が 1000ms 未満の場合、すべてのツール呼び出しを中断する 1 秒のウォッチドッグにフロアされていた問題を修正しました。1000ms 未満の値は現在無視され(MCP_TOOL_TIMEOUT またはデフォルトにフォールバック)、claude mcp get でその旨が注釈されます。
原文(英語)
Fixed MCP per-server timeout config values below 1000 ms being floored to a 1-second watchdog that aborted every tool call; sub-1000 ms values are now ignored (falling back to MCP_TOOL_TIMEOUT or default), and claude mcp get annotates them accordingly
概要
MCP サーバーの設定で timeout を 1000ms 未満(例: 500)に設定すると、その値が 1 秒(1000ms)のウォッチドッグタイマーとして適用され、すべてのツール呼び出しが 1 秒後に強制終了していました。v2.1.162 から、1000ms 未満の値は無視されて環境変数 MCP_TOOL_TIMEOUT またはシステムデフォルト値にフォールバックします。また claude mcp get でこの状態が注釈として表示されます。
基本的な使い方
json
// .claude/mcp.json - タイムアウト設定
{
"servers": {
"fast-server": {
"command": "node",
"args": ["server.js"],
"timeout": 500 // ← 1000ms 未満は無視されてデフォルトにフォールバック
},
"slow-server": {
"command": "python",
"args": ["server.py"],
"timeout": 30000 // ← 有効(30秒)
}
}
}MCP サーバー設定を確認する
bash
# タイムアウト設定の注釈を確認
claude mcp get fast-server
# 出力例:
# Server: fast-server
# Timeout: 500ms (ignored — below 1000ms minimum; using MCP_TOOL_TIMEOUT or default)実践例
環境変数でタイムアウトを設定する
bash
# 有効なタイムアウトを環境変数で設定
export MCP_TOOL_TIMEOUT=10000 # 10秒
claude "MCP ツールを使ってタスクを実行して"適切なタイムアウト設定の例
json
{
"servers": {
"database-server": {
"command": "npx",
"args": ["db-mcp-server"],
"timeout": 5000 // 5秒(データベース操作向け)
},
"web-scraper": {
"command": "python",
"args": ["scraper_server.py"],
"timeout": 60000 // 60秒(Web スクレイピング向け)
}
}
}タイムアウト設定の確認と診断
bash
# 全 MCP サーバーの設定を確認
claude mcp list
# 特定サーバーの詳細(タイムアウト注釈を確認)
claude mcp get <server-name>注意点
- 1000ms 未満のタイムアウト値を設定しても、エラーにはなりませんが無視されます
- 有効なタイムアウトを設定したい場合は、1000ms(1秒)以上の値を指定してください
MCP_TOOL_TIMEOUT環境変数(ミリ秒単位)でデフォルトのタイムアウトを変更できます- タイムアウト値が無視されている場合、
claude mcp getで確認できます - 以前に 1000ms 未満のタイムアウトで頻繁にエラーが発生していた場合、この修正で解決される可能性があります