MCP・A2A・AG-UI——これらは競合している規格ではありません。

2026年、AIエージェント開発の現場でこの3つの略語が頻繁に登場するようになりました。「どれを選ぶのか」「全部使うのか」という疑問は多いですが、答えはシンプルです。それぞれが異なるレイヤーの問題を解決する補完的な規格であり、本番システムでは3つを組み合わせて使います。

この記事でわかること:

  • MCP・A2A・AG-UIそれぞれの役割と担うレイヤー
  • 3つのプロトコルが連携する実際の処理フロー
  • 設計時にどのプロトコルを選ぶかの判断基準

https://www.copilotkit.ai/blog/the-state-of-agentic-ui-comparing-ag-ui-mcp-ui-and-a2ui-protocols

3つのプロトコルの全体像

TCP・HTTP・HTMLがそれぞれ異なるレイヤーを担ってWebを成立させているように、MCP・A2A・AG-UIも担う範囲が明確に分かれています。

プロトコル 開発元 担うレイヤー
MCP Anthropic エージェント ↔ ツール・データ
A2A Google / Linux Foundation エージェント ↔ エージェント
AG-UI CopilotKit エージェント ↔ ユーザーインターフェース

この3つが組み合わさることで、ツール呼び出し・エージェント協調・UI通信というAIエージェントの3つの課題を解決できます。

MCP — ツールアクセスの標準化

MCP(Model Context Protocol)はAnthropicが策定したプロトコルで、エージェントが外部ツールやデータを利用する方法を統一します。登場以前は、データベースへのアクセスやAPIの呼び出しはすべて独自実装が必要でした。

MCPはJSON-RPC 2.0ベースのクライアント・サーバーモデルを採用しています。MCPサーバーが公開するのは主に3つです。モデルが呼び出せる関数である「ツール」、参照できる読み取り専用データの「リソース」、再利用可能なテンプレートの「プロンプト」です。

AWSはBedrock AgentCore RuntimeでS3・DynamoDB・CloudWatchなど主要サービスのMCPサーバーをオープンソース提供しています。

MCPが適しているのは「エージェントが外部システムを操作する必要があるとき」です。エージェント同士の連携はMCPの担当外であり、それはA2Aが解決します。

A2A — エージェント同士の協調

A2A(Agent-to-Agent Protocol)はGoogleが主導し、Linux Foundationに移管されたオープン規格です。異なるフレームワークで作られたエージェントが、互いの内部実装を知らずに協調する仕組みを定義しています。

最大の特徴は「不透明性」です。エージェントは自分のツールや内部ロジックを公開せず、できること(スキル)だけを外部に宣言します。LangGraphで作ったエージェントとCrewAIで作ったエージェントが、実装の違いを気にせず連携できます。

エージェントは /.well-known/agent.json に「エージェントカード」を公開し、名前・スキル・入出力形式・認証方式を宣言します。タスクはsubmitted → working → completedのライフサイクルで管理され、長時間処理はServer-Sent Eventsでストリーミング更新できます。

A2Aが向いているのは、異なるチームや企業が作ったエージェントを組み合わせるケースです。ツール呼び出しのみであればMCPで十分で、A2Aは不要です。

AG-UI — エージェントとUIのリアルタイム通信

AG-UI(Agent-to-UI Protocol)はCopilotKitが開発したオープン規格で、エージェントバックエンドとユーザー向けフロントエンドをリアルタイムでつなぎます。

MCPとA2Aがバックエンドのロジックをカバーするのに対し、AG-UIはユーザーが実際に操作する画面との通信を標準化します。課題はシンプルで「エージェントが処理している間、ユーザーはローディングスピナーしか見えない」という問題です。

AG-UIは約16種類のイベントタイプを定義しています。処理の開始・終了を通知するライフサイクルイベント、テキストをトークン単位で流すテキストメッセージイベント、実行中ツールをユーザーに見せるツールイベント、UI状態を差分更新するステートデルタ、重要な操作前にユーザーの承認を求めるインタラプトなどです。

2026年3月にはAWS Bedrock AgentCore RuntimeがAG-UIサポートを追加しています。LangGraph・CrewAI・PydanticAI・Mastraなど主要フレームワークとの統合も用意されています。バックグラウンドのバッチ処理などユーザーとのやり取りが不要なケースでは、AG-UIは過剰になります。

3つのプロトコルが連携する処理フロー

実際の本番環境では、3つのプロトコルは次のように連携します。

ユーザーが質問を送ると、AG-UIがフロントエンドからスーパーバイザーエージェントへリクエストを転送し、リアルタイムの進捗を返します。スーパーバイザーはMCPでデータベースやAPIを直接呼び出します。複雑なサブタスクはA2Aで専門エージェントに委譲され、結果がA2A → スーパーバイザー → AG-UI → ユーザーの順で返ります。

各プロトコルの担当範囲が明確に分かれているため、競合は起きません(参考)。

設計時の判断基準

新しいエージェントシステムを設計するときは、次の3つの問いで判断できます。

「エージェントが外部ツールやデータにアクセスするか」——YesならMCPです。

「複数のエージェントが協調するか」——YesならA2Aです。特に異なるチームや企業が作ったエージェントを連携させる場合に効果的です。

「エージェントがリアルタイムでユーザーに情報を届けるか」——YesならAG-UIです。ツールの実行状況の表示、ユーザーの承認待ち、フォームやダッシュボードの更新を扱います。

AWS Bedrock AgentCore Runtimeは3つすべてをネイティブにサポートしており、同一インフラ上にデプロイできます。MCP・A2A・AG-UIをそれぞれの担当レイヤーで分けて設計することが、保守性の高いAIエージェントシステムへの近道です。