mcpField
G
Google A2A Agent Example

Google A2A Agent Example

本地服务
github.com/system32miroAI 与智能体078 周前更新

关于 Google A2A Agent Example

这是一个使用 Python 和 Flask 实现 Google A2A 协议的示例,包含接收 Agent 任务的服务端,以及发现并调用它的客户端。服务端使用 OpenAI 的 GPT-4o-mini,并在需要网页搜索时通过 MCP 调用 Brave Search。

主要功能

  1. 01实现核心 A2A 接口
  2. 02通过 Agent Card 发现 Agent
  3. 03通过 HTTP 接收任务
  4. 04使用 GPT-4o-mini 生成回复
  5. 05使用 Brave Search 查询网页

适用场景

  1. 01了解 Agent 间任务交换
  2. 02测试 Agent 发现和任务提交
  3. 03为 A2A Agent 添加网页搜索

MCP 相关

需要网页搜索时,服务端通过 `MCPServerStdio` 使用 Brave Search MCP 服务。MCP 提供连接外部搜索工具的方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Google A2A Agent 示例

此仓库实现了一个基于 Google A2A 协议的简单 Agent-to-Agent(A2A)通信示例。A2A 是 Google 提出的标准,旨在通过标准化 API 让 AI Agent 彼此通信。

概述

该实现由两个主要组件组成:

  1. 服务端(server.py):基于 Flask 的服务端,充当 AI Agent。它实现了 A2A 协议的核心端点:

    • /.well-known/agent.json:提供 Agent 的元数据(Agent Card),用于描述其功能和 URL。
    • /tasks/send:接收其他 Agent(或 client.py 这样的客户端)发送的任务,使用 AI 模型(OpenAI 的 GPT-4o-mini)和外部工具(通过 MCP 使用 Brave Search)进行处理,并返回结果。
  2. 客户端(client.py):一个简单的 Python 脚本,用于演示如何与 A2A 服务端交互:

    • 获取 Agent Card,以发现该 Agent。
    • 向该 Agent 的 /tasks/send 端点发送任务(用户查询)。
    • 接收并打印 Agent 的响应。

架构

交互流程如下所示:

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 Server(通过 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
    

    客户端将发现服务端,发送预设问题,并打印 Agent 的响应。

A2A 协议详情

Google 的 A2A 协议定义了 Agent 通过 HTTP 通信的标准方式。关键概念包括:

  • Agent Card(/.well-known/agent.json):描述 Agent 身份、功能(例如,是否支持流式传输)和 API 端点的标准 JSON 文档。
  • 任务 API(/tasks/send、/tasks/receive 等):用于交换任务和消息的端点。此示例仅实现必要的 /tasks/send。
  • 标准化消息格式:Agent 之间交换消息时使用的一致 JSON 结构,通常包含角色(user、agent)和内容部分。

如需了解更多信息,请参阅 Google A2A 协议官方文档(如有链接)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。