CLAUDE LABEN
SUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は明日8月17日です。残り1日となりましたLATEST — 最新は8月15日の v2.1.233 です。GitLab のマージリクエスト URL が --worktree と claude agents で扱えるようになり、MR は !N 形式で表示されますSECURITY — Windows で NT の \??\ デバイスプレフィックスを含むパスが UNC 検証をすり抜ける問題が直りました。NTLM 資格情報が漏れる経路が塞がれていますTODO — Opus 4.8・Sonnet 5・Fable 5・Mythos 5 以降では TodoWrite と Task 系ツールが既定で無効になりました。CLAUDE_CODE_ENABLE_TODO_TOOLS=1 で戻せますFORK — 8月14日の v2.1.232 で subagent_type: 'fork' が既定になり、会話全体とプロンプトキャッシュをそのまま引き継げるようになっていますMENTION — プロンプトで @ を打つと別のセッションを名前で呼び出せます。SendMessage がそのセッションへ直接届きますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は明日8月17日です。残り1日となりましたLATEST — 最新は8月15日の v2.1.233 です。GitLab のマージリクエスト URL が --worktree と claude agents で扱えるようになり、MR は !N 形式で表示されますSECURITY — Windows で NT の \??\ デバイスプレフィックスを含むパスが UNC 検証をすり抜ける問題が直りました。NTLM 資格情報が漏れる経路が塞がれていますTODO — Opus 4.8・Sonnet 5・Fable 5・Mythos 5 以降では TodoWrite と Task 系ツールが既定で無効になりました。CLAUDE_CODE_ENABLE_TODO_TOOLS=1 で戻せますFORK — 8月14日の v2.1.232 で subagent_type: 'fork' が既定になり、会話全体とプロンプトキャッシュをそのまま引き継げるようになっていますMENTION — プロンプトで @ を打つと別のセッションを名前で呼び出せます。SendMessage がそのセッションへ直接届きます
記事一覧/Claude Code
Claude Code/2026-07-14上級

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

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

claude-code129mcp19timeout8configuration2reliability14

プレミアム記事

深夜の定期実行が、ある工程でだけ判で押したように失敗していました。ログの経過時間を並べてみると、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-17
テーブルが「… 2,847 more rows」で切れていた朝 — 描画上限とトークン計上を切り離して、ツール出力を設計し直す
Claude Code 2.1.209 で 200 行超の markdown テーブルは先頭 200 行+残り件数の表示になりました。省略されるのは描画だけで、モデルは全行を受け取ります。この差を測り、ツール出力を集約型へ組み替える設計をまとめます。
Claude Code2026-07-15
無人実行で auto モードの確認要求を止めずに捌く — permission-prompt-tool で deny-by-default に応える
auto モードの事前確認は、手元で作業しているときは頼もしい味方ですが、深夜の無人実行では「確認待ち」で朝まで止まる原因になります。permission-prompt-tool で確認要求を受け止め、deny-by-default で自動判定して台帳に残す構成を、動くコードつきでまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →