使用说明
订购食品MCP
MCP服务器,允许AI代理搜索餐厅并在其上下食品配送订单 优食 和 送回家 通过11个MCP工具。
法律: 根据欧盟指令2009/24/EC第6条,明确允许对互操作性进行逆向工程。这个项目是个人使用和开源研究,不是商业性的,与优步外卖或Just Eat Takeaway无关。
这是给谁的
- AI高级用户 谁想告诉克劳德或Codex“在附近给我找寿司,把评价最高的选项添加到我的购物车里”,让它真正起作用
- 开发者 探索面向现实消费者API集成的MCP服务器设计
- 研究人员 根据欧盟指令2009/24/EC第6条研究逆向工程API互操作性
这不是给谁的
- 任何寻求全自动“无需触碰任何东西即可下单”体验的人——下单需要在两个平台上都有浏览器支付步骤,目前还不能自动完成(请参阅下面的平台支持)
- 大量或商业用途-此工具仅适用于个人、单账户使用
- 需要坚如磐石的会话的用户——优步Eats Cookie将在24-48小时后过期,需要手动刷新;Thuisbezorgd令牌会自动刷新,但API可能会更改,恕不另行通知
特性
| 工具 | 说明 |
|---|---|
search_restaurants |
按地点、菜肴或查询查找餐厅 |
get_restaurant |
获取完整的餐厅详细信息和菜单 |
get_cart |
查看当前购物车 |
add_to_cart |
将带有选项的商品添加到购物车 |
clear_cart |
清空购物车 |
get_saved_addresses |
列出已保存的收货地址 |
get_payment_methods |
列出可用的付款方式 |
place_order |
将当前购物车作为订单 |
track_order |
获取实时订单状态 |
get_order_history |
列出过去的订单 |
cancel_order |
取消当前订单 |
ping_platform |
检查平台的auth+连接 |
所有工具均接受 platform: "ubereats" | "thuisbezorgd" 作为必需参数。
平台支持
| 能力 | 优步美食 | Thuisbezorgd | 备注 |
|---|---|---|---|
| 搜索餐厅 | ✅ | ✅ | |
| 获取餐厅+菜单 | ✅ | ✅ | TB使用SSR HTML抓取 |
| 购物车管理 | ✅ | ✅ | |
| 已保存地址 | -- | ✅ | UE实时解析地址 |
| 付款方式 | ✅ | ✅ | |
| 下单 | ⚠️ | ⚠️ | 被浏览器支付流(Apple Pay/iDeal/Adyen)阻止 |
| 跟踪订单 | ✅ | 🚧 | 尚未捕获TB跟踪端点 |
| 订单历史记录 | 🚧 | 🚧 | UE:端点返回null——正确的请求参数未知;TB:尚未捕获 |
| 取消订单 | 🚧 | 🚧 | 尚未捕获端点 |
| 健康检查 | ✅ | ✅ | ping_platform 工具验证auth+连接 |
传说: ✅ 工作·⚠️ 受到外部依赖的阻碍🚧 存根(尚未捕获API)·-不适用
建筑
pnpm工作空间单仓库——TypeScript 5,严格的,纯ESM,Node.js 20+。
packages/
shared/ @orderfood/shared — normalized types + PlatformClient interface
ubereats-client/ @orderfood/ubereats-client — Uber Eats REST client
thuisbezorgd-client/ @orderfood/thuisbezorgd-client — Thuisbezorgd REST client
mcp-server/ @henkas/orderfood — MCP server + setup CLI
tools/
api-capture/ mitmproxy addon for capturing API traffic
docs/
api-reference/ Documented endpoints per platform
先决条件
- Node.js 20+
- pnpm 9+
- Python 3.11+ (仅适用于API捕获工具)
安装
git clone https://github.com/henkas/orderfood.git
cd orderfood
pnpm install
pnpm build
设置
npx @henkas/orderfood setup --platform ubereats
npx @henkas/orderfood setup --platform thuisbezorgd
凭据以加密方式存储在 ~/.orderfood/ (AES-256-GCM)。请参阅 安装指南 了解完整的分步说明,包括在哪里找到Uber Eats Cookie以及Thuisbezorgd OAuth流程的工作原理。
使用Claude代码
claude mcp add orderfood -- npx @henkas/orderfood
或者,如果从源代码运行:
claude mcp add orderfood -- node /path/to/orderfood/packages/mcp-server/dist/index.js
使用Codex
codex mcp add orderfood -- npx @henkas/orderfood
然后和克劳德谈谈:
Find Italian restaurants near Amsterdam Centraal on Thuisbezorgd
Add a Margherita pizza from [restaurant] to my Uber Eats cart
What's in my Thuisbezorgd cart?
Show my Uber Eats payment methods
发展
pnpm install # install all workspace packages
pnpm typecheck # type-check all packages
pnpm test # run all tests
pnpm build # compile all packages
# Per-package
pnpm --filter @orderfood/shared test
pnpm --filter @henkas/orderfood build
API捕获
平台客户端代码基于mitmproxy对真实应用程序的捕获。要贡献新的端点发现:
pip install mitmproxy- 跟随
tools/api-capture/README.md在您的设备上安装证书 mitmproxy -s tools/api-capture/capture.py- 使用该应用程序——捕获的通话记录
tools/api-capture/output/{platform}/ - 将调查结果记录在
docs/api-reference/{platform}.md
文档
| 安装指南 | 安装、验证、连接到您的代理 |
| Uber Eats API参考 | 发现端点和请求形状 |
| 家庭 API 参考 | 发现端点和请求形状 |
贡献
看 贡献.md.
安全
证书在静止时加密(AES-256-GCM,来自机器ID的HKDF-SHA256密钥)。看 安全.md 用于漏洞报告过程。
许可证
麻省理工学院——见 许可证.