
A2a
将LLM与支持Agent-to-Agent协议的代理桥接,从而能够在不需要直接实现协议的情况下,将复杂任务委托给专门的外部代理。
概述
A2A 客户端 MCP 服务器
一个作为 Agent-to-Agent (A2A) 协议客户端的 MCP 服务器,允许 LLM 通过 Model Context Protocol (MCP) 与 A2A 代理进行交互。
功能
- 连接到任何兼容 A2A 的代理
- 发送和接收消息
- 跟踪和管理任务
- 支持流式响应
- 查询代理功能和元数据
安装
bash
# 全局安装
npm install -g a2a-client-mcp-server
# 或使用 npx 直接运行
npx a2a-client-mcp-server
配置
环境变量
A2A_ENDPOINT_URL
: 要连接的 A2A 代理的 URL(默认值: "http://localhost:41241")
与 Claude Desktop 一起使用
将以下内容添加到您的 claude_desktop_config.json
中:
NPX
bash
npm run build
npm link
json
{
"mcpServers": {
"a2a-client": {
"command": "npx",
"args": ["-y", "a2a-client-mcp-server"],
"env": {
"A2A_ENDPOINT_URL": "http://localhost:41241"
}
}
}
}
Docker
构建 Docker 镜像:
bash
docker build -t a2a-client-mcp-server .
配置 Claude Desktop:
json
{
"mcpServers": {
"a2a-client": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"A2A_ENDPOINT_URL",
"a2a-client-mcp-server"
],
"env": {
"A2A_ENDPOINT_URL": "http://localhost:41241"
}
}
}
}
可用工具
a2a_send_task
向 A2A 代理发送任务
message
(string): 发送给代理的消息taskId
(string, 可选): 任务 ID(如果未提供则生成)
a2a_get_task
获取任务的当前状态
taskId
(string): 要检索的任务的 ID
a2a_cancel_task
取消正在运行的任务
taskId
(string): 要取消的任务的 ID
a2a_send_task_subscribe
发送任务并订阅更新(流式)
message
(string): 发送给代理的消息taskId
(string, 可选): 任务 ID(如果未提供则生成)maxUpdates
(number, 可选): 最大更新次数(默认值: 10)
a2a_agent_info
获取连接的 A2A 代理的信息
- 无需参数
资源
服务器提供了对两个 MCP 资源的访问:
a2a://agent-card
: 关于连接的 A2A 代理的信息a2a://tasks
: 最近的 A2A 任务列表
使用示例
此示例展示了如何使用 A2A 客户端 MCP 服务器与 Coder 代理进行交互:
首先,让我探索一下我们连接的 A2A 代理是什么。
我将使用 a2a_agent_info 工具来检查代理详细信息。
该代理提供了一项编码服务,可以根据自然语言指令生成文件。让我们创建一个简单的 Python 脚本。
我将使用 a2a_send_task 工具发送请求:
任务: "创建一个计算斐波那契数列的 Python 函数"
现在我可以使用 a2a_get_task 和上一个响应中的任务 ID 来检查任务状态。
代理已创建了所需的 Python 代码。我现在可以在我的项目中检索和使用这段代码。
开发
bash
# 安装依赖
npm install
# 构建项目
npm run build
# 以开发模式运行
npm run watch
许可证
MIT