Anthropicは本日、Model Context Protocol(MCP)に対する大幅なアップデートを発表し、既存のHTTP+SSE方式に代わる全く新しい「Streamable HTTP」転送方式を導入しました。この革新的なアップデートにより、MCPリモート転送における主要な制限が完全に解消され、同時に既存の利点を維持しています。
今回のアップデートは、本質的にMCPデータ転送メカニズムの再構築であり、プロトコルをより柔軟で使いやすく、互換性の高いものにします。例えるなら、以前のMCP転送方式は、カスタマーサービスとの通話で常にオンライン状態を維持する必要がある(SSEは永続接続が必要)のに対し、新しい方式は、いつでもメッセージを送信して返信を待つことができる(通常のHTTPリクエストだが、ストリーミング転送も可能)ようなものです。
今回のアップデートには、5つの主要な変更が含まれています。まず、専用の/sseエンドポイントが削除され、サーバーはSSE(Server-Sent Events)エンドポイントを個別に維持しなくなりました。次に、すべてのクライアントからサーバーへのメッセージは統一された/messageエンドポイントを介して転送され、/sseに依存しなくなりました。第三に、サーバーは必要に応じてHTTPリクエストをSSEストリームに動的にアップグレードして、通知またはリクエストを送信できます。第四に、クライアントはヘッダーでMcp-Session-Idを提供し、サーバーはセッション情報を保存するかどうかを独自に決定できます。最後に、完全にステートレスなサーバーの運用が可能になり、永続接続を維持する必要がなくなりました。
この変更を推進した主な理由は、現在のHTTP+SSE転送にいくつかの欠点があったためです。接続が切断された後の復元機能がサポートされておらず、クライアントはセッション全体をやり直す必要がありました。サーバーは継続的なSSE接続をサポートするために高可用性を維持する必要がありました。また、SSEは単方向通信(サーバーからクライアント)しかサポートしておらず、柔軟な双方向通信を実現できませんでした。「Streamable HTTP」転送方式はこれらの問題を解決し、システムの拡張性と柔軟性を大幅に向上させました。
開発者にとって、このアップデートは多くの利便性をもたらします。MCPサーバーの実装がより簡単になり、通常のHTTPサーバーだけでMCPをサポートできるようになり、専用のSSEサーバーを構築する必要がなくなりました。Vercel、Cloudflare、AWS Lambdaなど、永続接続をサポートしていないクラウドプラットフォームへのデプロイが容易になります。互換性が大幅に向上し、標準HTTPである新方式はCDN、APIゲートウェイ、ロードバランサーとシームレスに統合できます。拡張性が大幅に向上し、ステートレスモードでの運用が可能になり、必要に応じてSSEに動的にアップグレードできます。
インフラストラクチャとサーバーアーキテクチャの面でも、新方式は革命的な変化をもたらしました。ステートレスサーバーが可能になり、サーバーはクライアントのセッション情報を継続的に保存する必要がなくなりました。マイクロサービスアーキテクチャに最適で、REST API、GraphQL、ロードバランサー、CDNなどのシステムと容易に統合できます。サーバーのリソース利用率が向上し、リクエストを処理したらリソースを解放できるため、高並行性のシナリオに適しています。
興味深いことに、SSEに問題があるにもかかわらず、AnthropicはWebSocketを代替案として選択しませんでした。その理由は、WebSocketは永続接続を維持する必要があるのに対し、MCPは主にRPCに似たモードを採用しており、各リクエストは独立して実行されるためです。WebSocketはHTTPヘッダー情報を転送できないため、認証プロセスが複雑になります。WebSocketはGETアップグレードしかサポートしておらず、MCPで主に使用されるPOSTリクエストと互換性がありません。そのため、最終的にHTTPを引き続き使用することにしましたが、サーバーが必要に応じてSSEにアップグレードできる機能を持たせ、SSEまたはWebSocketを強制的に使用することはありません。
全体的に見て、今回のアップデートにより、MCPはより軽量で柔軟なものになり、サーバーはストリーミング転送をサポートするかどうかを独自に決定できます。デプロイプロセスが大幅に簡素化され、サーバーレスアーキテクチャに適しています。互換性が大幅に向上し、さまざまなネットワークインフラストラクチャとシームレスに連携できます。サーバーのリソース利用率が向上し、より大規模な同時リクエストをサポートできます。
この革新的な変更により、MCPサーバーはよりシンプルで、効率的で、柔軟になり、より大規模な分散デプロイをサポートできるようになり、SSEの制限から完全に解放され、AIモデルとアプリケーション間の通信に新たな章を開きました。
プロジェクトアドレス:https://github.com/modelcontextprotocol/specification/pull/206