这是一个使用FastAPI和Agent_Connect库实现的DID WBA方法示例,同时支持客户端和服务器功能。
- anp协议认证:DID WBA首次认证,Bearer Token会话认证
- anp自然语言通信:/wba/anp-nlp接口进行通信
- 自动生成DID和密钥或加载已有身份
- 向resp发起首次认证和令牌申请
- 向resp的anp-nlp接口发起消息 server
- 克隆项目
- 创建环境配置文件
cp .env.example .env
- 编辑.env文件,设置必要的配置项
# 激活虚拟环境(如果已存在)
source .venv/bin/activate
# 安装依赖
poetry install
本项目提供三种不同的运行方式:
通过运行anp_llmapp.py
,直接调用anp_core
中的ANP接口:
python anp_llmapp.py
运行mcp_stdio_client.py
,通过stdio调用mcp_stdio_server.py
封装的ANP接口,可以调试完整MCP流程:
# 启动服务端
python -m anp_mcpwrapper.mcp_stdio_server
# 启动客户端
python -m anp_mcpwrapper.mcp_stdio_client
将mcp_stdio_server.py
启动为SSE服务,通过SSE接口调用:
python -m anp_mcpwrapper.mcp_stdio_server -t sse
注意:方法2和方法3均已在TRAE环境中配置测试成功。
.
├── anp_core/ # 封装便于开发者调用的ANP接口
├── anp_mcpwrapper/ # 实现MCP接口的对接
├── api/ # API路由模块
├── core/ # 应用框架
├── doc/ # 文档说明和测试用key
├── examples/ # 未来增加面向开发者的更多示例
├── utils/ # 工具函数
├── logs/ # 日志文件
├── setup/ # 后续增加安装方案(当前暂时无用)
├── anp_llmapp.py # 直接调用ANP接口的应用
└── anp_llmagent.py # 计划开发为开箱即用的agent
-
anp_core:封装便于开发者调用的ANP接口,当前DID认证为本地测试,下一版本将增加实用的DID服务
-
anp_mcpwrapper:实现了MCP接口的对接,目前在TRAE环境中测试成功,Claude环境测试不成功
-
api/core:应用框架,提供API路由和核心配置
-
doc:文档说明和测试用密钥
-
examples:未来将增加面向开发者的更多示例
-
utils/logs:工具函数和日志文件
-
setup:后续将增加安装方案,当前文件暂时无用
-
anp_llmagent.py:计划开发为开箱即用的agent,与
anp_llmapp.py
/MCP调用可以互通
GET /agents/example/ad.json
: 获取代理描述信息GET /ad.json
: 获取广告JSON数据,需要进行鉴权POST /auth/did-wba
: DID WBA首次鉴权GET /auth/verify
: 验证Bearer TokenGET /wba/test
: 测试DID WBA认证POST /wba/anp-nlp
: ANP自然语言通信接口GET /wba/user/{user_id}/did.json
: 获取用户DID文档PUT /wba/user/{user_id}/did.json
: 保存用户DID文档
- 启动服务器,监听请求
- 接收DID WBA认证请求,验证签名
- 生成并返回访问令牌
- 处理后续使用令牌的请求
- 生成或加载DID文档和私钥
- 向服务器发送带有DID WBA签名头的请求
- 接收令牌并保存
- 使用令牌发送后续请求
示例实现了两种鉴权方式:
- 首次DID WBA鉴权:根据DID WBA规范进行签名验证
- Bearer Token鉴权:通过JWT令牌进行后续请求鉴权
详细的鉴权流程请参考代码实现和DID WBA规范