MCP2ANP Bridge Server
Enables MCP clients like Claude Desktop to interact with ANP (Agent Network Protocol) agents through three core tools: authentication setup, document fetching, and OpenRPC method invocation. Converts ANP's crawler-style interaction paradigm into MCP-compatible tools for seamless agent communication.
README
MCP2ANP
MCP to ANP Bridge Server - 让任何支持 MCP 的应用,像"本地工具"一样访问 ANP 智能体
概述
MCP2ANP 是一个 本地 MCP 服务器,将 ANP (Agent Network Protocol) 的"爬虫式"交互范式转换为 MCP (Model Control Protocol) 工具,使 Claude Desktop、Cursor、各类 IDE 等 MCP 客户端无需改造即可访问 ANP 智能体。
核心特性
- 🔧 三个核心工具:
anp.setAuth、anp.fetchDoc、anp.invokeOpenRPC - 🔐 DID 认证支持: 本地 DID 文档和私钥管理
- 🌐 协议适配: ANP 爬虫式交互 ↔ MCP 工具式交互
- 🚀 本地服务: 无需远程服务器,直接运行在本地
- 📊 结构化日志: 完整的操作追踪和调试信息
- 🧪 全面测试: 单元测试和集成测试覆盖
架构设计
flowchart LR
subgraph MCP Client
U[LLM / 前端] -->|call tool| T1[anp.fetchDoc]
U -->|call tool| T2[anp.invokeOpenRPC]
U -->|optional| T0[anp.setAuth]
end
subgraph ANP Bridge
T1 --> P1[解析/抽链/缓存]
T2 --> A1[OpenRPC 适配器]
T0 --> S1[会话级授权上下文]
P1 --> S1
A1 --> S1
end
subgraph ANP Side
D1[AgentDescription] -.-> D2[Informations]
D1 -.-> D3[Interfaces]
A1 -->|JSON-RPC| E1[OpenRPC Endpoint]
P1 -->|HTTP GET| D1
P1 -->|HTTP GET| D2
P1 -->|HTTP GET| D3
end
快速开始
安装
# 克隆项目
git clone <repository-url>
cd mcp2anp
# 创建 Python 3.11 虚拟环境
uv venv --python 3.11
# 安装依赖
uv sync
启动服务器
# 开发模式(带热重载)
uv run mcp2anp --reload --log-level DEBUG
# 生产模式
uv run mcp2anp --log-level INFO
基本使用
-
设置认证(可选):
{ "didDocumentPath": "path/to/did-document.json", "didPrivateKeyPath": "path/to/private-key.pem" } -
获取 ANP 文档:
{ "url": "https://grand-hotel.com/agents/hotel-assistant/ad.json" } -
调用 OpenRPC 方法:
{ "endpoint": "https://grand-hotel.com/api/booking", "method": "confirmBooking", "params": { "checkIn": "2025-10-01", "checkOut": "2025-10-03", "roomType": "standard" } }
工具说明
anp.setAuth
设置 DID 认证上下文,用于后续的文档获取和 RPC 调用。
输入:
didDocumentPath: DID 文档 JSON 文件路径didPrivateKeyPath: DID 私钥 PEM 文件路径
输出: {"ok": true} 或错误信息
anp.fetchDoc
获取并解析 ANP 文档,提取可跟进的链接。这是访问 ANP 生态中 URL 的唯一入口。
输入:
url: 要获取的 ANP 文档 URL
输出:
contentType: 内容类型text: 原始文本内容json: 解析的 JSON 内容(如适用)links: 可跟进的链接列表
anp.invokeOpenRPC
调用 OpenRPC 端点的 JSON-RPC 2.0 方法。
输入:
endpoint: OpenRPC 端点 URLmethod: 要调用的方法名params: 方法参数(可选)id: 请求 ID(可选)
输出:
result: 方法返回结果raw: 原始 JSON-RPC 响应
项目结构
mcp2anp/
├── src/mcp2anp/ # 源代码
│ ├── server.py # 主服务器
│ ├── tools/ # MCP 工具实现
│ ├── adapters/ # 协议适配器
│ ├── auth/ # 认证和会话管理
│ └── utils/ # 工具和模型
├── tests/ # 测试代码
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── fixtures/ # 测试数据
├── docs/ # 文档
│ ├── examples/ # 示例配置
│ └── usage.md # 使用指南
└── pyproject.toml # 项目配置
开发
环境准备
# 安装开发依赖
uv sync --group dev
# 安装 pre-commit hooks
pre-commit install
运行测试
# 运行所有测试
uv run pytest
# 运行特定测试
uv run pytest tests/unit/test_tools.py -v
# 运行测试并生成覆盖率报告
uv run pytest --cov=src/mcp2anp --cov-report=html
代码质量
# 格式化代码
uv run black src/ tests/
# 代码检查
uv run ruff src/ tests/
# 类型检查
uv run mypy src/
使用示例
完整的酒店预订工作流
# 1. 设置认证
await set_auth_tool.execute({
"didDocumentPath": "docs/examples/did-document.json",
"didPrivateKeyPath": "docs/examples/private-key.pem"
})
# 2. 获取智能体描述
agent_info = await fetch_doc_tool.execute({
"url": "https://grand-hotel.com/agents/hotel-assistant/ad.json"
})
# 3. 获取预订接口规范
interface_spec = await fetch_doc_tool.execute({
"url": agent_info["links"][0]["url"] # 第一个接口链接
})
# 4. 搜索可用房间
rooms = await invoke_openrpc_tool.execute({
"endpoint": "https://grand-hotel.com/api/booking",
"method": "searchRooms",
"params": {
"checkIn": "2025-10-01",
"checkOut": "2025-10-03",
"guests": 2
}
})
# 5. 确认预订
booking = await invoke_openrpc_tool.execute({
"endpoint": "https://grand-hotel.com/api/booking",
"method": "confirmBooking",
"params": {
"checkIn": "2025-10-01",
"checkOut": "2025-10-03",
"roomType": "standard",
"guestInfo": {
"name": "张三",
"email": "zhangsan@example.com"
}
}
})
配置
环境变量
ANP_LOG_LEVEL: 日志级别 (DEBUG, INFO, WARNING, ERROR)ANP_TIMEOUT: HTTP 请求超时时间(秒)ANP_MAX_RETRIES: 最大重试次数
命令行选项
--log-level: 设置日志级别--reload: 启用热重载(开发模式)
安全注意事项
- ⚠️ DID 私钥保护: 不要将私钥文件提交到版本控制
- 🔒 本地运行: 服务器仅在本地运行,不暴露到网络
- 🛡️ 输入验证: 所有工具输入都经过 Pydantic 验证
- 📝 审计日志: 所有操作都有详细的结构化日志
贡献
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
提交规范
- 使用 Google Python 编码规范
- 确保所有测试通过:
uv run pytest - 运行代码检查:
uv run ruff src/ tests/ - 保持 ≥90% 测试覆盖率
许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
相关项目
- Agent Connect - ANP 协议实现
- MCP SDK - MCP Python SDK
支持
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。