mcpField
G
Google A2A Agent Example

Google A2A Agent Example

ローカル
github.com/system32miroAI・エージェント078 週間前に更新

Google A2A Agent Example について

Python と Flask で Google A2A プロトコルを実装したサンプルです。タスクを受け付けるサーバーと、サーバーを検出して呼び出すクライアントで構成されます。サーバーは OpenAI の GPT-4o-mini を使い、ウェブ検索が必要な場合は MCP 経由で Brave Search を利用します。

主な機能

  1. 01A2A の主要エンドポイントを実装
  2. 02Agent Card によるエージェント検出
  3. 03HTTP 経由のタスク受付
  4. 04GPT-4o-mini による応答生成
  5. 05Brave Search によるウェブ検索

活用シーン

  1. 01エージェント間のタスク交換の検証
  2. 02エージェント検出とタスク送信のテスト
  3. 03A2A エージェントへのウェブ検索追加

MCP 対応

ウェブ検索が必要な場合、サーバーは `MCPServerStdio` を通じて Brave Search MCP サーバーを利用します。MCP により外部検索ツールに接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Google A2A エージェントの例

このリポジトリでは、Google の A2A プロトコルに基づく、シンプルなエージェント間(A2A)通信の例を実装しています。A2A は、標準化された API を通じて AI エージェント同士が通信できるようにする、Google が提案する標準規格です。

概要

この実装は、次の 2 つの主要なコンポーネントで構成されています。

  1. サーバー(server.py):AI エージェントとして動作する Flask ベースのサーバーです。A2A プロトコルの主要なエンドポイントを実装しています。

    • /.well-known/agent.json:エージェントの機能と URL を記述したメタデータ(エージェントカード)を提供します。
    • /tasks/send:ほかのエージェント(または client.py のようなクライアント)からタスクを受け取り、AI モデル(OpenAI の GPT-4o-mini)と外部ツール(MCP 経由の Brave Search)を使って処理し、結果を返します。
  2. クライアント(client.py):A2A サーバーとのやり取りを実演する、シンプルな Python スクリプトです。

    • エージェントカードを取得して、エージェントを検出します。
    • エージェントの /tasks/send エンドポイントにタスク(ユーザーからの質問)を送信します。
    • エージェントの応答を受け取り、表示します。

アーキテクチャ

やり取りの流れは、次のように図示できます。

sequenceDiagram
    participant C as Client (client.py)
    participant S as A2A Server (server.py)
    participant MCP as Brave MCP Server
    participant OAI as OpenAI API

    C->>S: GET /.well-known/agent.json (Discover Agent)
    S-->>C: Agent Card JSON
    C->>S: POST /tasks/send (Task Request with User Query)
    S->>OAI: Process Query (Initial processing)
    Note right of S: Agent decides to use Brave Search
    S->>MCP: Search Request
    MCP-->>S: Search Results
    S->>OAI: Process Query + Search Results
    OAI-->>S: Final Response Text
    S-->>C: Task Response (with Agent's Final Message)
  • クライアントがA2A サーバーを検出して、通信を開始します。
  • クライアントがタスク(例:「Google A2A とは何ですか?」)をサーバーに送信します。
  • サーバーは pydantic-ai ライブラリを使用し、次のコンポーネントと連携します。
    • リクエストを理解して応答を生成するためのOpenAI API。
    • ウェブ検索が必要な場合に使用する、Brave Search MCP サーバー(MCPServerStdio を介して管理されます)。MCP(Model Context Protocol)は、AI モデルが外部ツールやデータソースとやり取りする方法を標準化します。
  • サーバーが最終的な応答をクライアントに返します。

セットアップ

  1. リポジトリをクローンします。

    git clone <repository_url>
    cd <repository_directory>
    
  2. 仮想環境を作成して有効化します。

    • Windows:
      python -m venv venv
      .\venv\Scripts\activate
      
    • macOS/Linux:
      python3 -m venv venv
      source venv/bin/activate
      
  3. .env ファイルを作成します。 ルートディレクトリに .env という名前のファイルを作成し、API キーを追加します。

    OPENAI_API_KEY=your_openai_api_key
    BRAVE_API_KEY=your_brave_api_key
    

    (your_openai_api_key と your_brave_api_key を実際のキーに置き換えてください)

  4. 依存関係をインストールします。

    pip install -r requirements.txt
    
  5. サーバーを起動します。 ターミナルを開いて仮想環境を有効化し、次のコマンドを実行します。

    python server.py
    

    サーバーは通常、http://localhost:5000 で起動します。

  6. クライアントを実行します。 別のターミナルを開いて仮想環境を有効化し、次のコマンドを実行します。

    python client.py
    

    クライアントがサーバーを検出し、あらかじめ定義された質問を送信して、エージェントの応答を表示します。

A2A プロトコルの詳細

Google の A2A プロトコルは、エージェントが HTTP 経由で通信するための標準的な方法を定義しています。主な概念は次のとおりです。

  • エージェントカード(/.well-known/agent.json):エージェントの ID、機能(ストリーミング対応など)、API エンドポイントを記述した標準的な JSON ドキュメントです。
  • タスク API(/tasks/send、/tasks/receive など):タスクやメッセージを交換するためのエンドポイントです。この例では、必須の /tasks/send のみを実装しています。
  • 標準化されたメッセージ形式:エージェント間で交換されるメッセージの、一貫性のある JSON 構造です。通常、役割(user、agent)とコンテンツパートが含まれます。

詳細については、Google A2A プロトコルの公式ドキュメントを参照してください(リンクがある場合)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。