Skip to content

About

No description, website, or topics provided.

Resources

Stars

109 stars

Watchers

0 watching

Forks

Repository files navigation

麦麦团餐官 mcd-catering-officer

公司下午茶、部门周会餐、加班夜宵——麦当劳团餐其实有折扣,而且选错服务贵出一百块。这个 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 才真实下单

快速开始

1. 申请 MCP Token

打开 https://open.mcd.cn/mcp,右上角【登录】→ 手机号验证 → 点【控制台】→【激活】→ 同意协议 → 复制 Token。

2. 配置 MCP Server

把 mcp-config.example.json 里的 ${MCD_MCP_TOKEN} 换成你的 Token,导入你的 MCP 客户端。

WorkBuddy 用户:左侧边栏【专家·技能·连接器】→【连接器】→ 右上角【自定义连接器】→【配置 MCP】→ 粘贴 JSON → 保存 → 启用。

3. 配置本项目

# 方式一:环境变量
export MCD_MCP_TOKEN="你的 Token"

# 方式二:写文件(已在 .gitignore 中排除)
echo "你的 Token" > mcd_token.txt

Token 解析优先级:--token 参数 → MCD_MCP_TOKEN → ~/.workbuddy/mcp.json → mcd_token.txt。

4. 跑起来

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

About

No description, website, or topics provided.

Resources

Stars

109 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages