同一顿饭,换一种买法,能差出十几块钱。
你说想吃「巨无霸 + 薯条 + 可乐」:
顺手点 ¥48.5 → 换个买法 ¥36.5 → 你多花了 ¥12.0
东西一模一样,多拿的还是一份薯条和一杯可乐。
你想吃什么、预算多少、在减脂还是在忌口,说一句人话, 它把这家门店所有买法摆在一起,告诉你哪个划算、你贵在哪、券该怎么用。
在线试玩 · 它是什么 · 能省多少钱 · 安装 · 怎么用 · 适合谁 · 几点说明
麦当劳程序员创意开发大赛参赛作品 · 非麦当劳官方产品 · MIT
一个麦当劳点餐参谋。你对着它说「我想吃巨无霸 + 薯条 + 可乐,怎么点最划算?」,它会做三件事:
- 拉你所在门店的真实菜单。价格就是这家店当天的价格,商品名称和标价都对得上。
- 把同一批商品的所有买法摆在一起算,包括单点、套餐和组合,哪个便宜一眼看清。
- 把你手里的优惠券一起算进去:每张券值多少钱、哪张先用、哪张会过期作废。
它不猜也不估。算不出来的,它会直说算不出来。
又名:麦麦点餐参谋 / 麦当劳点餐参谋 / 麦当劳省钱助手 / 减脂点餐助手 / MCD Value Strategist。
下面三个例子,全部来自同一家门店(深圳同方信息港)2026-10-14 的真实菜单快照。数字是这家店的真实标价。
单点买法 巨无霸 ¥25.5 + 薯条 ¥13.5 + 可乐 ¥9.5 = ¥48.5
换个买法 「巨无霸三件套」×1 = ¥36.5
─────────
你多花了 ¥12.0
点三件套的人,少花 12 块,拿到的是同样这三样东西。
全菜单里有 12 组已验证的「汉堡单点 vs 对应三件套」,每组的三件套都便宜 ¥12.0。这家店的组合折扣是固定的,和点哪款商品无关:
麦辣鸡腿汉堡三件套 套餐 ¥33.5 < 逐个单点 ¥45.5 → 省 ¥12.0
不素之霸双层牛堡三件套 套餐 ¥37.5 < 逐个单点 ¥49.5 → 省 ¥12.0
巨无霸三件套 套餐 ¥36.5 < 逐个单点 ¥48.5 → 省 ¥12.0
培根蔬萃双层牛堡三件套 套餐 ¥35.5 < 逐个单点 ¥47.5 → 省 ¥12.0
优惠券是有保质期的钱。
麻烦的地方在于:券名里往往没有金额。「王牌小食拼」这张券值多少钱?券名没说,菜单里也没有这个商品。它的真实面值只能拿券去门店计价实测。
某个账户实测下来是这样的:
[顺手可用] 中薯条买一送一 值 ¥13.5 · 还剩 3 天
[顺手可用] 13.9浓浓黑巧 值 ¥7.1 · 还剩 6 天
[顺手可用] 王牌小食拼 值 ¥6.1 · 还剩 3 天
[不清楚] 6 张早餐券 券名推不出金额,我们就不猜
名义总额 ¥26.7,按你的消费水平都能实现,看起来不错。
但看你的点单习惯:8 笔订单,跨度 212 天,客单价 ¥23.6,平均 0.26 单/周。
这几张券 6 天后就到期,也就是说你大概只会再点 1 单。
券包能实现 ¥26.7,机会却只够用掉 ¥13.5。
剩下 ¥13.2 注定随券过期,白扔。
券值多少是一回事,用不用得上完全是另一回事。只算「券面总额」的助手会告诉你「你有 ¥26.7 的券」;它告诉你的是「你只能用掉 ¥13.5,另外 ¥13.2 会浪费」。
那个点单频率是从你自己的历史订单算出来的(8 笔真实订单),不是拍脑袋定的。用假设「每周点 3 单」去算,结论会从「浪费 ¥13.2」翻成「几乎不浪费」。假设错了,建议就是错的。
菜单里有 8 组「三件套比四件套还贵」的怪事:
培根安格斯厚牛堡 三件套 ¥45.5 > 四件套 ¥37.0 → 省 ¥8.5,还多一份
板烧鸡腿堡 三件套 ¥34.5 > 四件套 ¥28.0 → 省 ¥6.5
巨无霸 三件套 ¥36.5 > 四件套 ¥32.0 → 省 ¥4.5
看着像菜单的漏洞?这 8 组的四件套那一侧,全部需要麦金卡会员身份。
没卡的人拿不到那个价,所以对他们来说这里没有漏洞,只是有卡的话每单能省 ¥3 到 ¥6.5。
这个项目默认按「人人可买的价格」来推荐,会员价要你明确说一声才纳入。理由很直白:每一句结论,都要对没卡的人也成立。
三条路,按你的需要挑一条。想用自己常去那家店的实时菜单,就走方式一或方式二;只想先看看它算什么,方式三最省事。
| 你想怎么用 | 选哪条 | 要准备什么 |
|---|---|---|
| 在 WorkBuddy 里用 | 方式一 | WorkBuddy 账号 + MCP Token |
| 在 Claude / Cursor / VS Code / Cline / Windsurf 等里用 | 方式二 | 任意支持 MCP 的客户端 + MCP Token |
| 不装 AI 客户端,自己跑命令看结果 | 方式三 | 一个 Python(3.9 以上) |
如果只是想把它当技能装进已支持的客户端,一条命令就够:
npx skills add pandasir/mcd-value --skill mcd-meal-adviser技能页面:https://www.skills.sh/pandasir/mcd-value/mcd-meal-adviser。这条命令只装技能文件(SKILL.md 与 scripts/),不配 MCP 连接;要拉实时菜单仍需按方式一或方式二填 Token。
先做这一步(方式一、方式二都要):申请麦当劳 MCP Token
打开 麦当劳 MCP 开放平台,用手机号登录,进入「控制台」,点「激活」,复制那串 Token(很长,像 xxxxxxxx-xxxx-...)。免费。
第 2 步:把 Token 填进 WorkBuddy
打开 WorkBuddy 的【连接器 → 自定义连接器 → 配置 MCP】,把项目里 mcp-config.example.json 的内容整段粘进去,只需要把 Bearer ${MCD_MCP_TOKEN} 换成 Bearer 你刚才复制的Token:
{
"mcpServers": {
"mcd-mcp": {
"type": "streamablehttp",
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}保存后,连接器页面右上角会多出一个 mcd-mcp 条目,点它旁边的「信任」启用。
第 3 步:装上这个技能
把项目文件夹放进 WorkBuddy 的技能目录。macOS / Linux 一行命令:
ln -s "$(pwd)" ~/.workbuddy/skills/mcd-meal-adviserWindows 用户:把整个项目文件夹复制到 %USERPROFILE%\.workbuddy\skills\mcd-meal-adviser。
第 4 步:开始用
装完就能用了。回到对话框说第一句话:「我想吃巨无霸 + 薯条 + 可乐,怎么点最划算」。
下面「怎么用」一节还列了更多可以直接照说的例子。
用软链接(
ln -s)装在技能目录里,以后git pull拉取更新,技能会自动跟着变,不用再装第二遍。
同样先做完上面那一步拿到 Token。装的都是同一个「取数通道」,区别只是各家的配置放在哪个文件、字段怎么写,对号入座即可。
| 客户端 | 配置放在哪 | 字段名有什么不同 |
|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json(Windows:%APPDATA%\Claude\claude_desktop_config.json) |
顶层是 mcpServers |
| Claude Code | 不用改文件,跑一条命令 | 无 |
| Cursor | 全局 ~/.cursor/mcp.json,或项目里的 .cursor/mcp.json |
只写 url + headers |
| VS Code(Copilot) | 项目里的 .vscode/mcp.json |
顶层是 servers,不是 mcpServers |
| Cline | 扩展面板里填,不用手写文件 | 类型写 streamableHttp |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
写 serverUrl,不是 url |
Claude Desktop
{
"mcpServers": {
"mcd-mcp": {
"type": "streamable-http",
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}改完要完全退出再重开,关窗口不算,因为配置只在启动时读一次。
如果你的版本不认上面这种直连写法,换成这个「转发」写法效果一样:
{
"mcpServers": {
"mcd-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.mcd.cn",
"--header", "Authorization: Bearer 你的Token"]
}
}
}Claude Code:终端里跑一条就行:
claude mcp add --transport http mcd-mcp https://mcp.mcd.cn \
--header "Authorization: Bearer 你的Token"Cursor
{
"mcpServers": {
"mcd-mcp": {
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}放全局的 ~/.cursor/mcp.json(Windows 是 %USERPROFILE%\.cursor\mcp.json),或者放进项目里的 .cursor/mcp.json。存完在 MCP 面板点一下刷新。
VS Code(Copilot)
{
"servers": {
"mcd-mcp": {
"type": "http",
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}放在项目里的 .vscode/mcp.json。
Cline:不用手写文件。打开扩展的 MCP Servers 面板,选 Add Remote Server,URL 填 https://mcp.mcd.cn,Header 名填 Authorization,Header 值填 Bearer 你的Token。
Windsurf
{
"mcpServers": {
"mcd-mcp": {
"serverUrl": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}其余客户端(Gemini CLI 等)也是同一个套路:填 URL https://mcp.mcd.cn,再加一个 Authorization: Bearer 你的Token 请求头。
第 3 步:看连上了没有
随便问一句「列出你能用的麦当劳工具」。能报出一串工具名,就是通了。
第 4 步:让它按本项目的口径算
上面装的只是「取数通道」。同一个目录里的 SKILL.md 写的是怎么算:先拉哪些数据、哪些是硬门槛、哪些数不许编。把项目目录当工作目录打开,然后跟它说:
先读一遍 SKILL.md,之后严格按里面的流程执行。
想让它每次都自动先读,就把这句话写进该客户端的项目规则文件(Claude Code 认 CLAUDE.md、Cursor 认 .cursor/rules、很多其他客户端认 AGENTS.md)。
只要 Python(3.9 以上),不需要 Token,不联网,也不需要注册任何账号:
git clone https://github.com/pandasir/mcd-value && cd mcd-value
python scripts/adviser.py --budget 45 --mode balanced # 45 元吃一餐均衡的
python scripts/coupon_doctor.py --budget 45 # 券包体检 + 用券排程
python demo.py # 开头那三个例子,七个场景一次跑完
python scripts/build_pages.py # 把比价结果预渲染进网页(爬虫可读)网页 Demo(
docs/index.html)里的那 12 行数字是生成出来的,不要手改。改data/之后跑build_demo.py和build_pages.py,CI 会校验两边是否同源。
它读的是项目自带的一份真实门店快照(2026-10-14 抓取,已脱敏,不含任何个人信息)。
如果你的系统只有
python3没有python(macOS 默认就是这样),把命令里的python换成python3即可。
想看你自己常去的门店?配好 Token(方式一或方式二)之后跟它说一声,它会去拉那家店的实时菜单。完整的取数步骤见 docs/TOKEN_GUIDE.md。
在对话框里说人话就行,不用记任何命令。
「我想吃巨无霸 + 薯条 + 可乐,怎么点最划算?」 单点 ¥48.5;这家店的「巨无霸三件套」¥36.5 就含这三样,你多花了 ¥12.0。持卡还能到 ¥32.0。
「30 块钱在麦当劳能吃到什么?」 预算 30 元以内的几种点法,各自的热量和蛋白,贵在哪、便宜在哪。
「我在减脂,不要牛肉和油炸,45 块以内。」 忌口会真的从候选里剔除。给出一份 559 大卡、蛋白 20g、钠 558mg 的一餐。
「我这些券这几天怎么用?」 每张券实测值多少钱,按你的真实点单频率排出先用哪张,并直说哪几张会用不掉。
「我们 4 个人一起吃,总共 150 块。」 一份总预算内的配餐方案。
同一个问题随便问一个 AI,也能得到一段听起来很专业的回答,但那些回答里的商品、价格、营养多半是编的。
| 常见做法 | 麦麦点餐参谋 | |
|---|---|---|
| 商品 | 凭印象生成,名字对不上店里 | 门店真实菜单,名称与价格都对得上 |
| 价格 | 估一个 | 门店真实标价;下单前还会再核一次价 |
| 营养 | 凭印象说 | 官方营养库;套餐按组成推算,并标明是估算 |
| 省了多少钱 | 含糊带过 | 说清是哪一种省,不同口径不混着加 |
| 能不能吃 | 模型自己权衡 | 预算、热量、蛋白、忌口是硬门槛,达不到就淘汰 |
| 算不出来时 | 硬给一个数 | 直接说「不清楚」 |
AI 负责听懂你的需求,算钱这件事交给确定性计算。
同一顿饭能算出三个不同的差额,很容易混着说。我们的口径是:
- 计入:同一批商品,换个买法省下的钱。两侧都是这家店的真实现价,确定。
- 计入:券实际抵扣掉的钱。拿券去计价实测出来的,确定,但以门店核验为准。
- 单独标注,不与上面相加:门店的「划线价 − 现价」。
第三条不计入,因为你本来也不会按划线价买。拿划线价当基准,能把「省」吹得很漂亮,但那是假的。
上班族和学生每天有固定预算,想知道这一顿怎么点最划算。在减脂或增肌的人有热量和蛋白目标,需要能兑现的搭配而不是感觉。有忌口的人不想在菜单里一个个翻有没有牛肉、辣、咖啡因。券很多的人需要知道先用哪张、哪张会用不掉。带一群人吃饭的人要在总预算里给一桌人配餐。
- 价格是当天的快照。演示数据来自 2026-10-14 的门店快照,实际价格和供应情况以门店或 App 为准。
- 营养有估算成分。套餐类商品的营养是按组成推算的,输出里会明确标注「估算」;调味酱和部分新品没有营养数据,不参与计算。
- 券有边界。能从券名推出金额的券很少,推不出来的我们标「不清楚」,不编一个数。能用范围与叠加规则以门店为准。
- 消费分析只看你多久点一次、一次花多少。它不分析你爱吃什么,也不会保存你的订单明细。
- 这不是营养或医疗建议。数据与结论仅供参考。
价格、套餐组成、券金额、营养数值,只要和你在门店看到的对不上,说一声就行。
快照会过期,门店会调价,套餐也会改组成。这些都只能靠真实反馈来修。
本项目为「麦当劳程序员创意开发大赛」参赛作品,由参赛者独立开发,非麦当劳官方产品。 项目输出仅供参考,不构成医疗、营养或其他专业建议;餐品信息、价格及供应状态以麦当劳官方渠道的实时结果为准。 使用麦当劳 MCP 服务须遵守其《使用条款》与《麦当劳 MCP 服务规则》。
MIT License(见 LICENSE)。
如果它帮你少花了一杯可乐的钱,欢迎给一个 star。
McDonald's Ordering Strategist (mcd-value) is an ordering advisor built on McDonald's China MCP. You say what you want to eat, your budget, and any dietary limits, and it lists every way to buy that meal at your store: à la carte, combos, and bundles, with coupons applied.
Prices come from the store's real menu snapshot, not from model memory. Budget, calories, protein, and restrictions are hard constraints. Anything it cannot compute is labeled unknown instead of estimated. It does not host an MCP server; live store data needs your own McDonald's MCP token, while the bundled snapshot and python demo.py run offline with no token and no dependencies.
Full English documentation: README.en.md.