发货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
cd shipmentsMCP
npm install配置
- 复制
.env.example到.env. - 设置以下变量:
| 变量 | 必填 | 描述 |
|---|---|---|
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: (默认值为3001)。
API 参考
GET/api/健康
- 没有身份验证。
- 答复:
{ "status": "ok" }
POST/api/聊天
- 身份验证:
Authorization: Bearer - 主体:
{ "message": string, "conversationHistory"?: Array }(参见 src/types.tsChatRequest) - 答复:
{ "response": string }(参见ChatResponse) - 错误: 400如果
message缺失或无效,如果身份验证失败,则为401,OpenRouter或后端错误为500
运作原理
- 服务器使用 系统提示 (装运助理)和 工具定义 从 src/tools/definitions.ts (列出/获取装运、装运详细信息、参考表:国家、服务代码、状态等)。
- OpenRouter可能会返回 工具调用。服务器通过以下方式运行它们 src/tools/executor.ts,它调用 src/services/backendApi.ts。参考查找(国家、状态等)缓存在内存中。
- 工具结果将发送回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 | 基于液位的记录仪 |
