mcp-order-service
v1.0.0
Published
MCP service for order query with mock data - provides query_order and list_orders tools
Downloads
11
Maintainers
Readme
AI 电商对话系统
一个基于 MCP + LangChain 的 AI 电商客服对话系统,支持:
- IP + UUID Cookie 会话隔离
- MongoDB 按日期存储聊天记录
- MCP 工具调用(订单查询)
- 阿里云百炼(通义千问)LLM
功能
MCP 订单查询工具
| 工具名 | 功能 | 参数 |
|-------|------|------|
| query_order | 查询单个订单详情 | orderId (必填) |
| list_orders | 查询订单列表 | status, customerId, limit (可选) |
对话 API
| 路由 | 方法 | 功能 |
|------|------|------|
| /api/chat | POST | 发送消息,获取 AI 回复 |
| /api/chat/history | GET | 获取会话历史记录 |
| /api/chat/session | GET | 获取/创建会话 |
| /api/chat/status | GET | Agent 状态 |
| /health | GET | 健康检查 |
模拟数据
包含 6 个模拟订单:
ORD-2024-001- 张三 - MacBook Pro + Magic Mouse (已送达)ORD-2024-002- 李四 - iPhone 15 Pro Max + AirPods (已发货)ORD-2024-003- 张三 - iPad Air + Apple Pencil (处理中)ORD-2024-004- 王五 - Apple Watch Ultra (待处理)ORD-2024-005- 李四 - HomePod Mini + Apple TV (已取消)ORD-2024-006- 赵六 - Mac Studio + Studio Display (已送达)
安装与运行
1. 安装依赖
npm install2. 配置环境变量
设置 API Key 到本地环境变量:
# Windows (CMD)
set api_key=your_dashscope_api_key
# Windows (PowerShell)
$env:api_key="your_dashscope_api_key"
# Linux/macOS
export api_key=your_dashscope_api_key可选:创建 .env 文件
cp .env.example .env关键配置:
api_key: 阿里云百炼 API Key(从环境变量读取,必填)DASHSCOPE_MODEL: 模型名称,默认qwen3.6-plusMONGO_URL: MongoDB 连接地址(已配置默认值)
3. 编译项目
npm run build4. 启动服务
# 启动对话服务(会自动启动 MCP 服务)
npm run chat
# 或单独启动 MCP 服务
npm run mcp服务启动后访问:http://localhost:3000
API 使用示例
发送消息
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "查询订单 ORD-2024-001"}'响应:
{
"success": true,
"sessionId": "sess_xxx",
"reply": "您的订单 ORD-2024-001 详情如下:...",
"toolCalls": [{"name": "query_order", "args": {"orderId": "ORD-2024-001"}}]
}获取历史记录
curl "http://localhost:3000/api/chat/history?sessionId=sess_xxx"获取/创建会话
curl http://localhost:3000/api/chat/session项目结构
src/
├── index.ts # MCP 服务入口
├── data/
│ └── orders.ts # 订单模拟数据
└── chat/
├── server.ts # Express 服务入口
├── routes/
│ └── chat.ts # 对话 API 路由
├── services/
│ ├── langchain.ts # LangChain Agent 配置
│ ├── mcp-client.ts # MCP Client 连接
│ └── session.ts # 会话管理
└── db/
└── mongodb.ts # MongoDB 存储技术栈
- 后端框架: Express
- AI 框架: LangChain.js
- LLM: 阿里云百炼 qwen3.6-plus
- MCP SDK: @modelcontextprotocol/sdk
- 数据库: MongoDB
- 语言: TypeScript
会话隔离机制
系统采用 IP + UUID Cookie 方式实现会话隔离:
- 用户首次访问,系统生成 UUID SessionId
- SessionId 通过 Cookie 返回给客户端
- 后续请求携带 Cookie,系统验证 IP 绑定
- Session 24 小时过期
MongoDB 数据结构
聊天记录按日期存储,每日一个 Collection:
数据库: ecommerce_chat
Collections: chat_YYYY-MM-DD
Document:
{
sessionId: string,
ip: string,
role: "user" | "assistant",
content: string,
toolCalls: [...],
timestamp: Date
}配置到 Claude Code
在 ~/.claude/claude_desktop_config.json 中添加:
{
"mcpServers": {
"order-service": {
"command": "node",
"args": ["D:\\download\\mcp_demo\\dist\\index.js"]
}
}
}作为 npm 包使用
安装
npm install mcp-order-service配置 MCP 客户端
{
"mcpServers": {
"order-query": {
"command": "npx",
"args": ["mcp-order-service"]
}
}
}发布到 npm
# 1. 登录 npm
npm login
# 2. 发布
npm publish常见问题
1. MongoDB 连接失败
确保 MongoDB 服务运行中,检查 MONGO_URL 配置。
2. LLM 调用失败
检查环境变量 api_key 是否正确设置,确保有余额。
# 验证环境变量
echo $api_key # Linux/macOS
echo %api_key% # Windows CMD3. MCP 工具调用失败
MCP 服务会在对话服务启动时自动启动,检查日志输出。
