麦门热量搭配师
触发条件
当用户说类似下面这些话时,使用这个 Skill:
- 今天吃麦当劳,帮我控制在一顿 600 千卡左右
- 想吃麦当劳,热量别超 700 千卡,帮我搭配一下
- 给我凑一顿麦当劳,主食加小食加饮料
先问清楚的三件事
在调用工具之前,先向用户确认,缺了就问,不要猜:
- 目标热量,例如 600 千卡
- 热量上限,例如 700 千卡;如果用户只给了目标,就把上限默认设为目标的 1.15 倍,并告诉用户这个默认值
- 忌口或偏好,例如不吃辣、清淡一点;没有就按无偏好处理
调用流程
- 调用麦当劳官方 MCP 的 list-nutrition-foods 工具,获取餐品营养信息列表。MCP 配置见 mcp-config.example.json,Token 只通过环境变量 MCD_MCP_TOKEN 传入,绝不要在对话里向用户索要 Token,也不要把 Token 写进任何文件。
- 把返回结果归一化为统一字段:名称、能量千卡、蛋白质克、脂肪克、碳水化合物克、钠毫克、标签。缺失营养字段的餐品不参与搭配,并在结果里说明。
- 运行 scripts/pick.py,输入归一化后的数据、目标热量、上限和偏好,得到组合。
- 按下面的输出格式把结果讲给用户。
输出格式
- 组合清单:每一项的名称和热量
- 合计:总热量,以及蛋白质、脂肪、碳水化合物、钠的合计
- 一句话说明:总热量离目标差多少,是否在上限内
- 如果没有符合上限的组合:直接说明没有符合条件的组合,并建议放宽上限或降低目标,不要硬凑超标组合
绝对不要做的事
- 不要调用 create-order、cancel-order、auto-bind-coupons、draw-lottery、mall-create-order、party-order-create 等任何写操作工具
- 不要替用户下单、领券、抽奖或兑换
- 不要编造餐品和热量,热量数字必须来自 MCP 返回或用户提供的归一化数据
- 不要在对话、文件或仓库里出现真实 Token
