公司下午茶、部门周会餐、加班夜宵——麦当劳团餐其实有折扣,而且选错服务贵出一百块。这个 Skill 帮你把这笔账算清楚。
基于麦当劳中国 MCP Server 构建的企业团餐决策助手。它不只会推荐吃什么,更会算清楚:同样一单,配送、分餐、摆台三种服务的实付差多少,还差几块钱能进下一档折扣。
如果这个价差对你有用,欢迎点个 Star 让更多行政和团队负责人看到。
先说结论,这些都是实测数据,不是估算。
同一单,只改「助餐服务」一个参数,实付差 108 元。
30 份麦香鱼,同一家门店、同一时段:
| 助餐服务 | 折扣 | 实付 |
|---|---|---|
| 保鲜速达(准时送达 + 保温) | 74 折 | ¥541.80 |
| 专人分餐(送到工位/到人) | 84 折 | ¥613.80 |
| 专人摆台(摆盘 + 专人服务) | 89 折 | ¥649.80 |
服务越"重",折扣越少——这个规律没人告诉你,因为要同时调用三次算价接口才看得见。
折扣是阶梯制的,能算出「还差多少钱」。
| 订单原价满 | 可享折扣 |
|---|---|
| ¥310 | 7.8 折 |
| ¥528 | 7.4 折 |
| ¥1,114 左右 | 7.0 折 |
| ¥2,072 左右 | 6.6 折 |
算价接口会直接返回「还差多少元进下一档」,本 Skill 把它翻译成一句人话:按原价再凑 ¥930 可解锁 6.6 折。
团餐是预约制,不是点外卖。
- 只能预约未来 7 天内的固定档期:早餐 / 午餐 / 下午茶 / 夜市 / 宵夜,每个门店的起止时间不同
- 专人分餐和专人摆台必须提前 4 小时预约,临时下单只有保鲜速达可选
- 团餐门店藏在
delivery-query-stores(beType=6)里,用常规的"附近门店"接口查不到——这也是为什么这个场景长期没人做
| 能力 | 说明 |
|---|---|
| 门店发现 | 按收货地址找出可配送的团餐门店,展开未来 7 天全部档期 |
| 档期锁定 | 解析「午餐 12:00-15:59」这类文本为结构化时段,并校验提前量 |
| 预算配餐 | 给定人数和人均预算,按主食/小食/饮品三档自动配餐,用真实算价接口闭环校准 |
| 助餐比价 | 同一单跑遍所有可用服务,输出实付、人均、差额 |
| 折扣提醒 | 计算距下一档折扣还差多少,避免"就差 20 块钱"的遗憾 |
| 安全下单 | 默认 dry-run,只生成下单参数不提交;显式加 --submit 才真实下单 |
打开 https://open.mcd.cn/mcp,右上角【登录】→ 手机号验证 → 点【控制台】→【激活】→ 同意协议 → 复制 Token。
把 mcp-config.example.json 里的 ${MCD_MCP_TOKEN} 换成你的 Token,导入你的 MCP 客户端。
WorkBuddy 用户:左侧边栏【专家·技能·连接器】→【连接器】→ 右上角【自定义连接器】→【配置 MCP】→ 粘贴 JSON → 保存 → 启用。
# 方式一:环境变量
export MCD_MCP_TOKEN="你的 Token"
# 方式二:写文件(已在 .gitignore 中排除)
echo "你的 Token" > mcd_token.txtToken 解析优先级:--token 参数 → MCD_MCP_TOKEN → ~/.workbuddy/mcp.json → mcd_token.txt。
python scripts/demo.py # 一键演示全流程
python scripts/catering.py stores --slots # 看门店和档期
python scripts/catering.py compare --headcount 20 --budget 40 --at "2026-10-22 12:00"
python scripts/catering.py plan --headcount 20 --budget 40 --at "2026-10-22 12:00"无第三方依赖,Python 3.10+ 即可,不需要 pip install 任何东西。
门店 麦当劳昆山中大未来城餐厅(1990710)
时段 2026-10-22 12:00
规模 20 人,人均预算 ¥40.00,目标 ¥800.00
分类 餐品 单价 份数 小计
-------- ---------------- ------ ---- -------
主食 双层深海鳕鱼堡 ¥26.50 20 ¥530.00
小食甜品 蓝莓爆爆珠麦旋风 ¥17.00 20 ¥340.00
饮品 怡泉+C ¥12.50 20 ¥250.00
助餐服务 保鲜速达 | 活动 保鲜速达70折
算价 原价 ¥1164.00 → 实付 ¥793.00,优惠 ¥371.00(实付 6.8折)
人均 实付 ¥39.65,预算余量 ¥7.00
加购 按原价再凑 ¥880.00 可解锁 6.6 折
同一单,换一种助餐服务要多少钱:
助餐服务 促销 折扣 实付 人均 相对最高价
-------- ------------ ----- ------- ------ ----------
保鲜速达 保鲜速达70折 6.8折 ¥793.00 ¥39.65 省 ¥168.00
专人分餐 专人分餐80折 7.8折 ¥905.00 ¥45.25 省 ¥56.00
专人摆台 专人摆台85折 8.3折 ¥961.00 ¥48.05 省 ¥0.00
→ 「专人摆台」比「保鲜速达」多花 ¥168.00
→ 若确实需要摆台,这就是它的真实价格;若只是要送到工位,直接省下 ¥168.00
mcd-catering-officer/
├── README.md 项目说明(本文件)
├── CONTEST_DECLARATION.md 参赛声明(官方原文,未修改)
├── MCP_INTEGRATION.md MCP 集成说明
├── SKILL.md WorkBuddy Skill 定义
├── workbuddy.md WorkBuddy 开发过程记录
├── mcp-config.example.json 脱敏配置示例
├── scripts/
│ ├── mcd_client.py MCP 客户端(标准库实现,支持 Streamable HTTP / SSE)
│ ├── catering.py 团餐决策引擎 + 命令行
│ └── demo.py 一键演示
└── .gitignore
MCP 客户端零依赖。 只用 urllib 实现 JSON-RPC over Streamable HTTP,同时兼容 application/json 与 text/event-stream 两种响应。工具返回的是一段带字段说明的 Markdown,末尾附原始 JSON——extract_json() 用 raw_decode 从首个 {"success" 开始宽松解析,能容忍 JSON 后面还跟着一句说明文字。
预算配餐是闭环的。 不是按菜单标价加总估算,而是把每轮候选组合都丢给 calculate-price 拿真实折后价。由于「价格上限系数 → 实付」近似单调递增,用指数扩张找可行上界、再二分逼近,10 次算价调用内收敛。实测四组参数(12/20/30/50 人)的预算利用率在 87%~99%,避免"预算 800 只花 550"的浪费。
价格单位是分。 接口所有金额(originalPrice、price、discount、balance)均为分,代码里统一除以 100 后再展示,避免出现 ¥75800 这种事故。
默认不下单。 submit_order(payload, dry_run=True) 只回显参数。真实下单需要显式 --submit,防止演示时误操作产生真实订单。
- 行政 / HR:每周下午茶、月度生日会、季度团建餐
- 团队负责人:项目冲刺期的加班餐、周会午餐
- 会议组织者:带茶歇的培训、客户拜访接待
共同点:一次订 10~100 份,且不是自己的钱——所以每一分差价都值得算清楚。
- 本项目为参赛作品,由参赛者独立开发,非麦当劳官方产品
- 餐品、价格、库存、折扣均以麦当劳官方渠道实时返回为准;本文档中的数据是 2026-10-21 的实测快照,会随活动变化
- 输出结果仅供参考,不构成采购决策建议
- 请勿将 Token 提交到仓库;
.gitignore已排除mcd_token.txt
MIT