結論:待ち時間を増やす前に、初回ターンの停止許容時間を決める

Claude Code 2.1.274では、非対話の初回ターンが接続中のMCPサーバーを待つ時間を、CLAUDE_CODE_MCP_STARTUP_WAIT_MSで上限化できます。公式changelogの説明どおり、値はミリ秒で、0は待ちません。遅いserverを待つか、待たずにMCPなしで切り分けるかを、業務の停止許容時間と処理の依存関係から決める設定です。

読者の課題は、CIやclaude -pの最初のターンが止まった時に、MCPの起動遅延なのか認証失敗なのかを説明できないことです。待ち時間を無制限にすると失敗判定が遅れ、短すぎると正常なリモート接続まで切り捨てます。まずread-onlyの一件で、MCPが必須か任意かを分けてください。

根拠はClaude Code v2.1.274公式リリースとClaude Code公式changelogです。MCPの追加方法、HTTPとSSEの扱い、信頼できないserverによるprompt injectionの注意はMCP公式文書を正本にします。既存のMCP接続トラブル診断は認証・到達性、MCPセキュリティは権限・情報持出しが中心で、本稿は初回起動の時間境界へ絞ります。

待つ設定と待たない設定を比較する

選択向いている場面先に決めること
長めに待つ最初の処理からMCPが必須で、起動遅延が既知最大待ち時間と超過時の終了処理
短めに待つ任意MCPを使い、初回応答を早く返したいMCPなしで続行できる条件
0にするCIでMCP起動を別ジョブとして検証するserver準備完了のreadback方法
設定しない既存の既定動作を比較基準にしたいversion更新前後の実測値

ここで注意したいのは、起動待ち時間がMCPの健全性を判定するタイムアウトではない点です。serverが待ち時間内に応答しても、権限不足、空のtool一覧、誤ったscope、危険な副作用が残ることがあります。反対に、時間を超えたからといってserverが壊れているとも限りません。ネットワーク、認証、serverプロセスの初期化を別々の証跡にしてください。

設定前に行う8手順

  1. 用途を一文にする。「issueを読むだけ」「本番変更を依頼する」など、初回ターンでMCPが必要な理由を書きます。
  2. 実行形態を固定する。対話型、claude -p、SDK、CIのどれかを分け、同じ環境変数を一括配布しません。
  3. versionを記録する。2.1.274以降か、更新前の初回ターン時間とMCP接続状態を台帳へ残します。
  4. serverを分類する。HTTP、SSE、stdioを分け、必須・任意・停止対象の三群へ分類します。
  5. 待ち時間を測る。DNS、TLS、認証、初期化、tool一覧取得までの時間をログで測り、最大値だけでなく外れ値も見ます。
  6. 小さな値で検証する。まず限定projectで短い上限を設定し、timeout後の終了コードと初回出力を確認します。
  7. 0の経路を試す。CLAUDE_CODE_MCP_STARTUP_WAIT_MS=0でMCPなしの挙動を確認し、後続ターンで接続済みかreadbackします。
  8. 停止条件を定義する。認証エラー、未知のserver、tool一覧欠落、副作用を伴う再試行は、自動継続せず人間確認へ送ります。

コマンドを例示する場合も、秘密情報を環境変数へ直書きしないでください。設定値は実行環境のsecret storeから注入し、MCPのURL、認証方式、server version、許可操作を同じ変更記録へ結び付けます。接続できない時に待ち時間だけを伸ばす変更は、原因を隠す可能性があります。

CIでは「初回ターンが終わった」だけを成功にしません。system/initのMCP状態、期待したserver名、許可されたtool、終了コード、生成物の差分を一緒に判定します。MCPが任意のjobなら、待たずに本体を検証し、MCP接続だけを別の準備jobで確認すると失敗範囲を狭められます。必須のjobなら、待ち時間超過を再試行で隠さず、ownerと復旧手順を通知します。

設定の比較では、同じ入力をMCPあり・MCPなし・server遅延の三条件で実行します。応答が変わる場合は、MCPがどの判断に影響したかを記録し、単に「初回ターンが成功した」と報告しません。外部データの取得や書き込みを含む場合は、人間承認を挟んだテスト用アカウントで行い、実データへ再試行しない境界を固定します。設定変更のロールバックは環境変数を外すだけで済む形にして、次回の障害時にも担当者が迷わないようにします。

外部serverを使う場合は、接続相手の変更も起動遅延の原因になります。DNSの切り替え、証明書更新、OAuthの再認証、serverのversion更新を一つずつ確認し、同じ時間帯の別jobと比較します。読者が設定を変更した後に判断できるよう、開始時刻、待機時間、server名、tool一覧、失敗理由を一枚のreadbackへまとめます。

このreadbackを残せば、設定変更の効果とMCPの問題を分けて説明できます。担当者が変わっても、待つ・待たないの判断を再現できます。復旧後の確認も容易になります。

公開運用のチェックリスト

  • Claude Codeのversionと設定scopeを記録した
  • 必須MCPと任意MCPを分けた
  • 待ち時間の単位がミリ秒であることを確認した
  • 0にした時のMCPなし経路を検証した
  • 認証失敗と起動遅延を別のエラーとして扱った
  • tool一覧とserver名の期待値を固定した
  • 再試行回数と副作用のある操作を制限した
  • 設定を戻すownerと期限を決めた

設定を全社標準にする前に、代表的なネットワーク、server、CI runnerを三つ選びます。平均値ではなく、始業時やデプロイ時の混雑を含めて観測し、どの遅延を許容するかを業務ごとに決めてください。待機時間を長くすることで人の確認が遅れる業務なら、速度より停止条件を優先します。

よくある質問

この環境変数はMCP serverのタイムアウトですか?

初回の非対話ターンが接続中のMCP serverを待つ時間を制限するための設定です。各serverの通信・認証・tool実行のタイムアウトとは分けて管理します。

0なら接続エラーはなくなりますか?

エラーをなくす設定ではありません。待たずに初回ターンを進める選択なので、後で接続状態と処理の前提を確認してください。

長い値を全社へ配布してよいですか?

業務ごとにMCPの必須性が違うため、まず限定scopeで実測します。CI、開発、運用の停止許容時間を分け、戻す手順を用意してから標準化します。

公式情報

次の一歩

MCPをつないだ後の業務停止条件や、人間確認の境界まで決まっていない場合は、設定値だけでは安定運用になりません。Miraigentの無料診断で、対象業務、server、権限、ログ、復旧責任を60秒から棚卸しできます。