核心用法
opentable-mcp 是一套基于 MCP(Model Context Protocol)协议的 OpenTable 餐厅预订代理,允许用户通过自然语言指令完成从餐厅搜索到预订确认的全流程操作。系统采用独特的 fetchproxy 浏览器扩展架构:MCP 服务器本身不直接访问 OpenTable,而是将请求转发至用户已登录 opentable.com 的浏览器标签页,由扩展代为执行实际网络调用。
关键工具链
| 阶段 | 工具 | 用途 |
|------|------|------|
| 发现 | `search_restaurants` / `get_restaurant` | 按关键词、位置、日期搜索;获取餐厅详情(含必需字段 `dining_area_id`) |
| 查询 | `find_slots` | 获取指定日期/人数的可预订时段(token 1-2 分钟内有效) |
| 预订 | `book_preview` → `book` | CC 预授权检查 → 最终确认;或跳过 preview 直接预订普通时段 |
| 管理 | `list_reservations` / `cancel` / `modify_preview` → `modify` | 查询、取消、修改预订 |
| 收藏 | `list/add/remove_favorite` | 管理"Saved Restaurants"列表(存在约 10 秒写入延迟) |
认证机制特点
- 零凭证配置:无需 API Key、密码或 Cookie 粘贴
- 浏览器会话继承:直接复用用户已登录的 OpenTable 会话(含 OTP 邮件验证后的状态)
- 自动刷新:若 Akamai 防护 cookie
_abck或 OpenTable SSO 过期,用户只需重新访问官网完成提示,后续 MCP 调用自动使用新会话
三类餐厅预订差异
| 类型 | 处理方式 | 关键字段 |
|------|----------|----------|
| Instant(即时确认) | 可直接 `book` 或走 `preview` | `booking_type: "instant"` |
| Experience Mandatory(必选套餐) | 需指定 `experience_id`,预览时展示套餐详情 | `booking_type: "experience_mandatory"` |
| Listing Only(仅展示) | 不可预订,需引导用户致电或访问官网 | `bookable: false` |
---
显著优点
1. 完整的官方级功能覆盖:支持即时预订、信用卡预授权、体验套餐预订、预订修改等完整流程,非简化的只读接口
2. 无摩擦认证体验:相比传统需要复制 Cookie 或配置环境变量的第三方方案,浏览器扩展架构大幅降低了普通用户的使用门槛
3. 透明的事务性设计:preview → commit 模式确保用户在最终确认前可见取消政策、预授权金额、付款方式尾号等关键信息
4. 状态感知错误处理:明确的错误类型如 SessionNotAuthenticatedError 引导用户快速恢复(刷新页面重新登录)
---
潜在缺点与局限性
| 问题 | 影响 | 缓解措施 |
|------|------|----------|
| **非官方 API,依赖逆向工程** | OpenTable 随时可能更改端点或添加防护,导致工具失效 | 社区维护,需关注 GitHub 更新;作者已处理 Apollo persisted query 哈希变更机制 |
| **浏览器扩展依赖** | Chrome MV3 Service Worker 30 秒休眠后冷启动延迟 2-5 秒 | 频繁使用时保持浏览器活跃 |
| **短时效令牌** | `reservation_token` / `slot_hash` 仅 1-2 分钟有效,用户犹豫过久会导致预订失败 | 设计快速决策流程,或重新查询时段 |
| **写入延迟** | 收藏操作后 `list_favorites` 可能 10 秒内不反映变更 | 依赖 204 响应作为权威确认,UI 层面做乐观更新 |
| **单点依赖** | fetchproxy 扩展为单一作者维护,若停更则整个生态受影响 | 扩展开源,可社区 fork |
| **地域限制** | 仅支持 OpenTable 覆盖的市场(主要北美、欧洲、亚太部分城市) | 明确提示用户服务范围 |
| **无多账户支持** | 一次仅能关联一个浏览器会话/用户身份 | 需多开浏览器配置文件实现多账户 |
---
适合人群
- 频繁餐厅预订者:每周多次使用 OpenTable 的商务人士或美食爱好者
- 语音/自然语言优先用户:希望通过对话式 AI 快速完成"今晚两人位"类模糊查询
- Claude Desktop / Cline / Roo Code 等 MCP 客户端用户:已配置 MCP 生态的技术早期采用者
- 隐私敏感用户:不愿将 OpenTable 凭据交给第三方云服务,接受本地浏览器代理模式
---
常规风险
1. 账户安全:虽然扩展仅在本地运行,但任何具有 MCP 访问权限的进程都可能代为执行预订、取消等高敏感操作。建议:
2. 财务风险:信用卡预授权场景下,误操作或误解取消政策可能导致扣款。工具虽会展示政策,但最终责任在用户确认环节
3. 预订失败风险:热门餐厅时段竞争激烈,令牌过期或网络延迟可能导致"看着有位,点下已满"的体验
4. 服务中断风险:非官方性质意味着无 SLA,关键用餐场景(如纪念日预订)应保留官方 App 作为备份
- 在受信任设备上运行
- 定期审查
list_reservations确认无异常预订