内容
# a2a-桥接-mcp
用于代理间通信的MCP服务器 -- 跨MCP代理的能力发现、任务委托和结果聚合。
MCP连接代理与工具,但不连接代理之间。此服务器在MCP协议中添加了标准化的代理间层 -- 注册代理、发现能力、委托任务和向多个代理广播工作。灵感来自谷歌的A2A协议。
## 安装
```bash
npx a2a-桥接-mcp
```
### 克劳德桌面版
添加到 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"a2a-桥接": {
"command": "npx",
"args": ["a2a-桥接-mcp"]
}
}
}
```
### 从源码编译
```bash
git clone https://github.com/mdfifty50-boop/a2a-桥接-mcp.git
cd a2a-桥接-mcp
npm install
node src/index.js
```
## 工具
### 注册代理
用能力注册代理以供其他代理发现。
| 参数 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `代理ID` | 字符串 | 必需 | 唯一代理标识符 |
| `能力` | 字符串数组 | 必需 | 能力字符串(例如 `["代码审查", "总结"]`) |
| `描述` | 字符串 | `""` | 人类可读的描述 |
| `输入模式` | 对象 | `{}` | 接受的输入的JSON模式 |
| `输出模式` | 对象 | `{}` | 生成的输出的JSON模式 |
| `端点` | 字符串 | `""` | 可选的端点或传输提示 |
### 发现代理
根据模糊文本相似性评分查找满足能力需求的代理。
| 参数 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `所需能力` | 字符串 | 必需 | 搜索的能力 |
| `最低评分` | 数字 | 0.3 | 最低相似性评分(0-1) |
返回按相关性排序的评分匹配结果。
### 委托任务
将任务委托给特定的已注册代理。创建具有状态生命周期的跟踪任务。
| 参数 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `委托代理` | 字符串 | 必需 | 委托代理ID |
| `目标代理` | 字符串 | 必需 | 目标代理ID |
| `任务描述` | 字符串 | 必需 | 目标代理应执行的操作 |
| `输入数据` | 对象 | `{}` | 任务的输入数据 |
| `超时毫秒` | 数字 | 30000 | 以毫秒为单位的超时时间 |
返回用于跟踪的 `任务ID`。
### 获取任务结果
获取委托任务的状态和结果。 也用于执行代理提交结果。
| 参数 | 类型 | 描述 |
|-------|------|-------------|
| `任务ID` | 字符串 | 来自 `委托任务` 或 `广播任务` 的任务ID |
| `提交结果` | 对象 | (可选)提交完成结果 |
| `提交错误` | 字符串 | (可选)提交失败错误 |
状态生命周期:`待处理` -> `运行中` -> `已完成` / `失败`。
### 广播任务
向所有匹配能力的代理发送任务。 为每个匹配项创建单独的跟踪任务。
| 参数 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `广播代理` | 字符串 | 必需 | 广播代理ID |
| `所需能力` | 字符串 | 必需 | 匹配的能力 |
| `任务描述` | 字符串 | 必需 | 匹配的代理应执行的操作 |
| `输入数据` | 对象 | `{}` | 输入数据 |
| `最低评分` | 数字 | 0.3 | 最低匹配评分 |
| `超时毫秒` | 数字 | 30000 | 每个代理的超时时间 |
返回用于聚合的任务ID列表。
### 获取代理卡
获取代理的完整能力卡,包括模式、统计信息和任务历史。
| 参数 | 类型 | 描述 |
|-------|------|-------------|
| `代理ID` | 字符串 | 代理标识符 |
返回能力、输入/输出模式、成功率和任务计数。灵感来自谷歌A2A代理卡。
### 列出代理
列出所有已注册的代理,可选地按能力过滤。
| 参数 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `过滤器` | 字符串 | `""` | 按能力关键词过滤(空 = 所有) |
## 资源
| URI | 描述 |
|-----|-------------|
| `a2a://代理` | 所有具有能力和统计信息的已注册代理 |
## 使用模式
```
1. 注册代理 -- 每个代理在启动时注册
2. 发现代理 -- 查找可以处理任务的代理
3. 委托任务 -- 向特定代理发送工作
或 广播任务 -- 向所有匹配的代理发送工作
4. 获取任务结果 -- 轮询完成情况或提交结果
5. 获取代理卡 -- 检查代理的完整配置文件
6. 列出代理 -- 代理网络概览
```
### 多代理工作流示例
```
代理A(协调器):
1. 注册代理(代理ID="协调器", 能力=["规划", "协调"])
2. 发现代理(所需能力="代码审查")
-> 找到代理B(评分:0.95)
3. 委托任务(来自="协调器", 目标="代理B", 任务="审查PR #42")
-> 任务ID: "task_1234"
4. 获取任务结果(任务ID="task_1234")
-> 状态: "已完成", 结果: { 已批准: true, 评论: [...] }
代理B(工作器):
1. 注册代理(代理ID="代理B", 能力=["代码审查", "检查"])
2. (通过外部通知或轮询接收任务)
3. 获取任务结果(任务ID="task_1234", 提交结果={ 已批准: true })
```
## 许可证
MIT