mcpField
G
Google A2A Agent Example

Google A2A Agent Example

Local
github.com/system32miroAI & Agents0Updated 78w ago

About Google A2A Agent Example

A Python and Flask example of Google's A2A protocol, with a server that accepts agent tasks and a client that discovers and calls it. The server uses OpenAI's GPT-4o-mini and Brave Search through MCP when web search is needed.

Key features

  1. 01Implements core A2A endpoints
  2. 02Discovers agents through Agent Card
  3. 03Accepts tasks over HTTP
  4. 04Uses GPT-4o-mini for responses
  5. 05Uses Brave Search for web queries

Use cases

  1. 01Exploring agent-to-agent task exchange
  2. 02Testing agent discovery and task submission
  3. 03Adding web search to an A2A agent

MCP support

The server uses a Brave Search MCP server through `MCPServerStdio` when web search is needed. MCP provides the connection to external search tools.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Google A2A Agent Example

This repository implements a simple Agent-to-Agent (A2A) communication example based on Google's A2A protocol. A2A is Google's proposed standard for enabling AI agents to communicate with each other through a standardized API.

Overview

The implementation consists of two main components:

  1. Server (server.py): A Flask-based server acting as an AI agent. It implements the core A2A protocol endpoints:

    • /.well-known/agent.json: Provides the agent's metadata (Agent Card), describing its capabilities and URL.
    • /tasks/send: Accepts tasks from other agents (or clients like client.py), processes them using an AI model (OpenAI's GPT-4o-mini) and external tools (Brave Search via MCP), and returns the result.
  2. Client (client.py): A simple Python script demonstrating how to interact with the A2A server:

    • Discovers the agent by fetching its Agent Card.
    • Sends a task (a user query) to the agent's /tasks/send endpoint.
    • Receives and prints the agent's response.

Architecture

The interaction flow can be visualized as follows:

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)
  • The Client initiates communication by discovering the A2A Server.
  • The Client sends a task (e.g., "What is Google A2A?") to the Server.
  • The Server uses the pydantic-ai library, which coordinates with:
    • The OpenAI API to understand the request and generate responses.
    • A Brave Search MCP Server (managed via MCPServerStdio) when web search is needed. MCP (Model Context Protocol) standardizes how AI models interact with external tools/data sources.
  • The Server sends the final response back to the Client.

Setup

  1. Clone the repository:

    git clone <repository_url>
    cd <repository_directory>
    
  2. Create and activate a virtual environment:

    • Windows:
      python -m venv venv
      .\venv\Scripts\activate
      
    • macOS/Linux:
      python3 -m venv venv
      source venv/bin/activate
      
  3. Create a .env file: Create a file named .env in the root directory and add your API keys:

    OPENAI_API_KEY=your_openai_api_key
    BRAVE_API_KEY=your_brave_api_key
    

    (Replace your_openai_api_key and your_brave_api_key with your actual keys)

  4. Install dependencies:

    pip install -r requirements.txt
    
  5. Run the server: Open a terminal, activate the virtual environment, and run:

    python server.py
    

    The server will start, typically on http://localhost:5000.

  6. Run the client: Open a separate terminal, activate the virtual environment, and run:

    python client.py
    

    The client will discover the server, send a predefined question, and print the agent's response.

A2A Protocol Details

Google's A2A protocol defines a standard way for agents to communicate via HTTP. Key concepts include:

  • Agent Card (/.well-known/agent.json): A standard JSON document describing an agent's identity, capabilities (e.g., streaming support), and API endpoints.
  • Task API (/tasks/send, /tasks/receive, etc.): Endpoints for exchanging tasks and messages. This example only implements the essential /tasks/send.
  • Standardized Message Format: A consistent JSON structure for messages exchanged between agents, typically including roles (user, agent) and content parts.

For more in-depth information, refer to the official Google A2A protocol documentation (link if available).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.