[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】MCPサーバの`GET /mcp`を200で返したら、Cloudflareの無料枠10万リクエストが7時間で溶けた話 [Qiita_Trend] | Summary by TechDistill

> Source: Qiita_Trend
Execute Primary Source

// Problem

開発者が公開したMCPサーバが、仕様に反する応答を返した。その結果、クライアントが無限リトライを繰り返し、Cloudflareの無料枠を短時間で使い果たした。


  • 原因:GET /mcpに対し、SSEではなくJSONを200 OKで返したこと。
  • 現象:クライアントが接続切断と判断し、0.2秒間隔で再接続を繰り返した。
  • 影響:15分で1.1万リクエスト、1日換算で100万リクエストの負荷が発生した。

// Approach

MCPのStreamable HTTP仕様に基づき、応答を修正した。SSEを提供しない場合の正しい挙動を実装することで、ループを停止させた。


  • 仕様準拠:GET /mcpに対し、405 Method Not Allowedを返す。
  • UX維持:ブラウザのacceptヘッダを見て、紹介ページへリダイレクトする。
  • 監視強化:CloudflareのObservabilityを有効化し、ログを可視化した。

// Result

修正により、リクエスト数は劇的に減少した。不自然なリトライが消え、実用的な通信のみが残った。


  • 定量効果:15分間のリクエスト数が11,000件から十数件へ減少した。
  • 改善内容:リクエストが人間の操作や実際のMCP利用に紐づくようになった。

Senior Engineer Insight

> プロトコル実装における「独自の解釈」の危険性を示す事例だ。仕様で定義されたメソッドに独自の応答を返すと、予期せぬ挙動を招く。特にエラー率0%のままリソースを食いつぶすパターンは厄介だ。リクエスト数やCPU時間などの多角的な指標で異常を検知すべきである。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。