内容
# 麦麦军师 McStrategist 🍔🧠
> 你的私人麦当劳点餐军师:自动薅券 × 营养师 × 口味记忆 × 一键下单 —— 基于麦当劳官方 MCP 构建
**一句话**:打开它,它已经把今天能领的券全领了;根据你的身体目标(减脂/增肌/维持)和口味记忆,从门店真实菜单里算出「营养达标 + 顺口 + 最划算」的今日方案;你只管说"就这个"。
## 它解决了什么问题
点麦当劳时的三个真实痛点:
1. **券永远领不及时** —— 麦麦省的券每周都在换,想起来的时候已经过期。
2. **想吃又怕胖** —— 想减脂/增肌,但菜单上没有热量排序,配一餐全靠感觉。
3. **每次都在重复选择** —— 其实你就是爱吃那几样,但每次都要重新纠结一遍。
麦麦军师把这三件事交给程序:**领券自动化、配餐数学化、口味个性化**。
## 功能
| 命令 | 干什么 |
|---|---|
| `coupons --bind` | 一键领取麦麦省全部可领券(真实执行) |
| `recommend` | 今日吃什么:营养约束配餐 + 口味重排 + 叠券建议 |
| `recommend --goal bulk` | 切换身体目标(cut/bulk/maintain) |
| `plan --store <code>` | 完整方案:门店真实菜单 × 营养 × 口味 × 卡包券 → 算价,含今日到期券预警 |
| `points` | 积分管家:余额/到期预警/兑换性价比排行(元每百分) |
| `memory --order '巨无霸+麦乐鸡'` | 记录你吃了什么(也可 `--sync` 从历史订单自动学) |
| `memory --rate '巨无霸=5'` | 给爱吃的打分,1 分自动进黑名单 |
| `stores --lat 22.53 --lng 113.95` | 查附近门店 |
| `group`(模块) | 团餐模式:多人偏好聚合 + 满减门槛凑单 |
## 快速开始
```bash
# 1) 在 https://open.mcd.cn/mcp 申请你的 MCP Token
export MCD_MCP_TOKEN=your_token_here
# 2) 无任何第三方依赖,Python 3.10+ 直接跑
python3 -m mcstrategist.cli coupons --bind # 先把今天的券全领了
python3 -m mcstrategist.cli recommend --sync # 从你的历史订单学习口味
python3 -m mcstrategist.cli plan # 出今日方案并试算价格
```
可选:`profile.json` 描述你的身体档案(年龄/身高/体重/活动量/目标),算法据此计算 BMR/TDEE 和每餐热量预算:
```json
{
"sex": "male", "age": 24, "height_cm": 175, "weight_kg": 68,
"activity": 1.375, "goal": "cut"
}
```
## 工作原理
```
麦当劳 MCP (https://mcp.mcd.cn)
├─ auto-bind-coupons ────────► 自动领取全部可领券
├─ list-nutrition-foods ─────► 160 个品的完整营养素表
├─ order-list ───────────────► 历史订单 → 口味记忆(频率 × 新近度 × 评分)
├─ query-meals ──────────────► 门店实时菜单(含价格)
├─ query-my-coupons ─────────► 卡包券 → 与推荐组合自动匹配 + 到期预警
├─ query-my-account ─────────► 积分余额/将过期积分 → 积分管家
├─ mall-points-products ─────► 积分商城 → 兑换性价比排行(元/百分)
└─ calculate-price ──────────► 真实试算(原价/优惠/实付)
配餐求解器:在「每餐热量预算」约束下穷举组合
减脂 = 蛋白供能比 × 60 + 饱腹感 × 20 − 钠惩罚
增肌 = 蛋白总量 × 1.2 + 热量填充 × 10 − 钠惩罚
最终排序 = 口味 45% + 营养位次 35% + 价格 20% + 叠券加成
```
- **口味记忆**是"探索-利用"结构:常买/好评的多推(利用),没吃过的保底 0.35 中性分(探索),1 分差评直接黑名单。
- **下单是可选的**:`create-order` 仅在显式要求时调用,默认一切操作只读或免费。
## 安全设计
- 花钱操作(下单)不默认执行,需要显式命令;
- Token 只从环境变量读取,仓库内 `mcp-config.example.json` 仅含占位符;
- 口味记忆存本地 `~/.mcstrategist/memory.json`,不上传任何个人数据。
## 文件结构
```
mcstrategist/
├── client.py # MCP Streamable HTTP 客户端(纯标准库)
├── nutrition.py # BMR/TDEE + 约束配餐求解器
├── memory.py # 口味记忆(订单同步/评分/黑名单)
├── coupons.py # 领券 + 券组合建议
├── order.py # 今日方案流水线(菜单×营养×口味×券→算价)
├── group.py # 团餐凑满减
└── cli.py # 命令行入口
```
## 目标用户
- 健身/体重管理人群:想吃麦当劳又要控制热量和蛋白质
- 麦门信徒:不愿错过任何一张券
- 选择困难症患者:让算法替你决定今天吃什么
## License
MIT