麦门双预算军师 · 麦当劳中国 MCP 参赛作品 | 钱一个预算、热量一个预算,两个闸门同时过才配餐:88,788 种组合本地穷举,给最划算/最扎实/最均衡三档、券后到手价、全息人设卡。Dual-budget (money + calories) McDonald's China MCP Agent Skill with 3-tier meal plans, coupon math and a holographic persona card.
# Add to your Claude Code skills
git clone https://github.com/erikzeng2008-del/mcd-dual-budget-coachGuides for using ai agents skills like mcd-dual-budget-coach.
See how mcd-dual-budget-coach compares with popular alternatives.
mcd-dual-budget-coach is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by erikzeng2008-del. 麦门双预算军师 · 麦当劳中国 MCP 参赛作品 | 钱一个预算、热量一个预算,两个闸门同时过才配餐:88,788 种组合本地穷举,给最划算/最扎实/最均衡三档、券后到手价、全息人设卡。Dual-budget (money + calories) McDonald's China MCP Agent Skill with 3-tier meal plans, coupon math and a holographic persona card. It has 56 GitHub stars.
mcd-dual-budget-coach's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/erikzeng2008-del/mcd-dual-budget-coach" and add it to your Claude Code skills directory (see the Installation section above). mcd-dual-budget-coach ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
mcd-dual-budget-coach is primarily written in HTML. It is open-source under erikzeng2008-del on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcd-dual-budget-coach against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
钱是一个预算,热量是另一个预算。两个都不超,一顿配到位。
以下全部来自对 https://mcp.mcd.cn 的真机实测,写死在本 Skill 里,运行时不必重新探索:
| 参数 | 取值 |
|---|---|
beType |
1=到店自提,2=麦乐送到家,5=得来速DT,6=企业团餐 |
orderType |
1=到店(含自取+DT),2=外送(含麦乐送+团餐) |
searchType(query-nearby-stores) |
2=按位置搜索,1=搜索收藏餐厅 |
calculate-price 返回 price: 2650 = ¥26.5。展示前必须 ÷100。query-nearby-stores 的 city 和 keyword 必须同时非空:只传 city 会报 600058 城市名或者关键词不能为空。city 传城市名,keyword 传区域/地标关键词(如「仓山」「万达」)。query-meals 只返回 categories[].meals[].code + tags,没有名称和价格——名称和价格要靠后续工具补:
calculate-price(返回 productList[].productName 顺便补名称)list-nutrition-foods 按 productName 名称匹配calculate-price 单瓶可乐返回 0(饮料必须挂在套餐/1+1 内售卖)。组合算法里饮品不要单独参与单品核价,改用套餐/1+1 的 diffPrice 差价逻辑。{"success":... 开头(可能与说明文字同行,用 raw_decode 解析)。9900015568(¥13.9)、9900013304(¥14.9),内容随门店/时段变化,用 query-meal-detail 查 rounds 实时构成。当用户提出以下任意需求时触发:
判定特征:用户输入中包含(明示或暗示)金额预算和/或热量预算,且意图是「在麦当劳吃一顿」。只给一个预算时,另一个按「不设限」处理,但要向用户说明。
从用户的话里抽取五个字段:
| 字段 | 必填 | 示例 | 缺省处理 |
|---|---|---|---|
money_budget |
否 | 30 / 三十块 / ¥35 | 不设限(但组合时优先性价比) |
calorie_budget |
否 | 600 / 五百大卡 | 不设限(但仍输出热量供参考) |
protein_min |
否 | 蛋白要 30g / 练完腿补蛋白 | 不设下限(蛋白始终输出供参考) |
meal_time |
否 | 早餐 / 宵夜 / 下午茶 | 由 now-time-info 当前时间推断 |
preferences |
否 | 想吃扎实的 / 不要辣 / 有可乐吗 | 无 |
⚠️ 用户没给任何预算时(只说「帮我配一顿」),先追问一句「多少钱、多少卡的预算?」——不猜。这是唯一允许的追问,一次问完,不许分两轮。
protein_min 识别信号:「练完」「健身」「增肌」「补蛋白」「蛋白 ≥Xg」→ 抽取为第三道闸门。抽取后必须向用户复述一句「已按蛋白 ≥Xg 过滤」,不许静默启用。
严格按以下顺序调用麦当劳 MCP 工具(Server:mcd-mcp):
1. now-time-info → 取当前时间,推断时段(早餐菜单和正餐菜单不同!)
2. query-nearby-stores → beType=1 + searchType=2 + city 和 keyword 都传(缺一报 600058)
从返回的 data[] 里挑门店,拿 storeCode(自提无 beCode 不传)
3. query-meals → beType=1, orderType=1, storeCode
拿分类+code 池。重点关注:随心配1+1、500大卡套餐、单人餐分类
4. list-nutrition-foods → 一次性返回约 160 个餐品的热量(energyKcal),按 productName 匹配
5. query-meal-detail → 对候选套餐/1+1 查 rounds 构成(每段的候选 code + diffPrice 差价)
6. query-my-coupons → 拉用户已有券(返回 markdown,含券名/用券价/有效期)
7. calculate-price → 对每个候选组合核价(items[].productCode + quantity + roundList)
⚠️ 价格单位是分;饮品单核价返回 0 属正常,饮品走套餐内 diffPrice
关键纪律:
create-order,输出组合后由用户自己决定是否下单。用户明确说「直接帮我下单」时,再次确认门店、餐品、就餐方式后才能走 create-order。query-meals 返回的是「当前时段可售」——不要拿营养表里的全量餐品硬凑,先取交集(名称匹配)。拿到菜单+营养+券后,按以下策略组合:
组合实付价(券后,分→元) ≤ money_budget
组合总热量 (kcal,营养表 energyKcal 求和) ≤ calorie_budget
组合总蛋白 (g,营养表求和) ≥ protein_min ← 仅在用户要了蛋白下限时启用
三道闸门的取舍是显式算出来的,不藏着:蛋白下限会推高金额或热量,当三者冲突无解时,诚实报告「这三个条件同时满足不了,最接近的方案是……还差 X」。
用户热量预算给太低配不出来时(如 300 卡想吃套餐),不硬凑,改输出:
固定用「本单战报」格式输出(这是本 Skill 的记忆点,不许改;标题与收束块必须保留):
🍔 **麦门双预算战报** · ¥30 / 600 kcal
📍 麦当劳福州金洲南路餐厅 · 正餐时段
| | 方案 | 组合 | 实付 | 热量 | 蛋白 | 钠 |
|---|---|---|---|---|---|---|
| 🎉 | 最划算 | 精选超值随心配(那么大鸡排 + 可乐中杯) | ¥13.9 | 532 kcal | 24 g | 996 mg |
| 💪 | 最扎实 | 麦辣鸡腿汉堡 + 圆筒冰淇淋 | ¥27.5 | 578 kcal | 26 g | 1310 mg |
| ⚖️ | 最均衡 | 巨无霸 | ¥26.5 | 513 kcal | 27 g | 961 mg |
💰 **预算执行** ¥13.9 / ¥30 | 剩 ¥16.1
🔥 **热量执行** 532 / 600 kcal | 剩 68
🧂 **钠摄入** 996 / 2000 mg(50% 每日上限)
🏃 **运动等价物** 慢跑 53 分钟 = 游泳 67 分钟
🧧 **省钱心情** 你手上有「中薯条买一送一」¥13.5 —— 这一单结算时用上,直接抵掉一部分
🎟️ **这一单能用的券**
- 王牌小食拼 ¥15.9 → 用在方案二「最扎实」(¥27.5 → ¥11.6,省 ¥15.9)
- 用不上:中薯条买一送一(这一单没有薯条)、早餐两件套(正餐时段)
> 回复「1 / 2 / 3」看明细;「换一批」再出三个
排版的三个纪律:
钠行为什么必须有:热量和钠是两个独立维度——实测存在「热量很漂亮、钠吃掉一整天上限」的组合(不限钠时最优解钠可达 1996mg)。只报热量的「健康配餐」是半张答卷。钠合计取各单品 钠(mg) 求和;含未知营养单品时写「本单含未知单品,钠合计不完整」,不假装完整。
运动等价物换算表(按 70kg 成人估算,输出时四舍五入):
| 运动 | 换算系数 |
|---|---|
| 慢跑 | ≈ 10 kcal/分钟 |
| 游泳 | ≈ 8 kcal/分钟 |
| 爬楼梯 | ≈ 6 kcal/分钟(约 0.5 层/分钟) |
| 快走 | ≈ 4.5 kcal/分钟 |
「省钱心情」一句的规则:省 0 元不输出此行;省钱等价物优先从小食/甜品里找(比「省了 3 元 = 白赚一个圆筒」),找不到再报纯金额;用户有即将到期的券时优先提醒。
组合出来后,把 query-my-coupons 的券逐张对到方案上——匹配看成分,不看名字:
query-meal-detail 的默认档),不能只看商品名——「酥脆无双套餐」名字里没有「薯条」,但默认档含迷你薯条,薯条券就能用。为什么这条重要:券到底能不能用,用户自己看不出(要翻套餐构成对照券规则)。替用户把这步算清楚,是「省钱军师」和「菜单搬运工」的分界线。
用户说「再来一批 / 换一批 / 还有别的吗」时:
实测参考(2026-10-10 金洲南路店):30 元/600 卡有 40 个过闸组合,35 元/700 卡 118 个,50 元不限卡 1280 个——足够换十几批。三档不是上限,是入口。
当用户问「有什么券能领」「还有更省的吗」,或预算紧且愿意多省一步时:
available-coupons 列出可领券auto-bind-coupons——领券不花钱,但会改变账户状态,和下单一样要用户点头本仓库 scripts/run_selftest.py 内置 43 项断言,直接跑在 demo.html 的发货代码上(数据完整性 / 双闸门 / 券匹配 / 对话解析 / 边界诚实性 / 单文件自包含):
python scripts/run_selftest.py # 期望输出:共 43 项 | 通过 43 | 失败 0
修改组合算法、券匹配规则或数据快照后,先跑自测再提交。

减脂期还想吃麦当劳?
说个预算和卡数,三档能直接下单的组合。
例:「30 块、600 卡,中午想吃点扎实的」→ 三档方案 + 券后到手价 + 一张会闪的人设卡。
https://erikzeng2008-del.github.io/mcd-dual-budget-coach/demo.html
手机浏览器直接打开也行。不想用 Demo?先看落地页。
配完一顿,它不只告诉你「买什么」——还按这一顿的真实数据给你发一张会随视角流光溢彩的 3D 全息卡,鉴定你是哪种麦门人格、什么稀有度。
👉 点开直接看一张卡(317 KB,秒开,不用装不用配)
打开就是一张会闪的「传说 · 热量刺客」——而且它是真的在动:不碰也会自己轻转、镭射自己扫,鼠标划过或手指拖动时切成跟手模式,四层视差跟着走。 在完整 Demo 里配完餐,还能生成你这张卡的专属链接——发给谁,谁点开看到的就是你的结果。

同一顿饭,预算 ¥45 时你是「自律型选手」,预算 ¥25 时变成「精准打击手」——数字变了,卡也变。

说「多少钱 + 多少卡」,它给你三个能直接下单的组合——商品图全是 AI 抠图的真实照片,套餐按「主角优先」重新拼好,券会算清用完到手价。
商品图不是从网上随便找的——全部来自麦当劳官方商品图,经 RMBG-2.0 神经网络抠图 + 暗色残留清理 去底,四模型横评选型(u2net / RMBG-1.4 / BiRefNet / RMBG-2.0,实测 BiRefNet 反而最差)。
👉 素材档案审阅台 —— 每张商品「原图 vs 抠图」左右对照,可逐张查边缘干不干净。抠图脚本 ai_cutout.py 已开源在本仓库,换模型只改一行路径。
demo.html —— 它有 11 MB(真实商品图全部内嵌在单文件里),GitHub 的网页预览扛不住,会提示文件过大。demo.html 下载下来,再双击用浏览器打开——本地打开完全没问题。钱是一个预算,热量是另一个预算。两个都不超,一顿配到位。
告诉它「30 块 600 卡,中午想吃点扎实的」,它基于麦当劳官方 MCP 实时菜单、营养数据和你的优惠券,配出三个能直接下单的组合——并诚实地告诉你:这顿等于慢跑 50 分钟。
⭐ 本仓库正在参加 2026 麦当劳程序员创意开发大赛,排名唯一依据就是 GitHub Star 数。 如果这个「双预算配餐」的思路对你有用,麻烦点一下页面右上角的 Star——这是支持它的唯一方式,也是决定它排名的那一票。
数据是 2026-10-12 的实测快照(83 个可配单品、11 张真实优惠券、88,788 个可组合),五屏随便玩:
| 屏 | 玩什么 |
|---|---|
| 1 预算设定 | 拖滑块或点预设场景(含「蛋白模式」第三道闸门) |
| 2 战报 | 三个过闸方案(真实商品图)+ 预算/热量/钠执行 + 这一单能用的券 |
| 3 明细与营养 | 点开任一方案看六项营养拆解 |
| 4 商品目录 | 83 个单品全览,点进看单品营养 |
| 5 💬 对话 | 像真的一样打字——「30 块 600 卡」回车,当场配给你 |
手机也能开。

这就是它的全部「界面」——一段对话。你说「多少钱 + 多少卡 + 想吃啥」,它回你三个能直接下单的组合。 在线 demo 的第 5 屏就是这个对话界面,可以亲手打字体验。 图中顶部那排工具调用链是真实调用麦当劳 MCP 的 5 步(时间→菜单→营养→套餐默认档→逐个核价),价格由
calculate-price实付核验——不是模型编的。这是本项目与「菜单静态表 + 拍脑袋推荐」类工具的根本区别。
想吃麦当劳的人心里都有两杆秤:
市面上的点餐工具只管「点得快」,没人管「配得对」。本 Skill 把两杆秤做成双闸门:金额与热量任何一个超限的组合直接淘汰,剩下的按「最划算 / 最扎实 / 最均衡」给你三个答案,选哪个都不用做数学题。
访问 麦当劳 MCP 开放平台 → 手机号登录 → 右上角「控制台」→「激活」→ 复制 Token。
左侧边栏【专家·技能·连接器】→【连接器】→ 右上角【自定义连接器】→【配置 MCP】→ 粘贴 mcp-config.example.json 的内容并将 ${MCD_MCP_TOKEN} 替换为你的实际 Token → 保存并启用 mcd-mcp。
将本仓库的 SKILL.md 放入 WorkBuddy 技能目录(或在对话中直接粘贴给 AI 加载)。详细步骤参考 WorkBuddy 官方文档。
直接用浏览器打开仓库里的 demo.html(零外链、不含任何凭证),三屏玩转:
数据为 2026-10-10 的实测快照(83 个可配单品、88,192 个可组合),商品图与营养素均来自麦当劳 MCP 接口;真实版走实时接口,菜单随时段/门店变化。热量数据缺失的当季新品(约 35 个)会在「不设卡」场景参选并明确标注「未知」,不拿未知数字凑闸门。
以下战报为 2026-10-09 在「麦当劳福州金洲南路餐厅」的真实 MCP 实测输出(非演示数据):
你:30 块 600 卡,中午想吃点扎实的
🍔 麦门双预算战报
─────────────────────
方案一 · 最划算
精选超值随心配 1+1(麦香鸡 + 小玉米杯)
实付 ¥14.9|总热量 422 kcal
方案二 · 最扎实
「堡」你欢乐套餐(官方 500 大卡档)
实付 ¥28.0|总热量 500 kcal 档
方案三 · 最均衡
麦辣鸡腿堡单点
实付 ¥22.5|总热量 485 kcal
─────────────────────
💰 预算执行:¥14.9 / ¥30,剩余 ¥15.1
🔥 热量执行:422 / 600 kcal,剩余 178 kcal
🏃 运动等价物:这顿 = 慢跑 42 分钟 = 游泳 53 分钟
🧧 省钱心情:你有张 ¥9.9 薯薯券今天到期,用上等于白赚一顿小食
其他玩法:
你:健身完只敢吃 500 卡,麦门还有救吗
你:25 块,早餐,要喝咖啡
你:帮我领下今天的券再配一顿 35 块的
⚠️ 菜单随时段/门店变化,每次输出都基于麦当劳 MCP 实时返回(
query-meals/list-nutrition-foods/calculate-price),早餐和正餐配出来的组合不一样。

全部案例来自真机实测(2026-10-10,麦当劳福州金洲南路餐厅),每个案例包含完整调用链、每个数字的来源、复现说明:
| 案例 | 场景 | 看点 |
|---|---|---|
| 案例 1 · 30元600卡 | 金额+热量双闸门 | ¥13.9 随心配 1+1 = 532 kcal,预算剩一半 |
| 案例 2 · 25元性价比 | 只限金额 | ¥22.9 干到 808 kcal 的满足感方案 |
| 案例 3 · 500卡健身餐 | 只限热量 | 三方案 434~495 kcal 全过闸,官方大卡档对齐 |
| 案例 4 · 20元紧预算 | 紧预算+券 | 13 张券 0 张今日可用时的诚实处理 + 券日历 |
| 人群 | 场景 |
|---|---|
| 🏃 健身/控糖人群 | 热量预算内吃麦当劳不破防 |
| 💰 学生党/省钱党 | 券+预算双卡,顿顿不超支 |
| 👨👩👧 宝妈/家庭用户 | 给孩子配一顿热量可控的开心乐园餐 |
| 🍔 麦门信徒 | 把「随便吃吃」升级成「精确吃吃」 |
这两条不是设计出来的,是跑完 88,192 个组合后才发现的——也是「静态菜单表 + 拍脑袋推荐」永远给不出的答案:
① 「随心配 1+1」是麦当劳藏得最深的省钱漏洞。 同样吃「堡 + 可乐」,单买 ¥23.0 + ¥10.0 = ¥33.0,走随心配 1+1 只要 ¥13.9——省 ¥19.1,够再买一个圆筒还剩。但菜单里它藏在「随心配」分类下,不枚举根本发现不了这个价差。
② 「500 大卡套餐」比你自己拼更便宜、还更饱。 官方 500 卡档套餐(如「酥脆无双套餐」¥20,434 kcal)vs 自拼「麦麦脆汁鸡 + 迷你薯条 + 无糖可乐」——同构成下套餐便宜 ¥2.5 且不用自己做算术。控卡的人最该买的恰恰是官方热量档,这与「套餐=不健康」的直觉相反。
不藏短板,以下都是当前版本的真实边界:
逻辑不是「看起来对」,是「跑起来对」——自测直接跑在发货的 demo.html 上(不是另写一套镜像实现),覆盖数据完整性、双闸门、券匹配、边界诚实性、单文件自包含:
python scripts/run_selftest.py
# 共 43 项 | 通过 43 | 失败 0
实测抓过的真问题:「麦乐鸡」没被识别为小食,导致「王牌小食拼」券匹配不到——关键词表补上后修复。这类漏洞肉眼看不见,只有断言能逮住。
create-order,杜绝误支付(用户两次明确确认后才放行)auto-bind-coupons 仅在用户明确要求时执行mcd-dual-budget-coach/
├── SKILL.md # Skill 本体(触发判定/调用链/组合算法/输出格式)
├── README.md # 本文件
├── MCP_INTEGRATION.md # 麦当劳 MCP 集成说明(Server/Tool/流程/价值)
├── mcp-config.example.json # 脱敏 MCP 配置示例(环境变量占位符)
├── CONTEST_DECLARATION.md # 参赛声明(官方原文)
├── workbuddy.md # WorkBuddy 开发过程记录(专项奖励)
├── demo.html # 可交互演示页(五屏:预算→战报→明细→目录→💬对话,零外链无凭证)
├── demo-assets/ # 演示页用的商品图(86 张,来自麦当劳接口)
├── examples/
│ ├── demo-chat.png # 产品界面:一次真实对话(首图)
│ ├── battle_reports.png # 4 场景真机实测战报图
│ ├── case-1-30元600卡.md # 双闸门实测:数字级溯源
│ ├── case-2-25元性价比.md # 只限金额实测
│ ├── case-3-500卡健身餐.md # 只限热量实测
│ └── case-4-20元紧预算与券日历.md # 紧预算 + 券日历诚实版
└── references/
└── tools.md # 本 Skill 使用的 MCP 工具速查
本项目参加 麦当劳程序员创意开发大赛(2026.10.9 - 10.25),使用 WorkBuddy 开发,参与 WorkBuddy 专项奖励。
方便搜索到这里。若你也在做麦当劳 MCP 相关的东西,欢迎在 Issues 交流。
中文:麦当劳 · 麦当劳 MCP · 麦当劳中国 · 麦门 · 麦当劳预算及热量测算 · 麦门双预算军师 · 双预算 · 减脂期吃麦当劳 · 麦当劳点餐 · 预算配餐 · 预算点餐 · 热量控制 · 卡路里 · 减脂餐 · 增肌餐 · 蛋白质 · 钠含量 · 营养配餐 · 优惠券 · 券后价 · 组合优化 · 最划算 · 性价比 · 点餐助手 · 智能点餐 · 配餐算法 · 穷举组合 · 麦当劳菜单 · 随心配 · 巨无霸 · 麦乐送 · 外送 · 到店自取 · 麦当劳程序员创意开发大赛 · WorkBuddy · 技能 · 智能体 · 全息卡 · 人设卡 · 闪卡
English:McDonald's China · McDonald's MCP · mcd-mcp-server · MCP server · Model Context Protocol · agent skill · WorkBuddy skill · AI agent · meal planner · budget meal · calorie budget · calorie tracking · macro friendly · high protein · nutrition · sodium · coupon optimizer · deal finder · meal combination · optimization · food ordering assistant · Three.js · holographic card · persona card · trading card
项目输出仅供参考,不构成医疗或营养建议。餐品信息、价格及供应状态以麦当劳官方渠道实时结果为准。