热榜第四的那篇文章,标题起得像个段子:《用 WorkBuddy + 麦当劳 MCP,做一个会算营养、比价格、还能下单的减脂私教》。作者是 CSDN 的全栈若城,项目叫 McFit Coach,页面数据 2.5k 阅读、25 赞。点进去之前我以为又是个套壳 demo,看完发现这回的接口是麦当劳中国自己开放的,链路端到端能跑通,连支付链接都真的返回了。
这事值得拆,是因为工具面本身。下面按「官方给了什么、怎么接、踩了什么坑、边界在哪」过一遍,关键数据都标了出处。
官方到底开放了什么
底座先交代。麦当劳中国有一个官方 MCP Server,GitHub 组织 M-China 下的 mcd-mcp-server 仓库,描述就一句:McDonald's China MCP Server Integration Guide。218 stars、8 forks,仓库创建于 2025 年 12 月 26 日。接入地址 mcp.mcd.cn,传输协议 Streamable HTTP,鉴权走 Bearer Token,开放平台挂在 open.mcd.cn/mcp。官方写的业务范围:麦乐送点餐、到店取餐、团餐、积分兑换券、活动日历查询。

图:麦当劳中国官方「麦当劳MCP服务开放平台」banner,标语「帮助 AI 轻松获取麦当劳服务」,即本话题消费品牌开放接口的官方入口形象
上线日期有个小插曲。赛事 README 的报名条件里写明,项目创建时间从 2025 年 12 月 25 日 00:00 起,并注明「2025 年 12 月 25 日是麦当劳 MCP 正式上线的日期」。仓库创建时间 12 月 26 日 07:39(UTC),跟这个日期对得上。网上有稿子还写着「2025 年 7 月上线、全球首家」,我翻了一圈没找到可核验的官方出处,这篇不采用。
真正让这波玩出花的是工具列表。官方 README 列了 33 个工具,读的那半边不稀奇:附近门店、菜单、菜品详情、我的券、我的积分、历史订单、活动日历。稀奇的是写操作那半边:create-order 创建订单并返回支付链接,cancel-order 撤单,mall-create-order 拿积分去商城兑换(含积分校验、积分扣减、发券或实物库存扣减),draw-lottery 消耗积分抽奖,party-order-create 门店派对下单,delivery-create-address 新增收货地址,auto-bind-coupons 一键领光账户名下所有券。
说白了,一个消费品牌把「读你的会员账户、替你写订单、再把支付链接递回来」这一整串都挂到了 Agent 可调的工具面上。我盯 MCP 生态这两年,消费品牌官方做到这个程度的,头一回见。

图:官方仓库 M-China/mcd-mcp-server 的 GitHub 品牌卡(1200×600,218 stars / 8 forks / 24 issues),可兼作 MCP 生态热度的数据佐证

怎么接:从一段配置到能下单
客户端选择不多但够用。官方 README 的推荐顺序是 WorkBuddy、Cherry Studio、Cursor、Kiro、Trae、VSCode。WorkBuddy 排第一有原因:它是腾讯的智能体产品,也是这次「麦当劳程序员创意开发大赛」的官方合作伙伴,活动规则里白纸黑字要求「参赛项目须真实使用腾讯 WorkBuddy 智能体」,赛事积分由腾讯提供,客服邮箱 workbuddy@tencent.com。主办方是金拱门(中国)有限公司。
配置就一段 JSON,仓库里原样给的:
json
{
"mcpServers": {
"mcd-mcp": {
"type": "streamablehttp",
"url": "https://mcp.mcd.cn",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}
Token 去开放平台申请,绑的是你自己的麦当劳会员账号。Cherry Studio 或 Cursor 直接把这段丢进 MCP 配置文件;WorkBuddy 在它自己的配置界面里填,字段一样。
两个硬约束提前说。每个 Token 每分钟最多 600 次请求,超限返回 429;401 意味着 Token 无效、过期或者没带上。Client 必须支持 Streamable HTTP,SSE-only 的老客户端接不上。
McFit Coach 是怎么跑的
这篇教程有意思的地方是它没有后端。Skill 负责编排,MCP 提供业务能力,本地就两个 Python 脚本:toon_parser.py 管解析,combo_solver.py 管求解。模型是 WorkBuddy 里配的自定义模型 doubao-seed-2-1-pro-260915。
为什么不全交给模型?因为限流。作者的方案是本地先枚举「主餐 × 小食 × 饮品」的组合,按热量、蛋白质、钠的预算过滤出 Top-K 候选,只对这几个候选调 calculate-price。收益之一他自己写了:降低触发 MCP 限流的概率。这个取舍很实在,33 个工具摆在那,真让模型挨个试错,600 次的额度一局就见底。
整条链是这样的:
now-time-info → list-nutrition-foods(本地解析)→ query-nearby-stores → query-meals → query-meal-detail → combo_solver.py → 查券 → calculate-price → 用户明确确认 → create-order
顺序不能乱。菜单和价格依赖门店与时段,券匹配必须等候选定下来才能做。原文反复强调 create-order 属于真实写操作,Skill 不会自动下单,只有用户明确确认后才触发。
一次真实联调的结果:create-order 返回 orderId 和支付链接,打开是付款二维码,手机扫码之后推荐的商品已经进了购物车,人工核对后完成支付。Agent 到此为止,钱还是人掏的。
(这段是教程作者自己跑通的实测记录。)
三个实测出来的坑
这三条都是原文联调踩出来的,复用价值比结论本身高。
-
list-nutrition-foods 返回的不是 JSON,是 TOON 文本。首行是字段定义头,长这样:
[160]{productName,nutritionDescription,energyKj,energyKcal,protein,fat,carbohydrate,sodium,calcium}:。麻烦在数据行:nutritionDescription 可能是 null,也可能自己带逗号,不能对整行按固定位置 split(',')。toon_parser.py 就是为这个写的。 -
价格单位不一致。query-meals 返回「元」,而且通常是字符串;calculate-price 返回「分」。展示层必须除以 100,不然用户会看到一个贵一百倍的价格。
-
套餐替换只能发生在同一 round 的候选项里。作者原规划「薯条换玉米杯」,调完 query-meal-detail 被推翻:板烧三件套的小食轮里根本没有玉米杯。「去酱」走 modification 参数;「可乐换无糖」算同轮零加价替换。到店自取 beType=1,后续调用不用再传 beCode。

生态:104 个项目都在干嘛
赛事数据挺能说明问题。比赛叫「麦当劳程序员创意开发大赛」,蹭 1024 程序员节,报名期 2026-10-09 10:30 到 10-25 23:59,按 GitHub 公开 Star 数排名(截至 2026-10-26 00:00)。RANKING.md 最近一次更新(10-19 10:00)显示 104 个项目进榜。前三名:mcd-saver-strategist 611 stars,自述能把巨无霸套餐从 47 块压到 21.9,省 53%,思路是优惠券组合优化;mcd-budget-meal 512;mcd-coupon-strategist 491,这个还会主动提示凑单陷阱。

图:麦当劳官方 GitHub 账号发布的 M-CODE「麦当劳程序员创意开发大赛」(1024 程序员节)banner,该赛事官方推荐用 WorkBuddy 开发 Skill,是「消费品牌开放接口、个人 Agent 组合下单」链路的直接官方佐证
前三名清一色在做「省钱」。榜单里还有 mcd-calorie-butler、walk-kcal、mcd-order-calories 一批营养和卡路里类项目。「算营养 + 比价」在这套接口上已经被反复验证,McFit Coach 不算独一份,它的价值在把两条线捏进了一个能下单的形态。
顺带记一笔奖品:第一名是巨无霸汉堡 50 次免费兑换券(每天限兑一份)加 WorkBuddy 10240 积分,第二名 30 次兑换券加同样的积分。拿巨无霸当头奖,这很麦当劳。
边界:付款的是人,账号也是人
几个最容易被夸大的点,照原文写准。
支付那一步。Agent 只建单,付款在人手。补一句我的判断:这可能是这套接口目前最稳的设计。支付一旦也交给 Agent,误下单、比价策略跑偏、prompt 注入导致的非预期消费,全都会变成平台的责任。现在的责任切分很干净:单是 Agent 建的,钱是人扫的。
权限这层要更认真一点。MCP Token 绑个人会员账号,query-my-coupons、query-my-account(可用、累计、冻结、即将过期积分)、delivery-query-addresses(收货地址列表)、order-list 读的全是个人身份数据;规则还允许麦当劳把参赛者的 GitHub 账号和会员账号关联起来。官方对泄露是认真的:参赛强制提交 mcp-config.example.json,要求「脱敏后的 MCP 配置示例,只允许环境变量占位符」,另有一份文件名和内容都不许改的 CONTEST_DECLARATION.md。原文同样提醒 Token 别进公开仓库、别出现在公开截图。

图:麦当劳 MCP 平台「MCP 服务状态」官方截图:MCP Token 申请成功,并提示「此 MCP Token 代表您的麦当劳会员身份,请严禁分享」,正是文章里账号权限与支付风险面的官方画面
一句话,你交给 Agent 的 Token 等于把会员账号的钥匙递出去了。600 次/分钟的限流挡得住脚本滥用,挡不住 Token 本身泄出去。
服务规则单独挂在 cdn.mcd.cn 的一个页面上,JS 渲染,得用浏览器打开。
合规口径原文写得很克制:营养和价格以官方实时接口为准,输出不构成医疗建议。模型算出蛋白质达标,不等于这套搭配适合你。
收个尾
往下想,消费品牌把点餐和会员系统开放成 MCP,技术上一天就能做完;难的在另一头,品牌敢不敢把「写订单」交给一个自己管不着的 Client。星巴克、瑞幸、肯德基的会员体系都摆在那,谁先迈这一步,比谁把 prompt 调得更花有意义得多。
还有一个我没找到答案的问题:Token 泄露之后的吊销流程在哪。文档写了 401 的含义,没写怎么主动作废一个 Token。有清楚的同学,评论区指点一下。
参考链接
- CSDN:全栈若城的 McFit Coach 参赛教程,WorkBuddy 加麦当劳 MCP 搭减脂私教 blog.csdn.net/qq_33681891...
- GitHub:麦当劳中国官方 MCP Server 仓库 mcd-mcp-server,33 个工具与接入文档 github.com/M-China/mcd...
- GitHub:麦当劳程序员创意开发大赛主仓库,README 写明 MCP 于 2025 年 12 月 25 日上线 github.com/M-China/mcd...
- GitHub:赛事榜单 RANKING.md,104 个进榜项目与 Top3 的 Star 数 github.com/M-China/mcd...
- GitHub:赛事活动规则 activityGuidelines.md,WorkBuddy 合作条款、奖品与 Token 脱敏要求 github.com/M-China/mcd...
- 麦当劳 MCP 开放平台:接口申请与文档入口 open.mcd.cn/mcp open.mcd.cn/mcp
- 麦当劳:MCP Server 服务规则页(JS 渲染,需浏览器打开) cdn.mcd.cn/cms/pages/M...