🌐
MCP入門:AIとツールをつなぐ“共通言語”の通信方式3種を比べてみた
背景
- AIエージェントが外部ツール連携をするためのプロトコルとして、MCP(モデルコンテキストプロトコル:LLMツール連携のためのプロトコルの一種)がよく使われているようです
- 社内チャットボットでも外部ツール連携するためにMCPを使いたいため、まずは概要について調べました
対象読者
- AIエージェントを作りたい方
- 外部ツール連携でMCPを使いたい方
MCPとは
MCPはモデルコンテキストプロトコルの略で、「アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコル」です。[1]
提唱者のAnthropic社の例えによるとMCPは「AIアプリケーション用のUSB-Cポートのようなもの」と表現しています。これはUSB-Cが様々なデバイスと接続する標準規格であるのと同様に、MCPも様々な外部ツールと接続・連携するための共通インターフェースであることを意味しています。
MCPの通信方式
MCPの通信方式は2025年6月現在以下の3つがあります。
・STDIO(標準入出力)
・SSE(Server-Sent Events)
・Streamable HTTP
それぞれの特徴をまとめたものが以下の表になります。
通信方式 | 主な用途 | 特長 | 適した環境 |
---|---|---|---|
STDIO | ローカル開発、CLI連携 | 軽量、セットアップが簡単 | ローカル、開発環境 |
SSE | リアルタイム出力 | 一方向ストリーミング | Webクライアント |
Streamable HTTP | Web統合、クラウド環境 | 双方向ストリーミング、柔軟性 | Webアプリ、クラウド |
[2][3]
STDIO(標準入出力)- 特長
- 通信方式:ローカルプロセス間で stdin / stdout を使ってJSON-RPCメッセージをやりとり
- 構成:クライアントがサーバーを子プロセスとして起動し、標準入出力で通信
- 利点
- ネットワーク不要:完全にローカルで動作
- 低レイテンシ:メモリやパイプを使った高速通信
- 欠点
- 拡張性が低い:複数クライアント対応が困難
- 分散処理に不向き:リモートアクセス不可
- 適用例
- ローカルツールの統合
[4]
SSE(Server-Sent Events)- 特長
- 通信方式:HTTPによりサーバーからクライアントへ一方向のイベント送信
- 利点
- リアルタイム性:サーバーからの通知が可能
- 分散対応:ネットワーク越しの通信が可能
- 欠点
- 一方向通信:クライアントからサーバは別リクエストが必要
- 将来的に非推奨:Streamable HTTPに置き換わる予定
- 適用例
- 通知サービス
[5]
Streamable HTTP- 特長
- 通信方式:HTTPストリーミングによる通信
- 利点
- ステートレス:サーバーがステートレスで動作可能
- インフラ互換性: 既存のインフラを活用しやすい
- ストリーミング:長文生成に適している
- 欠点
- 実装コスト:セッション管理や状態保持が必要な場合の実装コストが大きい
- 適用例
- 分散システム
考察
社内でAIチャットボットを作る際に、外部ツール連携でMCPを使いたいと思っていました。
SSEの使用は将来的に非推奨であることと、クラウド環境など既存のインフラを生かしつつ高度なWeb統合を行うにはStreamable HTTPが適していると判断したため、今後開発するMCPの通信方式にはStreamable HTTPを採用していきたいと思いました。
まとめ
- MCPはAIアプリケーションが様々なツールと連携するための標準規格である
- STDIO、SSE、Streamable HTTPの3つの通信方式がある
- 既存のインフラを活用しつつ、高度なAIアプリケーションを作るならStreamable HTTPを使うのが望ましい
Discussion