使用说明
Beckn移动MCP服务器
通用 模型上下文协议(MCP) 服务器 Beckn Mobility 域。此服务器充当 买家应用平台(BAP),使AI代理(如Claude、Gemini等)能够使用开放的Beckn协议(如Namma Yatri、ONDC)搜索出租车、查看价格和预订行程。
特性
- 通用BAP实施:连接到任何符合Beckn标准的Mobility BPP。
- MCP工具:暴露
search_cabs,select_ride,init_booking,以及confirm_booking作为人工智能工具。 - 异步Webhook处理:坚固
WebhookManager处理Beckn的异步回调,包括超时和请求相关性。 - 安全签名:实施 版本25519 Beckn注册表要求的请求签名。
- 荣誉 服务 器:基于Hono构建,用于高性能HTTP处理和服务器发送事件(SSE)。
- 验证脚本:包括一套用于验证加密签名和端到端流的脚本。
先决条件
- Node.js v18+
- 公共URL(使用
ngrok或云部署)用于接收Webhook。 - 在Beckn注册处(例如Namma Yatri Sandbox)注册。
安装
-
克隆仓库:
git clone https://github.com/<YOUR_USERNAME>/mcp-beckn-mobility.git cd mcp-beckn-mobility -
安装依赖项:
npm install
配置
-
生成密钥: 运行辅助脚本以生成Ed25519签名密钥。
npx tsx src/generate_keys.ts复制输出(BAP ID、公钥、私钥)。
-
设置环境: 复制
.env.example到.env(或创建它)并填写您的详细信息:# Beckn Registry Details BAP_ID=mcp-mobility-bap-<TIMESTAMP> UNIQUE_KEY_ID=key1 SIGNING_PRIVATE_KEY=<YOUR_PRIVATE_KEY> SIGNING_PUBLIC_KEY=<YOUR_PUBLIC_KEY> # URLs BAP_URI=https://<YOUR_NGROK_URL> # Must be public! BPP_URI=https://gateway.nammayatri.in/search # Or local mock PORT=3000 -
注册: 使用您的BAP ID和公钥在 Namma Yatri/Beckn登记处.
用法
-
启动服务器:
npm run dev -
通过Ngrok连接 (如果在本地运行):
ngrok http 3000更新
BAP_URI在.env使用ngrok URL。 -
连接您的AI客户端: 配置您的MCP客户端(例如Claude Desktop)以连接到SSE端点:
- 统一资源定位符:
http://localhost:3000/sse
- 统一资源定位符:
验证
我们在上线前提供了验证系统的脚本:
-
验证加密货币:检查您的密钥和签名逻辑在数学上是否正确。
npx tsx src/verify_crypto.ts -
验证全流量(本地):运行本地模拟BPP并测试完整的HTTP请求/响应循环。
npx tsx src/verify_full_flow.ts -
黑盒测试:模拟MCP客户端通过SSE和调用工具连接。
npx tsx src/verify_mcp_client.ts
项目结构
src/index.ts:主服务器入口点(Hono应用程序)。src/tools/mobilityTools.ts:MCP工具定义(search_cabs等等)。src/lib/becknClient.ts:处理Beckn协议通信和签名。src/lib/webhookManager.ts:管理异步回调。src/lib/honoTransport.ts:为Hono定制MCP运输。
许可证
麻省理工学院