麦当劳程序员节创意开发大赛参赛作品

你今天还能吃多少卡,
取决于你愿意走多远。

站在楼下纠结「现在吃什么」时,你真正想知道的是——这一顿,我吃得下吗?

试试看(不用装任何东西) GitHub 源码

离线可交互 · 零依赖 · 纯前端


walk-kcal 输出的竖屏长图

一张竖屏长图:附近哪家店、哪道菜你这顿吃不吃得下——绿色 = 吃得起,红色 = 超了。


反常识:麦当劳居然是个低热量选项

我们把 158 条麦当劳官方营养数据、155 万条中餐菜谱摊在一起算了一遍。

麦香鱼 325 卡 · 麦满分 250 卡 · 迷你草莓新地 122 卡
而隔一条街那家面馆的红烧肉盖饭,780 卡起步

同一街区里,麦当劳的推荐菜大多落在普通人的一餐额度之内。

这不是我们编的,是算出来的。

对热量预算紧张的人来说,走进麦当劳,反而是最安全的选择。

这个工具能做什么

你问它做
我现在还能吃 450 卡,附近有什么能吃的算额度、列附近店、每道菜标「吃得下 / 超了」
走过去 500 米能多吃多少走 500 米 ≈ 多挣 28 卡,额度实时重算
麦当劳和隔壁面馆哪个更合适同一额度下对比热量,一眼看出差距
这家店整体会不会吃超按推荐菜相对额度给店铺定性 🟢 🟡 🔴

输出一张竖屏长图,可以直接发微信、发小红书。


独特之处

同类赛道里,大多数项目只算了菜品的热量;提到「步行」的,几乎没几个把它接到热量上。

别人通常做的我们做的
算一下麦当劳某一款汉堡的热量你楼下的任意一家店,例如麦当劳
把距离当成「还有多远」把距离换成「这顿能多吃多少卡」
只做一个平台三种形式,共用同一份内核
三种形式,同一份结果

① Skill —— 对 Agent 说一句「附近吃什么」
② Bot —— 在聊天软件里发消息,回复带可点的按钮
③ MCP —— 从任何 MCP 客户端调用,标准 JSON-RPC

三种接入形式:① Skill(Agent 宿主)② Bot(聊天软件)③ MCP(任何 MCP 客户端)

麦当劳 MCP 开放的,是它自己的营养表。可真实场景里,你 400 米外那家面馆多少卡?
没有人做这件事。我们做了。

内置两款能力 —— 也可以接你自己的

能力供什么来源
麦当劳门店 + 推荐菜 + 官方精确营养值(158 条,含蛋白 / 脂肪 / 碳水 / 钠 / 钙)麦当劳官方 MCP
高德地图周边任意餐厅 + 网友推荐菜 + 真实路网步行距离高德开放平台
麦当劳的两条通道

① 什么都不用配 —— 用我们内置的官方数据快照(158 条营养值,2026-10-09 抓取)
② 配上 MCD_MCP_TOKEN —— 门店与营养值都实时从 mcp.mcd.cn 拉

只想看个 demo、不想去申请 Token?直接跑就行,效果是完整的。
两款可按需组合,一个环境变量的事:
默认两个都开(合并成一份结果)· WALKKCAL_PACKS=mcd 只看麦当劳 · WALKKCAL_PACKS=nearby 只看周边餐厅

也能接你自己的 —— 点评的企业接口、美团,或者你手上任何一份门店/菜品数据。 数据源是可插拔的:加一个文件 + 一个环境变量,主流程 0 行改动。


跑起来

先跑内置场景 —— 这一步一个 Key 都不需要。

git clone https://github.com/adexbn/walk-kcal && cd walk-kcal
python walkkcal/render.py     # 出图(内置场景,1~2 秒)
open demo/explore.html        # 离线可交互 demo

快照里已经存好了门店、推荐菜、步行距离和热量 —— 麦当劳那 158 条官方营养值也是内嵌的。

两套数据源,各配各的 —— 都不配也能跑:
配上麦当劳 Token(MCD_MCP_TOKEN)→ 门店与营养值走实时而非内置快照;
配上地图 Key(默认高德 AMAP_KEY)→ 你周边任意餐厅 + 真实步行距离。

输出格式是可选的:默认出 SVG —— 浏览器打开就能看、放大不糊,大多数场景够用; 想要 PNG(例如直接发微信、小红书),装一个很小的扩展包即可。


我们诚实地告诉你

额度是你自己定的预算,不是算法塞给你的建议 —— 走路只让它随距离增长。

中餐热量是估算的(平均误差 25–28%),因为语料库里 0% 的菜谱标注了份量。 我们花最大力气的地方不是「算得更准」,而是知道什么时候算不准,然后如实显示「算不出」—— 而不是猜一个看起来正常的数字。

宁可少算,不可算错。