Open2

A2A Protocol, MCPについてキャッチアップする

zerebomzerebom

Agent2Agent

https://cloud.google.com/blog/ja/products/ai-machine-learning/a2a-a-new-era-of-agent-interoperability

下記は記事から参照した表現も含む。重要そうな部分をピックアップ

概要

  • AI エージェント同士がコミュニケーションを取り、安全に情報交換し、様々な企業プラットフォーム上やアプリケーション上でアクションを調整できるようにするためのもの
  • MCPを補完するオープン プロトコルで、エージェントに役立つツールとコンテキストを提供する
  • A2A は開発者にプロトコル準拠の他のエージェントと接続可能なエージェントを構築する機能を提供する

設計原則

  • A2A は、エージェントが記憶やツール、コンテキストを共有していない場合でも、構造化されていないモダリティでも自然に協力できるようにすることに重点を置いている
  • HTTP、SSE、JSON-RPC などの広く利用されている標準を基盤とする
  • 人間が介在する数時間から数日かかる詳細調査まで、幅広いシナリオに対応できる

A2A の仕組み・機能

  • 「クライアント」エージェントと「リモート」エージェント間の通信を促進する
    • クライアント エージェントはタスクの作成と伝達を担当し、リモートエージェントはそのタスクを実行して正確な情報を提供したり、適切な行動を取る
  • 主な機能
    • JSON 形式の「Agent Card」を使用して自身の機能を公開することで、クライアント エージェントがタスクを実行できる最適なエージェントを特定できる
    • タスクの完了を定義・ライフサイクルを管理する。成果物はアーティファクトと呼ぶ
    • エージェント同士はメッセージを送信し合う
    • 各メッセージの中のコンテンツである「パーツ」を適切なフォーマットで呼び合う

Agent Cardの中身

  • 出来ることやエンドポイントなどが記述されている
{
  "schema_version": "1.0",
  "name": "Example Recruiter Agent",
  "description": "Finds TypeScript engineers and books interviews",
  "endpoint": "https://recruiter.example.com/a2a",
  "authentication": {
    "type": "bearer",
    "token_url": "https://recruiter.example.com/oauth/token"
  },
  "capabilities": [
    { "skill": "candidate.search", "description": "Search by skill & location" },
    { "skill": "calendar.schedule", "description": "Book interview slots" }
  ],
  "contact": { "email": "support@example.com" }
}

タスクのリクエスト例

  • メッセージやメソッドを含む
POST https://recruiter.example.com/a2a
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": "req‑123",
  "method": "tasks/sendSubscribe",
  "params": {
    "task": {
      "messages": [
        {
          "role": "user",
          "parts": [
            { "type": "text", "text": "Find mid‑level TypeScript engineers in Tokyo" }
          ]
        }
      ],
      "metadata": { "ttl": "P7D" }   // ISO‑8601 期間表記
    }
  }
}

A2AとMCPの関係

  • MCP: LLMと外部ツール・データ連係するための機構
  • A2A: エージェント間の連携をするための機構
    • A2Aサーバーはスキーマではなくプレーンなテキストで送受信するので、処理の中身はサーバーの実装による。より抽象度の高いサーバー間の呼び出し合いの機構

関連情報

https://github.com/google/A2A

https://google.github.io/A2A/#/

https://blog.lai.so/remote-mcp/

zerebomzerebom

MCP

https://github.com/modelcontextprotocol

https://modelcontextprotocol.io/introduction

概要

  • MCPとは?
    • 生成AIモデルに文脈情報を渡しやすくするための技術規格
  • MCPホストとは?
    • MCPクライアントを使っている人やアプリケーション
      • 例えば Claude Desktopを使っているローカルPC, クラウドのバックエンドなど
      • ホスト内に多数のクライアントがインスタンスとして同居
  • MCPクライアントとは?
    • MCPを使って、MCPサーバーにアクセスする窓口。特定のサーバーとセッションを担当する
      • 例えばCline, Cursorなど
  • MCPサーバーとは?
    • AIが活用できるツールやリソースを提供するサーバー
    • ただ、npmなどでローカルにインストールして、クライアントアプリ内で動作させることが多い
  • リモートMCPサーバとは?
    • MCPサーバーをローカルではなく クラウド上に常駐 させ、IDE/CLI から呼び出す運用形態
    • MCPサーバーをどこか(クラウド)に常駐させ、複数の Host/Client から共有で呼び出す


https://modelcontextprotocol.io/introduction

通信のコア要素

プロトコル層

  • メッセージの枠組みを定義し、リクエスト・レスポンスを結びつける
  • サーバーとクライアントのやりとりを管理する

トランスポート層

  • バイト列をどこでどう送るかを担う

メッセージタイプ

  • Request, Resutls, Errors, Notificationsの4種類がある

通信の行い方

  • MCP Clienetがinitialize requestをServerに送る
    • バージョンや機能情報など
  • Serverがinitialize responseをClienetに送る
  • Message でやりとりが行われる

関連情報

https://zenn.dev/mkj/articles/0ed4d02ef3439c

https://zenn.dev/kazuwombat/articles/d8789724f10092

https://speakerdeck.com/minorun365/yasasiimcpru-men

https://zenn.dev/karaage0703/articles/42f7b0655a6af8

https://zenn.dev/arrowkato/articles/mcp_security

https://zenn.dev/cloud_ace/articles/model-context-protocol-problem

https://blog.lai.so/remote-mcp/