出行服务MCP服务器

一个基于Beckn协议的通用出行服务MCP服务器,作为买方应用平台(BAP),允许AI代理搜索、查看价格并预订出租车。

  • by dumko2001
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 dumko2001/mcp-beckn-mobility

使用说明

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)注册。

安装

  1. 克隆仓库:

    git clone https://github.com/<YOUR_USERNAME>/mcp-beckn-mobility.git
    cd mcp-beckn-mobility
    
  2. 安装依赖项:

    npm install
    

配置

  1. 生成密钥: 运行辅助脚本以生成Ed25519签名密钥。

    npx tsx src/generate_keys.ts
    

    复制输出(BAP ID、公钥、私钥)。

  2. 设置环境: 复制 .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
    
  3. 注册: 使用您的BAP ID和公钥在 Namma Yatri/Beckn登记处.

用法

  1. 启动服务器:

    npm run dev
    
  2. 通过Ngrok连接 (如果在本地运行):

    ngrok http 3000
    

    更新 BAP_URI 在 .env 使用ngrok URL。

  3. 连接您的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运输。

许可证

麻省理工学院