货运查询中间件

AI中间件服务器,通过OpenRouter调用现有货运后端API,回答自然语言问题,可用作前端或MCP客户端的聊天后端。

  • by BSwanepoel-DevDaddy
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 MGlenewinkelDD/shipmentsMCP

使用说明

发货MCP

人工智能中间件服务器,通过OpenRouter(LLM,带功能调用)调用现有的发货后端API,回答有关发货的自然语言问题。将其用作前端或MCP客户端的聊天后端。

建筑

客户端向该服务器发送消息;服务器使用工具定义调用OpenRouter。OpenRouter可能会通过工具调用从您的发货后端请求数据;此服务器执行这些调用并将结果返回给OpenRouter,直到模型生成最终的文本响应。

flowchart LR
  Client[Client] -->|POST /api/chat| Middleware[Middleware]
  Middleware -->|chat + tools| OpenRouter[OpenRouter]
  Middleware -->|GET /api/shipments etc.| Backend[Shipments Backend]
  OpenRouter -->|tool results| Middleware
  Middleware -->|response| Client

先决条件

  • Node.js >= 18
  • 一 OpenRouter API密钥 (例如来自 OpenRouter密钥)
  • 跑步 发货后端 公开预期的API(例如。 /api/shipments, /api/shipment-details, /api/reference/* --看 src/services/backendApi.ts)

安装

git clone <repo-url>
cd shipmentsMCP
npm install

配置

  1. 复制 .env.example 到 .env.
  2. 设置以下变量:
变量 必填 描述
OPENROUTER_API_KEY 是 您的OpenRouter API密钥
BACKEND_API_URL 是 发货后端的基本URL(例如。 http://localhost:3000)
MODEL 否 OpenRouter型号(例如。 meta-llama/llama-3.3-70b-instruct:free, anthropic/claude-3.5-sonnet)
PORT 无 此服务器的端口(默认 3001)
CHAT_PASSWORD 是 持票人代币 POST /api/chat
LOG_LEVEL 没有 debug, info, warn,或 error (默认值 info)

安全: 不要承诺 .env 或将真正的API密钥放入 .env.example。在示例中使用占位符,并在中添加您自己的密钥 .env.

运行服务器

  • 发展: npm run dev (tsx观看 src/index.ts)
  • 构建: npm run build (TypeScript→ dist/)
  • 生产: npm start (跑步 dist/index.js)

服务器正在监听 http://localhost:<PORT> (默认值为3001)。

API 参考

GET/api/健康

  • 没有身份验证。
  • 答复: { "status": "ok" }

POST/api/聊天

  • 身份验证: Authorization: Bearer <CHAT_PASSWORD>
  • 主体: { "message": string, "conversationHistory"?: Array<{ role, content }> } (参见 src/types.ts ChatRequest)
  • 答复: { "response": string } (参见 ChatResponse)
  • 错误: 400如果 message 缺失或无效,如果身份验证失败,则为401,OpenRouter或后端错误为500

运作原理

  1. 服务器使用 系统提示 (装运助理)和 工具定义 从 src/tools/definitions.ts (列出/获取装运、装运详细信息、参考表:国家、服务代码、状态等)。
  2. OpenRouter可能会返回 工具调用。服务器通过以下方式运行它们 src/tools/executor.ts,它调用 src/services/backendApi.ts。参考查找(国家、状态等)缓存在内存中。
  3. 工具结果将发送回OpenRouter。循环将继续,直到模型返回最终的文本响应,该响应将作为 response 给客户。

项目结构

路径 目的
src/index.ts Express应用程序、健康路线、聊天路由器
src/config.ts 环境验证和配置
src/routes/chat.ts POST /api/chat 和承载身份验证
src/services/openrouter.ts OpenRouter聊天和工具调用循环
src/services/backendApi.ts 用于发货后端的HTTP客户端
src/tools/definitions.ts OpenRouter工具模式
src/tools/executor.ts 将工具名称+参数映射到后端调用
src/types.ts 聊天和OpenRouter消息类型
src/logger.ts 基于液位的记录仪