MCP-A2A-网关
  ](https://smithery.ai/server/@yw0nam/mcp_a2a_gateway)
cover_image 一种网关服务器,将模型上下文协议(MCP)与代理到代理(A2A)协议连接起来,使MCP兼容的AI助手(如Claude)能够与A2A代理无缝交互。
概述
该项目作为两个尖端AI代理协议之间的集成层:
- 模型上下文协议(MCP)MCP由Anthropic开发,允许AI助手连接到外部工具和数据源。它规范了人工智能应用程序和大型语言模型如何以安全、可组合的方式连接到外部资源。
- 代理对代理协议(A2A)A2A由谷歌开发,通过标准化的JSON-RPC接口实现不同AI代理之间的通信和互操作性。
通过桥接这些协议,该服务器允许MCP客户端(如Claude)通过统一的接口发现、注册、通信和管理A2A代理上的任务。
快速开始
🎉 该软件包现在可以在PyPI上使用!
无需安装
# Run with default settings (stdio transport)
uvx mcp-a2a-gateway
# Run with HTTP transport for web clients
MCP_TRANSPORT=streamable-http MCP_PORT=10000 uvx mcp-a2a-gateway
# Run with custom data directory
MCP_DATA_DIR="/Users/your-username/Desktop/a2a_data" uvx mcp-a2a-gateway
# Run with specific version
uvx mcp-a2a-gateway==0.1.6
# Run with multiple environment variables
MCP_TRANSPORT=stdio MCP_DATA_DIR="/custom/path" LOG_LEVEL=DEBUG uvx mcp-a2a-gateway发展(地方)
# Clone and run locally
git clone https://github.com/yw0nam/MCP-A2A-Gateway.git
cd MCP-A2A-Gateway
# Run with uv
uv run mcp-a2a-gateway
# Run with uvx from local directory
uvx --from . mcp-a2a-gateway
# Run with custom environment for development
MCP_TRANSPORT=streamable-http MCP_PORT=8080 uvx --from . mcp-a2a-gateway演示
1、在A2A示例中运行hello world代理
also support cloud deployed Agent
2、使用Claude或github copilot注册代理。
register_claude register_copilot
3、使用Claude向hello Agent发送任务并获取结果。
4、使用Claude检索任务结果。
特性
- 代理管理
- 在网桥服务器上注册A2A代理 - 列出所有注册代理人 - 不再需要时注销代理
- 沟通
- 向A2A代理发送消息并接收响应 - 异步消息发送以获得即时服务器响应。 - 实时流式传输A2A代理的响应
- 任务管理
- 跟踪哪个A2A代理处理哪个任务 - 使用任务ID检索任务结果 - 获取所有任务及其状态的列表。 - 取消正在运行的任务
- 运输支持
- 多种传输类型:stdio、可流式传输http、SSE - 使用MCP_transport环境变量配置传输类型
先决条件
在开始之前,请确保已安装以下内容:
- Python 3.11+
- 紫外线 (用于地方发展)
安装
Option 1: Direct Run with uvx (Recommended)
使用直接运行,无需安装 uvx:
uvx mcp-a2a-gatewayOption 2: Local Development
- 克隆存储库:
git clone https://github.com/yw0nam/MCP-A2A-Gateway.git
cd MCP-A2A-Gateway- 使用紫外线运行:
uv run mcp-a2a-gateway- 或者使用带有本地路径的uvx:
uvx --from . mcp-a2a-gatewayOption 3: HTTP (For Web Clients)
使用HTTP传输启动服务器:
# Using uvx
MCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gatewayOption 4: Server-Sent Events
使用SSE传输启动服务器:
# Using uvx
MCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gateway配置
环境变量
可以使用以下环境变量配置服务器:
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_TRANSPORT | stdio | 运输类型: stdio, streamable-http,或 sse |
MCP_HOST | 0.0.0.0 | HTTP/SSE传输主机 |
MCP_PORT | 8000 | HTTP/SSE传输端口 |
MCP_PATH | /mcp | HTTP端点路径 |
MCP_DATA_DIR | data | 持久数据存储目录 |
MCP_REQUEST_TIMEOUT | 30 | 请求超时(秒) |
MCP_REQUEST_IMMEDIATE_TIMEOUT | 2 | 立即响应超时(秒) |
LOG_LEVEL | INFO | 日志记录级别: DEBUG, INFO, WARNING, ERROR |
示例.env文件:
# Transport configuration
MCP_TRANSPORT=stdio
MCP_HOST=0.0.0.0
MCP_PORT=10000
MCP_PATH=/mcp
# Data storage
MCP_DATA_DIR=/Users/your-username/Desktop/data/a2a_gateway
# Timeouts
MCP_REQUEST_TIMEOUT=30
MCP_REQUEST_IMMEDIATE_TIMEOUT=2
# Logging
LOG_LEVEL=INFO运输类型
A2A MCP服务器支持多种传输类型:
- 标准 (默认):使用标准输入/输出进行通信
- 非常适合命令行使用和测试 - 未启动HTTP服务器 - Claude Desktop需要
- 可流式传输http (建议用于web客户端):支持流媒体的HTTP传输
- 建议用于生产部署 - 启动HTTP服务器以处理MCP请求 - 支持大响应的流式传输
- SSE:服务器发送事件传输
- 提供实时事件流 - 可用于实时更新
连接github副本
For HTTP/SSE Transport
将以下内容添加到sse或http的VS Code settings.json中:
"mcpServers": {
"mcp_a2a_gateway": {
"url": "http://0.0.0.0:10000/mcp"
}
}For STDIO Transport - Using uvx (Published Package)
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}For STDIO Transport - Using uvx (Local Development)
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "/path/to/MCP-A2A-Gateway", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}For STDIO Transport - Using uv (Local Development)
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/path/to/MCP-A2A-Gateway",
"run",
"mcp-a2a-gateway"
],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}连接claude桌面
Using uvx (Published Package)
将此添加到claude_config.json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uvx",
"args": ["mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}Using uvx (Local Development)
将此添加到claude_config.json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uvx",
"args": ["--from", "/path/to/MCP-A2A-Gateway", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}Using uv (Local Development)
将此添加到claude_config.json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uv",
"args": ["--directory", "/path/to/MCP-A2A-Gateway", "run", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}可用的MCP工具
服务器公开了以下MCP工具,用于与Claude等LLM集成:
代理管理
- 注册代理:在网桥服务器上注册A2A代理
{
"name": "register_agent",
"arguments": {
"url": "http://localhost:41242"
}
}- 列表_代理:获取所有注册代理人的列表
{
"name": "list_agents",
"arguments": {"dummy": "" }
}- 注销代理:从网桥服务器中删除A2A代理
{
"name": "unregister_agent",
"arguments": {
"url": "http://localhost:41242"
}
}消息处理
- send_message:向代理发送消息并获取响应的task_id
{
"name": "send_message",
"arguments": {
"agent_url": "http://localhost:41242",
"message": "What's the exchange rate from USD to EUR?",
"session_id": "optional-session-id"
}
}任务管理
- get_task_result:使用任务的ID检索任务的结果
{
"name": "get_task_result",
"arguments": {
"task_id": "b30f3297-e7ab-4dd9-8ff1-877bd7cfb6b1",
}
}- get_task_list:获取所有任务及其状态的列表。
{
"name": "get_task_list",
"arguments": {}
}路线图和如何做出贡献
我们正在积极开发和改进网关!我们欢迎各种捐助。这是我们目前的发展路线图,重点是首先建立一个坚如磐石的基础。
核心稳定性和开发经验(需要帮助!👍)
这是我们目前的重点。我们的目标是使网关尽可能稳定和易于使用。
- \[ \] 实现流媒体响应:完全支持A2A代理的流式响应。
- \[ \] 加强错误处理:为所有场景提供更清晰的错误消息和正确的HTTP状态代码。
- \[ \] 输入验证:在注册过程中对代理URL进行消毒和验证,以提高安全性。
- \[ \] 添加健康检查终结点:一个简单的
/health用于监视服务器状态的端点。 - \[ \] 配置验证:启动时检查必要的环境变量。
- \[ \] 综合集成测试:增加测试覆盖率以确保可靠性。
- \[ \] 取消任务:执行任务取消
- \[ \] 实施流媒体更新:实现流任务更新。以便用户检查进度。
社区与分销
- \[x\] 简易安装:添加对的支持
uvx - \[ \] Docker支持:提供Docker Compose设置以便于部署。
- \[ \] 更好的文档:创建一个专门的文档网站或扩展Wiki。
______________________________________________________________________
想贡献吗? 查看问题选项卡,或随时打开一个新的选项卡来讨论您的想法!
许可证
此项目根据Apache许可证2.0版获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 人类学 模型上下文协议
- Google for the 代理对代理协议
- FastMCP库的贡献者
- 贡献者 A2A MCP服务器 (这个项目深受这个回购的启发。)
自动发布和发布
该项目通过GitHub Actions使用自动发布实现无缝发布。
自动发布流程
选项1:使用发布脚本(推荐)
# Patch release (0.1.6 → 0.1.7)
./release.sh patch
# Minor release (0.1.6 → 0.2.0)
./release.sh minor
# Major release (0.1.6 → 1.0.0)
./release.sh major脚本将:
- ✅ 检查你是否在主分支上,工作目录是否干净
- 📈 自动插入版本
pyproject.toml - 🔨 在本地构建和测试包
- 📤 提交版本更改并创建git标签
- 🚀 推送到GitHub,触发PyPI自动发布
选项2:手动创建标签
# Update version in pyproject.toml manually
# Then create and push a tag
git add pyproject.toml
git commit -m "chore: bump version to 0.1.7"
git tag v0.1.7
git push origin main
git push origin v0.1.7选项3:GitHub发布
- 首选https://github.com/yw0nam/MCP-A2A-Gateway/releases
- 点击“创建新版本”
- 选择或创建标签(例如。,
v0.1.7) - 填写发布说明
- 发布发布
设置自动发布
若要启用自动发布,请将您的PyPI API令牌添加到GitHub机密:
- 获取PyPI API令牌:
- 首选https://pypi.org/manage/account/token/ - 创建具有“整个帐户”范围的新令牌 - 复制令牌(以开头 pypi-)
- 添加到GitHub Secrets:
- 转到您的存储库→ 设置→ 秘密与变量→ 行动 - 添加新的存储库密钥: - 名字: PYPI_API_TOKEN - 价值:您的PyPI令牌
- 测试工作流:
- 推送标签或创建发布 - 检查“操作”选项卡以了解发布状态
手工出版
对于紧急释放或本地测试:
# Build and get manual publish instructions
./publish.sh
# Or publish directly (with credentials configured)
uv build
uv publish