我给官方 MCP SDK 提了 PR,顺手做了个给 AI Agent 用的中国连锁餐饮热量库

一个独立开发者的 MCP 实战:从给 modelcontextprotocol/python-sdk 提 PR,到做出真正能用的中国连锁餐饮热量数据服务。

一、为什么做这个

最近给 AI Agent 配饮食相关的工具时,我发现一个很尴尬的事实:英文营养数据一大把(OpenFoodFacts、MyFitnessPal),但中国连锁餐饮的真实菜单热量数据,几乎没有能直接给 Agent 用的。

你让 Agent 算「瑞幸生椰拿铁多少大卡」,它要么瞎编,要么给你一个美国星巴克的近似值。对于中国用户,这是刚需——我们天天吃麦当劳、肯德基、瑞幸、蜜雪冰城,但数据散、且多数要自己爬。

于是我做了 foodcalorie-mcp:一个 MCP Server,6 个工具(条码查询、名称搜索、营养汇总、健康建议、品类浏览、营养对比),Agent 直接调。这里先交代一个坑:免费版内置的条码是示例码,不是真实商品 EAN,实际检索请走名称搜索——这点我写在 README 最前面,不想让人装上才发现。

二、我是谁(为什么你该信这份数据)

做这个之前,我先给自己攒了点「技术信用」:给官方的 MCP SDK 提过 PR。

这里有个真实的踩坑,顺便分享。我之前提过 #3780:修复「请求没有 Authorization 头时应该返回 401」。按 RFC 6750 §3.1,正确做法是返回一个 Bearer challenge(带 resource_metadata),而不是直接扔一个 error="invalid_token"。但那个 PR 最后被关闭、没合并——原因是官方维护者更关心别的方向。教训:开源贡献要押在 maintainer 真正需要的 issue 上,而不是自己觉得重要的。

这个经历让我更在意「能不能上生产」这件事:数据要对、来源要可溯源、缺失要敢承认。

三、技术实现:一个能用的热量 MCP 怎么搭

核心设计很简单,但有几个值得说的点:

1. 数据分层加载(开放核心模式)

免费版内置 103 条通用中国食品(饮料、快餐、零食、水果、乳制品等 18 个品类)。Pro 数据通过环境变量 FOODCALORIE_EXTRA_DATA 指向一个 JSON 文件,零代码加载:

# 加载 Pro 数据包(任选其一)
export FOODCALORIE_EXTRA_DATA=/path/to/pro_foods.json
# 问 AI「瑞幸生椰拿铁多少大卡」即可

实测 103 + 116 = 219 条可以无缝合并。免费用户永远能跑,付费用户只是多一叠更香的数据。

2. 工具设计围绕 Agent 的真实调用路径

不是把所有字段塞给你,而是按 Agent 会问的方式暴露工具:search_food_by_name(带品牌联想)、get_daily_nutrition_summary(算一天总热量和每日值占比)、compare_foods(多食品横向对比)。Agent 的 system prompt 只要说「用 foodcalorie 工具查」,就能自然驱动。

3. 配置只要 5 行

{
  "mcpServers": {
    "foodcalorie": {
      "command": "python",
      "args": ["-m", "foodcalorie_mcp.server"]
    }
  }
}

四、免费 vs Pro:区别在哪

免费版 Pro(早鸟 ¥29 限时至 2026-11-04,恢复价 ¥49 买断)
数据量103 条通用食品+116 条 / 14 个连锁品牌菜单
品牌覆盖通用肯德基 24、海底捞 20、蜜雪冰城 16、麦当劳 14、星巴克 14、瑞幸 11、喜茶 5、古茗 4…
热量覆盖103/103116/116
营养维度四大宏量全覆盖,钠/糖/维生素部分条目有蛋白质 59、脂肪 61、碳水 54、糖 15、钠 4、咖啡因 21(如实标注覆盖数)
过敏原无同样没有——不提供,也不让 AI 去猜
数据溯源—116/116 带官方来源链接,可逐条核对

免费版已经够你跑通 Agent;Pro 解决的是「我想问的是具体某家连锁的某款产品」这个真实场景。

这里我做了个反商业的决定:把覆盖率写在商品页上。钠只有 4/116,糖只有 15/116,我没凑数、没按品类均值填。因为一旦有人拿这份数据做饮食控制,编出来的钠含量比没有钠含量危险得多。

五、为什么值得(早鸟 ¥29,原价 ¥49)

现在限时早鸟价 ¥29(截至 2026-11-04,之后恢复 ¥49)。说实话,这价格就是「帮你省掉自己爬菜单 + 逐条核对源头的时间」。连锁菜单经常变、热量还分大小杯/规格,自己维护成本不低。我做的是真实来源、可溯源、一次买断永久用,不是订阅制(我本人也不喜欢订阅)。

海外用户支持 PayPal($6.99)与 Agensi 平台(自动交付)。

💳 立即购买 Pro 数据包

¥29 早鸟价 · 限时至 2026-11-04

原价 ¥49  ·  早鸟结束后恢复 ¥49

扫码转账 ¥29(支付宝 / 微信均可),付款后把截图发到 jihaochang1@github.com,标题写「FCPRO付款」,我会立即回复发送下载链接。

支付宝收款码

支付宝

微信收款码

微信

海外用户:Agensi 平台 $6.99 即时交付,或邮件索取 PayPal 收款请求;企业批量采购支持银行对公转账。

查看完整产品说明

六、结语

做 MCP 工具这半年,最大的体会是:信任比功能更难攒。所以我先去给官方 SDK 提 PR,再拿这个信用背书做产品——希望你拿到手的数据,是真的敢喂给 Agent 的。

如果免费版对你有用,欢迎去 GitHub 点个 Star 或提 Issue;有企业私有化 / 定制数据集需求也欢迎聊。

—— 一个给官方 MCP SDK 提过 PR 的独立开发者

FoodCalorie Pro · 中国连锁餐饮营养数据库 · 免费版 PyPI · GitHub