Skip to content

原文(日本語に翻訳)

SSE/HTTPトランスポートでサーバー接続がレスポンスの途中で切断された際に、MCPツール呼び出しが無限にハングする問題を修正しました。

原文(英語)

Fixed MCP tool calls hanging indefinitely when the server connection drops mid-response on SSE/HTTP transports.

概要

Claude Code v2.1.110では、MCP(Model Context Protocol)サーバーとSSE(Server-Sent Events)またはHTTPトランスポートで通信中に、レスポンス受信の途中で接続が切断された場合にツール呼び出しが無限にハングしてしまう問題が修正されました。この問題が発生すると、Claude Codeが応答不能になりユーザーが強制終了するしかない状況になっていましたが、今回の修正により接続切断が適切に検出されエラーとして処理されるようになりました。

基本的な使い方

この修正はバグフィックスのため、特別な操作は不要です。v2.1.110以降にアップデートするだけで、MCPサーバーとの通信がより安定するようになります。

bash
# Claude Code を最新バージョンに更新
npm update -g @anthropic-ai/claude-code

# バージョン確認
claude --version

実践例

ユースケース1: リモートMCPサーバーへの接続

ネットワークの不安定な環境でリモートMCPサーバーに接続する場合、以前は接続切断時にハングしていましたが、今回の修正後は適切なエラーメッセージが表示されます。

json
// .claude/settings.json の MCP 設定例(SSEトランスポート)
{
  "mcpServers": {
    "remote-tools": {
      "url": "https://your-mcp-server.example.com/sse",
      "transport": "sse"
    }
  }
}
// 修正前の動作
Claude: [ツールを実行中... ← 無限にハング]

// 修正後の動作
Claude: MCPサーバーとの接続が切断されました。再試行してください。
エラー: Connection dropped mid-response (SSE transport)

ユースケース2: HTTPトランスポートでのツール実行

json
// HTTPトランスポートを使用するMCPサーバー設定
{
  "mcpServers": {
    "api-tools": {
      "url": "https://api.example.com/mcp",
      "transport": "http"
    }
  }
}

接続が途中で切れた場合、v2.1.110からはタイムアウトとエラーが適切に処理されます。

ユースケース3: 接続問題のトラブルシューティング

bash
# MCPサーバーの接続状態を確認
claude mcp list

# 特定のMCPサーバーへの接続をテスト
claude mcp test remote-tools

# 詳細なデバッグログを有効にして接続問題を調査
CLAUDE_DEBUG=mcp claude

ユースケース4: タイムアウト設定のカスタマイズ

json
// 接続タイムアウトを設定してより早く失敗を検出
{
  "mcpServers": {
    "remote-tools": {
      "url": "https://your-mcp-server.example.com/sse",
      "transport": "sse",
      "timeout": 30000
    }
  }
}

注意点

  • 影響を受けるトランスポート — この修正はSSEとHTTPトランスポートに適用されます。stdioトランスポートは別の接続管理を使用しており、この問題の影響を受けていませんでした。
  • アップデート推奨 — MCPをリモートサーバーで使用している場合は、v2.1.110へのアップデートを強く推奨します。
  • ネットワーク品質の確認 — 接続切断が頻繁に起きる場合は、ネットワーク環境の確認も合わせて実施してください。
  • MCPサーバー側の確認 — サーバー側でも接続管理が適切に実装されているか確認することで、より安定した動作が期待できます。

関連情報