CLAUDE LABEN
OPUS48 — Claude Opus 4.8が一般提供に。コーディング・エージェント能力・推論・実務知識のいずれもOpus 4.7から底上げされましたAUTO — Claude CodeのautoモードがBedrock・Vertex AI・Foundryで既定になり、BedrockのモデルもOpus 4.8へ更新されましたGUARD — autoモードはセッション記録の改ざんをブロックし、文脈から解決できない変数へのrm -rfは事前に確認するようになりましたIDP — 管理者はIdP経由で組織全体にMCPコネクタを配布でき(Okta起点)、メンバーは初回ログインで自動的に利用開始できますTIMEOUT — --mcp-configや.mcp.jsonのサーバー単位request_timeout_msが無視され60秒で切れる不具合が修正されましたFAST — Opus 4.7のfastモードは7/24に削除予定です。speed: fastはエラーになるためOpus 4.8のfastモードへ移行しますOPUS48 — Claude Opus 4.8が一般提供に。コーディング・エージェント能力・推論・実務知識のいずれもOpus 4.7から底上げされましたAUTO — Claude CodeのautoモードがBedrock・Vertex AI・Foundryで既定になり、BedrockのモデルもOpus 4.8へ更新されましたGUARD — autoモードはセッション記録の改ざんをブロックし、文脈から解決できない変数へのrm -rfは事前に確認するようになりましたIDP — 管理者はIdP経由で組織全体にMCPコネクタを配布でき(Okta起点)、メンバーは初回ログインで自動的に利用開始できますTIMEOUT — --mcp-configや.mcp.jsonのサーバー単位request_timeout_msが無視され60秒で切れる不具合が修正されましたFAST — Opus 4.7のfastモードは7/24に削除予定です。speed: fastはエラーになるためOpus 4.8のfastモードへ移行します
記事一覧/Claude Code
Claude Code/2026-07-14上級

設定したはずのMCPタイムアウトが効かず、毎回きっかり60秒で切れていた — request_timeout_ms をサーバー単位で取り戻す

長めのMCPツール呼び出しが、設定した待ち時間を無視してきっかり60秒で切れていました。原因は .mcp.json のサーバー単位 request_timeout_ms が読まれず既定へ落ちていたこと。修正後の正しい置き方と、値をツールの性質から逆算する設計、切れ際を自分で確かめる手順を実装込みで整理しました。

claude-code127mcp15timeout8configuration2reliability14

プレミアム記事

深夜の定期実行が、ある工程でだけ判で押したように失敗していました。ログの経過時間を並べてみると、59.8秒、60.1秒、59.9秒。呼び出しの中身は毎回違うのに、切れる瞬間だけがきっかり60秒に張り付いている。私はそのMCPサーバーに、もっと長い待ち時間を設定していたはずでした。手元の設定ファイルを何度見直しても数字は正しい。けれど実際に効いているのは、私が書いた値ではなく、どこかにある既定の60秒でした。

この違和感の正体は、7月14日の更新で明かされました。--mcp-config.mcp.json に書いたサーバー単位の request_timeout_ms が読み込まれず、グローバルの既定へ静かに落ちていたのです。修正は入りました。ただ、修正が返してくれるのは「書いた値がようやく効く」という前提までで、「どの値をどこに置くか」「それが本当に効いているか」までは決めてくれません。今日はそこを、個人開発の夜間運用に引きつけて設計し直した記録です。

長時間の応答をそもそも待たせない考え方は応答が返らないMCP呼び出しに無人実行が飲み込まれた話で扱いました。本稿はその手前、待ち時間の値そのものが設定通りに効くかという設定層の話に絞ります。

きっかり60秒は「設定した値」ではなく「拾われた既定」だった

タイムアウトの事故がやっかいなのは、切れること自体は正常な挙動に見えてしまう点です。ツールが重ければ待ち時間を超えることはあり、そのとき打ち切られるのは設計通りとも言えます。だから「たまたま今日は重かったのだろう」と流してしまいがちでした。

けれど、切れる時刻が毎回ほぼ同じ値に集まるなら、話は変わります。ツールの負荷は日によってばらつくのに、打ち切りだけが一定なら、それは負荷ではなく上限が固定されている証拠です。私の場合はその上限が、自分で書いた値ではなく既定の60秒でした。

背景を整理します。MCPツール呼び出しの待ち時間には、いくつかの層があります。ひとつはサーバーの起動を待つ時間、もうひとつは個々のツール実行を待つ時間です。後者にはグローバルな既定があり、環境変数 MCP_TOOL_TIMEOUT で全体を、.mcp.json のサーバー定義に置く request_timeout_ms で個別に上書きできる建て付けになっています。今回の不具合は、この個別指定が読み飛ばされ、常にグローバル既定へ落ちていた、というものでした。

「無言で既定に落ちる」がいちばん検知しにくい

もし設定ミスがエラーとして表に出るなら、まだ楽でした。起動時に「その値は無効です」と言ってくれれば、その場で気づけます。今回が厄介だったのは、指定が無視されても警告ひとつ出ず、動作としては何事もなく既定値で走り続けたことです。

無人実行では、この静けさが特に効いてきます。対話中なら「あれ、思ったより早く切れたな」と体感で気づけますが、定期実行のログはあとから読むもので、切れた事実だけが淡々と残ります。経過時間を意識して記録していなければ、それが設定通りの打ち切りなのか、拾われなかった既定なのか、区別がつきません。

だから最初にやるべきは、値を直すことではなく、切れ際の分布を見えるようにすることでした。同じ工程の打ち切り時刻を何回分か並べ、値が一点に集まっているかを見る。集まっていれば、負荷ではなく上限が支配しているサインです。この一手間があるかないかで、設定が効いているかどうかの自己診断が段違いに速くなります。本番運用でこの落とし穴に何度か当たった経験から、まず分布を疑い、設定値と実測を突き合わせて対処することを私は推奨します。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
サーバー単位の request_timeout_ms が無視されて既定の60秒に落ちる不具合の見分け方がわかり、設定値が本当に効いているかをログの分布から自分で確認できるようになる
.mcp.json にサーバーごとのタイムアウトを正しく置く書き方と、MCP_TOOL_TIMEOUT などのグローバル既定との優先順位を整理して、長時間ツール呼び出しを安定させられる
タイムアウト値をツールの応答特性から逆算する判断表と、切れ際が既定値に張り付いていないか検証する軽量スクリプトを、そのまま夜間の自動運用に組み込める
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-06-25
応答が返らないMCP呼び出しに、無人の定期実行が丸ごと飲み込まれた日 — 自前のデッドラインで止め時を握る
リモートMCPツール呼び出しが応答なしで止まると、無人の定期実行はそのまま待ち続けます。プラットフォーム側の打ち切りに任せきりにせず、自前のデッドラインとサーキットブレーカで止め時を握る設計を、実装込みで整理しました。
Claude Code2026-07-14
push先がいつの間にか一つ増えていた — /commit-push-pr が origin 以外のリモートへも押し始めた変更に、許可リストで蓋をする
7月14日の更新で /commit-push-pr が origin に加えて設定済みの push リモートへも自動で押すようになりました。便利な一方、ミラーやバックアップ用の第二リモートを持つ環境では、意図しない push が静かに増えます。どのリモートへ押し得るかを棚卸しし、許可リスト外の push を pre-push フックで止め、無人実行でも安全に回す設計を実装込みで整理しました。
Claude Code2026-07-03
5分の沈黙で誰かがやり直しを始める — streaming idle watchdog 既定化で数え直すリトライの責務
Claude Code の streaming idle watchdog 既定化で、実行スタックに再試行する層がもう一枚増えました。SDK・自前ラッパー・watchdog・スケジューラの4層を棚卸しし、最悪ケースの試行回数を掛け算で見積もり、リトライ責務を一層に畳む設計をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →