ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
連携・プラグイン/2026-07-19上級

無応答の MCP サーバーでエージェントが止まる — 接続・一覧・呼び出しに別々のタイムアウトを敷く

Antigravity CLI 1.1.3 は、無応答の MCP サーバーがエージェントを無限に止める問題を、接続・ツール一覧・ツール呼び出しごとのタイムアウトで塞ぎました。3つの境界で失敗の出方が違う理由を整理し、防御ラッパーとサーキットブレーカー、失敗時だけの通知を、動くコードと夜間運用の実測でまとめます。

Antigravity CLI30MCP24タイムアウト4自動化37設計パターン7resilience9

プレミアム記事

夜中の 2 時に走らせているバッチが、朝になっても半分しか進んでいませんでした。ログの最後の行は「MCP サーバーに接続しました」で止まっていて、エラーも例外も出ていません。接続は通っていたのです。ただ、その次に投げたツール一覧の取得が、返ってこないまま朝を迎えていました。

個人開発で複数のサイトを回していると、こういう「エラーですらない停止」がいちばん厄介です。落ちてくれれば再起動できます。けれど無言で待ち続けられると、翌朝ログを開くまで気づけません。この記事は、Antigravity CLI 1.1.3 が塞いだ「無応答の MCP サーバーで無限に待つ」経路を出発点に、自分の自動化を同じ穴で止めないための境界ごとのタイムアウト設計を、動くコードとして残すものです。

1.1.3 が塞いだのは「無限に待つ」経路

Antigravity CLI 1.1.3(2026-07-16)のリリースノートには、MCP まわりの修正がひとつ入っています。MCP サーバーが応答を返さないまま、エージェントを無限に止めてしまう問題を、接続・ツール一覧取得・ツール呼び出しのそれぞれにタイムアウトを設けて解消した、という内容です。

地味に見えますが、自動でタスクを回している側からすると前提が変わる修正です。これまでは、握手には成功したのに以降が沈黙するサーバーが 1 つでもあると、エージェント全体がそこで固まりました。タイムアウトが入ったことで、少なくとも「いつまでも待つ」ことはなくなります。

ただ、CLI が内部で待たなくなったからといって、自分が書いた自動化の外側が安全になったわけではありません。CLI を agy -p のヘッドレスで呼び、その周りを cron やシェルで囲んでいる場合、CLI が打ち切ったあとにどう振る舞うかは自分の設計次第です。ここを詰めておかないと、「CLI は 120 秒で諦めたが、その失敗を握りつぶして次のジョブへ進み、結局全部が中途半端」という別の形の停止に化けます。

この記事では、CLI の内部修正に頼りきりにせず、MCP を使う自動化の外側に自分でタイムアウトの層を敷く方法を扱います。CLI を非対話で回す土台そのものについては、Antigravity CLI を非対話で回す — CI と cron に載せる前の設計で先に触れています。あわせて読むと、内側(CLI)と外側(自分の運用)のどちらでタイムアウトを持つべきかが見えてきます。

なぜ一律のタイムアウトでは足りないのか

「全部まとめて 60 秒でタイムアウト」と書きたくなります。実際、最初に私が入れたのはそれでした。けれど 3 つの境界は失敗の出方がまったく違うので、同じ数字を当てると必ずどこかが破綻します。

境界典型的な所要時間止まる原因の例再試行の安全性
接続(connect)数十ミリ秒〜数秒プロセス未起動・ポート待ち・TLS ハンドシェイク停止安全(副作用なし)
ツール一覧(list tools)数百ミリ秒初期化中のロック・スキーマ生成の無限ループ安全(読み取りのみ)
ツール呼び出し(call tool)数百ミリ秒〜数十秒外部 API の遅延・大きな入力の処理・書き込み待ちツール次第(冪等でないと危険)

接続に 120 秒を許すと、起動し損ねたサーバーを 2 分間待つことになります。逆にツール呼び出しに 5 秒しか与えないと、正常に重い処理をしているツールを誤って切ってしまいます。しかも呼び出しだけは、再試行の安全性がツールの冪等性に依存します。一覧取得は何度投げても読み取りなので気楽ですが、書き込みを伴うツールを闇雲にリトライすると、二重登録のような別の事故を生みます。

つまり、タイムアウトは 1 つの数字ではなく、境界ごとの予算として持つべきものです。私の夜間バッチでは、接続 15 秒・一覧取得 20 秒・呼び出し 120 秒を出発点にしています。この配分は環境に強く依存しますので、あとで実測して詰めます。

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

この記事の続きを読む

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

この記事で得られること
接続・ツール一覧・ツール呼び出しの3境界で失敗の出方が違うことを理解し、境界ごとに別のタイムアウト予算を割り当てられるようになる
無応答のMCPサーバー1つで夜間パイプライン全体が固まる問題を、タイムアウトと指数バックオフとサーキットブレーカーを組んだ防御ラッパーで断ち切れる
どのサーバーがどの境界で止まったかを失敗時だけ通知する仕組みを組み込み、翌朝の切り分けにかかる時間を短くできる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

連携・プラグイン2026-08-22
設定ファイルを開かずに MCP サーバーを足す — agy mcp サブコマンドで構成を持ち運ぶ
8月20日の Antigravity CLI 1.1.16 で mcp サブコマンドが追加され、MCP サーバーの追加と切り替えを設定ファイルの手編集なしに行えるようになりました。stdio と HTTP それぞれの登録手順、障害の切り分け方、構成を別のマシンへ運ぶスクリプト化までをまとめます。
連携・プラグイン2026-08-22
stream-json 入力で Antigravity CLI を外部から回すとき、会話をどこで切るか
print モードに加わった --input-format stream-json は、外部のドライバがセッションを開いたまま一件ずつ流せる仕組みです。24 件のジョブで会話が抱える量を計測し、バイト予算だけで切ると仕事の途中で文脈が切れることを確かめ、切る単位の決め方を整理します。
連携・プラグイン2026-08-20
MCP サーバーが1本も起動しない原因は、起動前の 40 行で特定できます
設定ファイルの1件の書き間違いで MCP サーバーが揃って起動しなくなる状況を、起動前に検査する小さなスクリプトで潰す手順です。実際に壊した設定へ通した出力と、JSON の同名キーが黙って消える落とし穴まで扱います。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →