xanthichi/mcd-meal-mate

效率与系统工具

根据实时门店菜单、预算、热量与蛋白目标,给出三套可解释的麦当劳搭餐组合,缓解午餐选择困难。

86
2
TypeScript
MIT
今天上线

这是一个参赛作品,不是长期维护的日常工具:想看看实时 MCP 菜单如何变成可解释推荐的人值得点开,需要一个稳定的个人搭餐工具的人可以略过。

它由 Skill 和网页工作台组成,调用麦当劳 MCP 的门店、菜单、营养与优惠券工具,再返回三套满足预算、热量上限和蛋白目标的组合。

解决什么问题

在麦当劳决定午餐,通常要同时应付几份信息:上百个 SKU 的菜单、另一张营养表,以及又是另一套的优惠券和活动价。你想要一套不超过 35 元、700 kcal、还能达到蛋白目标的组合,现有的做法是心算价格和营养,算不动就干脆点回熟悉的套餐。这个项目改掉了比较候选这一步:你输入城市、地标、预算、热量上限和蛋白目标,它直接给出三套带标签的方案,并把价格、热量、蛋白质、每元蛋白质和优惠差额摊开。你拿到的是一个能照着点的候选清单,而不是一个黑盒答案。

有什么不同

机制是它最有意思的地方。Node/Express 服务端用原生 fetch 访问麦当劳 MCP 的 Streamable HTTP 端点,Token 只留在服务端,菜单和营养结果在内存中缓存。规划器再按组合约束和偏好打分,产出侧重点不同的三套方案:均衡、蛋白加码和省心搭。页面上可以展开 MCP 调用链,看到每个 Tool 的状态和耗时,推荐因此可追溯。

代价是这套结构偏演示性质。它依赖第三方 MCP Token 和工具可用性;没有 Token 或某个 Tool 暂时不可用时,会降级到明确标注的脱敏快照。在线演示是纯前端版本,始终使用这份快照;要实时菜单,得按项目说明自己跑仓库里的 Node 服务。营养解析基于文本数据,菜单和营养列表对不上、缺项,都是测试覆盖到但无法完全消除的真实边界。

谁值得试

适合:想找一个具体小例子,看看如何在服务端代理后面编排多个 MCP 工具、并把调用链展示给用户的 Agent / Skill 开发者。对约束式搭餐好奇、且愿意本地跑 Node 服务或直接看快照演示的人,也可以一玩。

不适合:想要日常个人午餐工具的人。它没有账号、不下单、不支付,除了当前会话输入之外不保存偏好;README 也明确说明供应、价格和活动以官方渠道为准。如果你所在城市查不到附近门店,或者 MCP 工具不可用,产品就退化成演示快照。想把这类流程接进自己 Agent 的人,可以看仓库里的 MCP 集成说明。

使用条件与边界

实时数据需要 Node.js 20+、npm 10+,以及设置为 MCD_MCP_TOKEN 的麦当劳 MCP Token。没有 Token 也能跑生产构建看演示,或者直接用在线 Pages 演示;README 还提供了 Docker 部署方式。日常维护意味着要续期或更换 Token,并留意 MCP 工具变动,因为规划器是绑在 query-nearby-stores、query-meals、list-nutrition-foods 这些具体工具上的。

其他边界:项目不调用下单、支付、抽奖或积分工具,服务端不保存用户输入,并声明输出不构成医疗或营养建议。它是 2026 年比赛作品,明确不是麦当劳官方产品,所以推荐质量更适合当作思路演示,而不是经过验证的营养规划器。README 自己提醒演示截图来自脱敏快照,这一点在你拿线上效果和真实门店对比时要特别留意。

HotRepo 点评

HotRepo 从 2026-10-24 开始跟踪这个仓库;2026-10-25 它出现在 TypeScript 新项目榜第 8 名,共 84 个 star。这是榜单位次,不是单日新增。目前只有一个记录日期,也没有可比的每日榜历史,因此无法判断热度能否持续。可以先看 Pages 演示判断推荐风格;在依赖实时模式之前,先确认自己能否拿到 MCP Token,以及规划器依赖的门店、菜单、营养、优惠券这四个工具是否仍然可用。

本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。