Skip to content

原文(日本語に翻訳)

5分間応答なしでハングするリモートMCPツール呼び出しを修正。無期限にブロックする代わりにエラーで中断されるようになった(CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT で設定変更可能)。

原文(英語)

Fixed remote MCP tool calls that hang with no response for 5 minutes — they now abort with an error instead of blocking indefinitely (override with CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT).

概要

リモートMCP(Model Context Protocol)サーバーへのツール呼び出しが応答しない場合、以前はClaude Codeが無期限にハングし続けていました。この修正により、応答のないリモートMCPツール呼び出しは5分後に自動的にエラーで中断されるようになりました。また、環境変数 CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT でタイムアウト時間をカスタマイズできます。

基本的な使い方

デフォルトでは、リモートMCPツール呼び出しは5分(300秒)でタイムアウトします。タイムアウト時間を変更するには環境変数を設定します:

bash
# タイムアウトをカスタマイズ(秒単位)
export CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=60  # 1分でタイムアウト
export CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=600 # 10分でタイムアウト

# 設定後にClaude Codeを起動
claude

実践例

低速なMCPサーバーへの対応

応答の遅いリモートMCPサーバーを使用している場合:

bash
# タイムアウトを延長してClaude Codeを起動
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=600 claude

# または .env ファイルや shell設定に追加
echo 'export CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=600' >> ~/.zshrc

高速な環境でのタイムアウト短縮

レイテンシの低い環境では、タイムアウトを短くしてより迅速にエラー検知できます:

bash
# 30秒でタイムアウト(高速な環境向け)
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=30 claude

MCPサーバーの設定と組み合わせ

settings.json でMCPサーバーを設定しつつ、タイムアウトを調整:

json
{
  "mcpServers": {
    "my-remote-server": {
      "type": "sse",
      "url": "https://example.com/mcp/sse"
    }
  }
}
bash
# タイムアウト設定と合わせて使用
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=120 claude

CI/CD環境での活用

自動化パイプラインでリモートMCPを使用する場合:

yaml
# .github/workflows/claude.yml
env:
  CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT: 60  # CI環境では1分でタイムアウト

注意点

  • デフォルトのタイムアウトは5分(300秒)です
  • タイムアウトが発生すると、エラーメッセージが表示されてClaude Codeは次のアクションに進みます(無限待機にはなりません)
  • CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT=0 や非常に大きな値を設定すると、従来のような無期限待機に近い状態になる可能性があります
  • この修正はリモートMCPサーバー(SSE/HTTPタイプ)に対して有効です。ローカルのstdioタイプのMCPサーバーには影響しません
  • タイムアウト後も、MCPサーバー自体が生きていれば次の呼び出しは正常に機能します

関連情報