智慧点单系统
该项目是一个基于fastmcp框架实现的智能点单系统,支持AI订单分析、订单创建和支付状态查询。该服务完全符合MCP(模型上下文协议)规范,可以与任何支持MCP的平台无缝对接。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"order-service": {
"args": [
"-y",
"order-service-mcp-xiaoggvip"
],
"command": "npx"
}
}
}
该服务需要配置环境变量:THIRD_PARTY_API_HOST、THIRD_PARTY_API_KEY、THIRD_PARTY_AUTH_ENABLED
可用工具 (3 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
analyze_order 3 个参数 需填 2 项
【分析订单】用于验证商品清单并计算总价。 输入:商品列表(包含ID、名称、数量) 输出:订单总价和验证结果 何时使用:用户想要了解订单需要多少钱时调用此工具。 示例输入: - 用户说"我想买3杯咖啡和2个蛋糕" - 参数:list=[{id:"咖啡",name:"咖啡",quantity:3},{id:"蛋糕",name:"蛋糕",quantity:2}]
必填参数:content、list
create_order 4 个参数 需填 3 项
【创建订单】用于生成正式订单并获取支付二维码。 输入:商品列表 + 确认标志(必须为true才会真正创建订单) 输出:订单号 + 支付二维码链接 何时使用:用户确认要下单并准备支付时调用此工具。 重要:必须设置 confirm=true 才能创建订单!
必填参数:content、list、confirm
check_payment_status 1 个参数 需填 1 项
【查询支付状态】用于查看订单是否已完成支付。 输入:订单号(orderId) 输出:支付状态(待支付/已支付/已取消) 何时使用:用户想知道某个订单是否已经付款成功时调用此工具。
必填参数:orderId
服务介绍
MCP服务 - 智慧点单系统
项目概述
基于 fastmcp 框架实现的点单服务,支持 AI 订单分析、订单创建和支付状态查询。该服务完全符合 MCP (Model Context Protocol) 协议规范,可与任何支持 MCP 的平台无缝对接。
快速开始
1. 安装依赖
cd d:\www\hc\ai\mcp
npm install
2. 启动服务
启动模拟第三方 API 服务(用于开发测试)
npm run mock-server
模拟服务将运行在 http://localhost:8080
启动 MCP 服务
npm start
支持的平台
FastGPT 配置
配置步骤:
- 登录 FastGPT 管理后台
- 进入「工作流」→「创建工具」
- 选择「MCP工具」类型
- 填写配置信息:
| 配置项 | 值 |
|---|---|
| 名称 | 点餐助手 |
| 图标 | 选择合适的图标 |
| 鉴权类型 | 无 |
| MCP地址 | http://localhost:3000 |
- 点击「解析」按钮,系统会自动识别工具
- 确认工具列表后点击「创建」
AingDesk 配置
配置步骤:
- 打开 AingDesk 应用
- 点击右上角设置图标 → 选择「MCP服务器」
- 点击「添加服务器」按钮
- 填写配置信息:
| 配置项 | 值 |
|---|---|
| 名称 | 点单助手 |
| 描述 | 支持AI订单分析、订单创建和支付状态查询 |
| 类型 | Stdio |
| 程序类型 | 自定义 |
| 命令 | node |
| 参数 | d:\www\hc\ai\mcp\server.js |
| CWD | d:\www\hc\ai\mcp |
- 点击「添加」按钮
mcpServers 配置
Stdio 模式配置:
{
"mcpServers": {
"点餐助手": {
"command": "node",
"args": ["d:/www/hc/ai/mcp/server.js"],
"cwd": "d:/www/hc/ai/mcp"
}
}
}
支持的工具
1. analyze_order(订单分析)
验证订单数据格式,返回验证结果和计算金额
输入参数:
{
"content": "我想要1份宫保鸡丁,一份鱼香肉丝,3份米饭,加辣",
"special_requests": "加辣",
"list": [
{"id": "1", "name": "宫保鸡丁", "quantity": 1},
{"id": "2", "name": "鱼香肉丝", "quantity": 1},
{"id": "3", "name": "米饭", "quantity": 3}
]
}
输出示例:
{
"success": true,
"message": "数据验证通过",
"errors": [],
"warnings": [],
"content": "我想要1份宫保鸡丁...",
"special_requests": "加辣",
"list": [...],
"items": [...],
"total_amount": 57
}
2. create_order(创建订单)
创建订单,返回订单信息和支付二维码
输入参数:
{
"list": [
{"id": "1", "name": "宫保鸡丁", "quantity": 1},
{"id": "2", "name": "鱼香肉丝", "quantity": 1}
],
"special_requests": "加辣",
"total_amount": 54,
"customer_info": {"name": "张三", "phone": "13800138000"}
}
输出示例:
{
"success": true,
"message": "订单创建成功",
"order_id": "ORD20260522100000ABCD",
"order_no": "DD20260522123456",
"qr_code": "https://api.qrserver.com/...",
"total_amount": 54,
"status": "pending"
}
3. check_payment_status(查询支付状态)
查询订单支付状态
输入参数:
{
"orderId": "ORD20260522100000ABCD"
}
输出示例:
{
"order_id": "ORD20260522100000ABCD",
"status": "paid",
"pay_time": "2026-05-22 10:30:00",
"amount": 54
}
配置文件
.env 环境变量
THIRD_PARTY_API_HOST=http://localhost:8080
配置说明
| 配置项 | 说明 | 默认值 |
|---|---|---|
| THIRD_PARTY_API_HOST | 第三方 API 地址 | http://localhost:8080 |
项目结构
mcp/
├── server.js # MCP服务器入口(fastmcp实现)
├── package.json # 依赖配置
├── .env # 环境变量
└── mock/
├── thirdPartyServer.js # Node.js 模拟第三方API服务
└── thirdPartyApi.php # PHP 模拟第三方API服务
技术栈
- 框架: fastmcp
- 验证: Zod 3
- HTTP: axios
代码示例
server.js - 核心服务器代码:
import { FastMCP } from "fastmcp";
import { z } from "zod";
import axios from "axios";
const server = new FastMCP({
name: "order-service",
description: "支持AI订单分析、订单创建和支付状态查询的MCP服务",
version: "1.0.0",
});
server.addTool({
name: "analyze_order",
description: "验证订单数据格式,返回验证结果和计算金额",
parameters: z.object({
content: z.string().describe("用户输入的订单内容"),
special_requests: z.string().optional().describe("特殊要求"),
list: z.array(z.object({
id: z.string().describe("商品ID"),
name: z.string().describe("商品名称"),
quantity: z.number().describe("数量")
})).describe("商品列表")
}),
execute: async (args) => {
const result = await axios.post(`${process.env.THIRD_PARTY_API_HOST}/api/analyze`, args);
return JSON.stringify(result.data, null, 2);
},
});
server.start({
transportType: "stdio",
});