智慧点单系统

xiaoggvip/order-service-mcp
Hosted
0 Stars 75 次浏览 更新于 2026-08-23

该项目是一个基于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 配置

配置步骤:

  1. 登录 FastGPT 管理后台
  2. 进入「工作流」→「创建工具」
  3. 选择「MCP工具」类型
  4. 填写配置信息:
配置项
名称 点餐助手
图标 选择合适的图标
鉴权类型
MCP地址 http://localhost:3000
  1. 点击「解析」按钮,系统会自动识别工具
  2. 确认工具列表后点击「创建」

AingDesk 配置

配置步骤:

  1. 打开 AingDesk 应用
  2. 点击右上角设置图标 → 选择「MCP服务器」
  3. 点击「添加服务器」按钮
  4. 填写配置信息:
配置项
名称 点单助手
描述 支持AI订单分析、订单创建和支付状态查询
类型 Stdio
程序类型 自定义
命令 node
参数 d:\www\hc\ai\mcp\server.js
CWD d:\www\hc\ai\mcp
  1. 点击「添加」按钮

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",
});

参考文档

相关 MCP 服务