内容
<div align="center">
# 麦麦点餐参谋
**同一顿饭,换一种买法,能差出十几块钱。**
你说想吃「巨无霸 + 薯条 + 可乐」——
顺手点 **¥48.5** → 换个买法 **¥36.5** → 你多花了 **¥12.0**

东西一模一样,多拿的还是一份薯条和一杯可乐。
<a href="https://github.com/pandasir/mcd-value/stargazers"><img src="https://img.shields.io/badge/%E2%AD%90_Star-this_repo-DA291C?style=for-the-badge&logo=github&logoColor=white" alt="Star this repo" height="28"></a>
</div>
---
<div align="center">
你想吃什么、预算多少、在减脂还是在忌口 —— 说一句人话,
它把这家门店所有买法摆在一起,告诉你哪个划算、你贵在哪、券该怎么用。



[在线试玩](https://pandasir.github.io/mcd-value/) · [它是什么](#它是什么) · [能省多少钱](#三个你每天都在多花钱的地方) · [安装](#安装) · [怎么用](#怎么用) · [适合谁](#适合谁) · [诚实说明](#几个诚实的说明)
<sub>麦当劳程序员创意开发大赛参赛作品 · 非麦当劳官方产品 · MIT</sub>
</div>
---
## 它是什么
一个**麦当劳点餐参谋**。
你对着它说:「我想吃巨无霸 + 薯条 + 可乐,怎么点最划算?」
它做三件事:
1. **拉你所在门店的真实菜单** —— 不是凭印象编商品,价格就是这家店当天的价格;
2. **把同一批商品的所有买法摆在一起算** —— 单点、套餐、组合,哪个便宜一眼看清;
3. **把你手里的优惠券一起算进去** —— 每张券值多少钱、哪张先用、哪张注定过期。
它**不猜、不编、不估**。算不出来的,它会直说算不出来。
> 又名:麦麦点餐参谋 / 麦当劳点餐参谋 / 麦当劳省钱助手 / 减脂点餐助手 / MCD Value Strategist。
---
## 三个你每天都在多花钱的地方
下面三个例子,全部来自**同一家门店(深圳同方信息港)2026-10-14 的真实菜单快照**。
数字不是举例凑的,是这家店的真实标价。
### ① 同一批东西,换个买法少花 ¥12.0
```
单点买法 巨无霸 ¥25.5 + 薯条 ¥13.5 + 可乐 ¥9.5 = ¥48.5
换个买法 「巨无霸三件套」×1 = ¥36.5
─────────
你多花了 ¥12.0
```
点三件套的人,少花 12 块,拿到的是同样这三样东西。
这不是个例。全菜单扫一遍:**13 个能逐个单点的套餐,13 个全都更便宜,而且每一个都正好便宜 ¥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 以上) |
---
**先做这一步(方式一、方式二都要) 申请麦当劳 MCP Token**
打开 [麦当劳 MCP 开放平台](https://open.mcd.cn/mcp) → 用手机号登录 → 进入「控制台」→
点「激活」→ 复制那串 Token(很长,像 `xxxxxxxx-xxxx-...`)。免费。
---
### 方式一 · 在 WorkBuddy 里用
**第 2 步 把 Token 填进 WorkBuddy**
打开 WorkBuddy 的【连接器 → 自定义连接器 → 配置 MCP】,
把项目里 [`mcp-config.example.json`](mcp-config.example.json) 的内容整段粘进去,
只需要把 `Bearer ${MCD_MCP_TOKEN}` 换成 `Bearer 你刚才复制的Token`:
```json
{
"mcpServers": {
"mcd-mcp": {
"type": "streamablehttp",
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}
```
保存后,连接器页面右上角会多出一个 `mcd-mcp` 条目,点它旁边的「**信任**」启用。
**第 3 步 装上这个技能**
把项目文件夹放进 WorkBuddy 的技能目录。macOS / Linux 一行命令:
```bash
ln -s "$(pwd)" ~/.workbuddy/skills/mcd-meal-adviser
```
Windows 用户:把整个项目文件夹复制到 `%USERPROFILE%\.workbuddy\skills\mcd-meal-adviser`。
**第 4 步 开始用**
装完就能用了。回到对话框说第一句话:
**「我想吃巨无霸 + 薯条 + 可乐,怎么点最划算」**。
下面「怎么用」一节还列了更多可以直接照说的例子。
> 用软链接(`ln -s`)装在技能目录里,好处是以后 `git pull` 拉取更新,
> 技能会自动跟着变,不用再装第二遍。
---
### 方式二 · 在 Claude / Cursor / VS Code 等客户端里用
同样先做完上面那一步拿到 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**
```json
{
"mcpServers": {
"mcd-mcp": {
"type": "streamable-http",
"url": "https://mcp.mcd.cn",
"headers": { "Authorization": "Bearer 你的Token" }
}
}
}
```
改完要**完全退出再重开**(关窗口不算,配置只在启动时读一次)。
如果你的版本不认上面这种直连写法,换成这个「转发」写法效果一样:
```json
{
"mcpServers": {
"mcd-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.mcd.cn",
"--header", "Authorization: Bearer 你的Token"]
}
}
}
```
**Claude Code** —— 终端里跑一条就行:
```bash
claude mcp add --transport http mcd-mcp https://mcp.mcd.cn \
--header "Authorization: Bearer 你的Token"
```
**Cursor**
```json
{
"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)**
```json
{
"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**
```json
{
"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) 写的是**怎么算**
(先拉哪些数据、哪些是硬门槛、哪些数不许编)。把项目目录当工作目录打开,然后跟它说:
> 先读一遍 SKILL.md,之后严格按里面的流程执行。
想让它每次都自动先读,就把这句话写进该客户端的项目规则文件
(Claude Code 认 `CLAUDE.md`、Cursor 认 `.cursor/rules`、很多其他客户端认 `AGENTS.md`)。
---
### 方式三 · 不用 AI 客户端,自己跑
只要 Python(3.9 以上)。**不需要 Token、不联网、不需要注册任何账号**:
```bash
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 # 开头那三个例子,七个场景一次跑完
```
它读的是项目自带的一份**真实门店快照**(2026-10-14 抓取,已脱敏,不含任何个人信息)。
> 如果你的系统只有 `python3` 没有 `python`(macOS 默认就是这样),
> 把命令里的 `python` 换成 `python3` 即可。
想看你自己常去的门店?配好 Token(方式一或方式二)之后跟它说一声,它会去拉那家店的实时菜单。
完整的取数步骤见 [`docs/TOKEN_GUIDE.md`](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 为准。
- **营养有估算成分。** 套餐类商品的营养是按组成推算的,输出里会明确标注「估算」;调味酱和部分新品没有营养数据,不参与计算。
- **券有边界。** 能从券名推出金额的券很少,推不出来的我们标「不清楚」,不编一个数。能用范围与叠加规则以门店为准。
- **消费分析只看「多久点一次、一次花多少」。** 不分析你爱吃什么,也不会保存你的订单明细。
- **不是营养或医疗建议。** 数据与结论仅供参考。
---
## 发现对不上的地方
价格、套餐组成、券金额、营养数值 —— 只要和你在门店看到的对不上,说一声就行。
快照会过期,门店会调价,套餐也会改组成。这些都只能靠真实反馈来修。
- [报一个算错的地方](https://github.com/pandasir/mcd-value/issues/new?template=price-report.yml) —— 哪家店、哪条结论、你看到的是什么
- [我想要我这家店](https://github.com/pandasir/mcd-value/issues/new?template=store-request.yml) —— 说城市和门店,优先补那一家
---
## 免责声明
本项目为「麦当劳程序员创意开发大赛」参赛作品,由参赛者独立开发,**非麦当劳官方产品**。
项目输出仅供参考,不构成医疗、营养或其他专业建议;餐品信息、价格及供应状态以麦当劳官方渠道的实时结果为准。
使用麦当劳 MCP 服务须遵守其《使用条款》与《麦当劳 MCP 服务规则》。
MIT License(见 [LICENSE](LICENSE))。
**如果它帮你少花了一杯可乐的钱,一个 star 就是最好的反馈。** ⭐
连接信息
猜你喜欢
暂无推荐服务器