核心用法
opentable-mcp 是一个基于 Model Context Protocol 的 OpenTable 自动化工具,允许用户通过自然语言指令完成餐厅预订全生命周期管理。其核心架构采用"浏览器代理"模式:MCP 服务器本身不直接连接 OpenTable,而是通过 fetchproxy 浏览器扩展,将请求转发至用户本地已登录的 opentable.com 标签页执行。
支持的操作包括:
- 餐厅搜索:按关键词、位置、日期、时间、人数筛选,获取评分、价位、菜系等信息
- 可用时段查询:获取指定餐厅的可预订空位及短期有效的预订令牌
- 预订管理:标准预订(即时确认)和需信用卡担保的预订(需先预览确认政策)
- 体验型预订:支持 prix-fixe、品鉴菜单等必须选择体验项目的餐厅预订
- 订单修改/取消:修改时间/人数/区域,或取消现有预订
- 收藏夹管理:保存心仪餐厅、查看收藏列表
关键工作流约束:
1. 预订必须通过 get_restaurant 获取 dining_area_id(餐厅区域ID),无法自动推断
2. 信用卡担保类预订必须先调用 book_preview 获取 booking_token,否则会被拒绝
3. 时段令牌(reservation_token + slot_hash)有效期仅 60-90 秒,需即查即订
4. 修改预订必须使用专用 modify_preview → modify 流程,禁止"取消+重新预订"以避免触发反刷单检测
---
显著优点
| 维度 | 优势 |
|------|------|
| **认证安全** | 零密码/零 API 密钥设计,认证完全依托用户浏览器中的 OpenTable 会话(密码less邮箱OTP),消除凭证泄露风险 |
| **反检测能力** | 通过真实浏览器标签页执行请求,携带完整浏览器指纹、Cookie、Akamai `_abck` 等,天然绕过反爬虫机制 |
| **功能完整** | 覆盖 OpenTable Web 端全部核心能力:搜索、预订、修改、取消、收藏、体验菜单,甚至支持需要信用卡预授权的稀缺时段 |
| **架构简洁** | 单一扩展(fetchproxy)服务多个 MCP 工具,复用已登录会话,无需为每个工具单独配置认证 |
---
潜在缺点与局限性
运维依赖性高
- 浏览器常驻要求:必须保持 fetchproxy 扩展运行 + opentable.com 已登录标签页,任何环节断开都会导致服务不可用
- 冷启动延迟:Chrome MV3 Service Worker 休眠后首次唤醒需 2-5 秒
- 写入延迟:收藏夹添加后约 10 秒才能通过
list_favorites读取
技术脆弱性
- 非官方 API:依赖 OpenTable 内部 GraphQL 端点,若官方重构(如 persisted query hash 变更),需手动从 DevTools 捕获新 hash 修复
- 令牌时效严苛:用户若犹豫超过 90 秒,时段令牌失效,必须重新查询空位
- 无自动重试:
SessionNotAuthenticatedError需用户手动刷新页面解决
功能边界
- 纯列表餐厅不可订:部分餐厅仅展示信息,实际预订需电话/官网直连,工具会正确识别并引导用户外呼
- 请求预订(request-to-book)未支持:v1 版本暂不支持需人工确认的预订类型
- 无支付管理:无法添加/修改支付方式,若用户无默认支付信息,预览步骤会失败并抛出设置链接
---
适合人群
- 高频 OpenTable 用户:每周多次预订、希望用自然语言快速操作("今晚 7 点两人位意大利菜")
- 多任务场景:在 Claude 对话中直接完成"搜索-对比-预订"闭环,无需切换浏览器标签
- 隐私敏感用户:不愿向第三方服务提交 OpenTable 账号密码,接受本地浏览器代理模式
不适合:无桌面浏览器环境、无法/不愿安装浏览器扩展、需要完全无人值守自动化(因需人工处理 OTP/验证码挑战)的用户。
---
常规风险
| 风险类型 | 具体表现 | 缓解措施 |
|----------|----------|----------|
| **预订冲突** | 同一时段快速取消+重订可能触发 OpenTable 反刷单机制,导致时段被释放 | 必须使用 `modify` 流程,禁止 cancel+book 组合 |
| **信用卡误扣** | CC-required 预订若未正确理解取消政策,可能产生 no-show 费用 | `book_preview` 强制展示政策,需用户明确确认 |
| **时段失效** | 用户长时间犹豫导致令牌过期,返回空位已被抢占 | 设计短决策路径,或在令牌过期前主动重查 |
| **会话过期** | OpenTable SSO 或 Akamai Cookie 轮换导致 401 | 引导用户刷新 opentable.com 页面重新认证 |
| **扩展失效** | fetchproxy 扩展崩溃或标签页关闭 | 监控徽章颜色(绿/黄/红),建立扩展健康检查 |