Skip to content

修正: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 未満のタイムアウトで頻繁にエラーが発生していた場合、この修正で解決される可能性があります

関連情報