麦当劳中国这个月开放了 MCP 接口,顺带办了个 1024 程序员节的开发者比赛,作品按 GitHub star 排名,10 月 25 号截止。我做了两个参赛,第一个是群里请客抽奖的「麦从天降」,这是第二个,「同桌的你」。
它解决的事很小:异地的两个人视频开着,但很少真的一起吃饭,你吃的时候 TA 还没点,TA 的到了你的凉了。
麦当劳 MCP 的外送下单有个 reservationDate,可以指定送达时间。那就简单了:下两份一样的,一份送我楼下,一份送 TA 楼下,两单带同一个时刻。到点视频一开,两张桌子就是一张。

怎么用
在 Claude Code 里说「周五晚七点半,和在成都的小 A 一起吃麦当劳,我请」。它会问清对方的收餐信息,然后跑 same-table plan:两边各找一家能送的麦当劳,挑一个两边菜单都有的,用官方 calculate-price 各核一次价,报出两份的总价和送达时间。我点头之后才保存计划。
same-table go 先下对方那单。我在麦当劳 App 里付掉,它再下我这单,再付一次。两单都付清,它生成一张邀请卡,HTML 和纯文本各一份,转发给 TA 就行。
卡角上有个印章,「天涯共此食」,从「海上生明月,天涯共此时」改了一个字。恋人、爸妈、老友三个版本的话不一样,爸妈那版是「妈,别省,我已经付过了」。

几条我不让它越过的线
- 两单都发起人付。工具里没有让对方付或者 AA 的路径,SKILL.md 里写了用户要改也别帮。
- 报价和下单分开。
plan只报价,带--yes --expect-total才存;go下单前再核一次,比确认时贵了就停下来问。 - 先下对方那单。对方那单没付清绝不下我的;每个计划一个锁文件,重跑不会重复下单。
- 对方的手机号在日志、计划文件、邀请卡里全部打码。没有服务端,我也看不到任何人的数据。
没做完的
真实 Token、两个真实地址付款的彩排没跑。create-order 和 query-order 的返回字段、预约时间门店接不接受,这些是照文档写的,仓库里 docs/rehearsal-checklist.md 一条条列着。只读的部分录过真实接口:门店会返回可预约时段,核价的总价已经含配送费和打包费。
单包 TypeScript CLI,188 个测试,没有服务器。
比赛按 star 排名,截止 10 月 25 号。觉得这件小事值得有人做的话,点一个。