关于 easytable-mcp
easytable-mcp 是用于查询餐厅空位和管理 easyTable 预订的 MCP 服务。它通过已登录的浏览器标签页工作,创建、更改或取消预订前均需确认。
主要功能
- 01查询可预订区域和日期
- 02查看可用时段
- 03按电话号码查找预订
- 04创建、更改和取消预订
- 05发送预订更改前先确认
适用场景
- 01按用餐人数查看可订餐桌
- 02通过电话号码查找预订
- 03更改餐厅预订
- 04查看预订详情后取消
MCP 相关
向 MCP 客户端提供 easyTable 空位查询和预订操作工具。请求通过用户已登录的 easyTable 浏览器标签页发送,预订写入需确认。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y easytable-mcpEASYTABLE_WS_PORTOverride the fetchproxy WebSocket port (default 37149).EASYTABLE_DEBUGSet to 1 to log the bridge role and per-request debug lines to stderr.FETCHPROXY_WS_HOSTBridge bind interface, a literal IP only (default 127.0.0.1). Keep on loopback; exists for a hosted child in its own network namespace.FETCHPROXY_IDENTITY_DIRAbsolute path for the long-term bridge identity keypair (default ~/.fetchproxy/identity/). Exists for a host that runs a separate child per caller.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
8收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 餐厅 ID — book.easytable.com/book/?id=<id> 链接中的 `id`。 |
| lang | string | 否 | 小组件语言代码(例如 en、se、da、de、fr)。默认为 en。 |
详细介绍
easytable-mcp
适用于 easyTable 餐厅预订的 MCP 服务。easyTable 是一个餐厅订位系统,每家餐厅都有一个公开的预订小组件,地址为
https://book.easytable.com/book/?id=<restaurantId>。
每个请求都会通过 @fetchproxy/server 桥接服务,使用用户本人已登录且已通过 Cloudflare 验证的
book.easytable.com 浏览器标签页发送——该网站会拦截服务端请求,而且无需登录(通过 id 识别餐厅)。
本项目由 AI(Claude Code)开发并维护。请自行决定是否使用。
工具
| 工具 | 类型 |
|---|---|
easytable_list_types | 读取 — 餐厅可预订的区域/类型 |
easytable_list_dates | 读取 — 某区域和用餐人数可预订的日期 |
easytable_list_times | 读取 — 可预订的时段 |
easytable_find_bookings | 读取 — 按电话号码查找预订 |
easytable_create_booking | 写入(需确认)— 创建预订 |
easytable_modify_booking | 写入(需确认)— 修改预订 |
easytable_cancel_booking | 写入(需确认)— 取消预订 |
easytable_healthcheck | 读取 — 桥接连接状态 |
确认
每次写入操作都会先请求你确认。能显示确认提示词的客户端(Claude Code)会显示提示。在其他客户端中,首次调用不会执行任何操作,而是返回预览和一个 confirmToken;只有使用相同参数和该令牌再次调用,才会创建、修改或取消预订。取消操作会先查找预订,因此预览会显示要取消的预订;如果 ID 不属于该手机号的预订,则会拒绝操作。令牌只能使用一次,参数一旦更改,令牌便会失效。
| 变量 | 默认值 | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 当客户端无法显示确认提示词时(claude.ai、Claude Desktop),写入操作的处理方式。ask-user:分两步执行——首次调用不执行任何操作,只返回预览和令牌;模型必须先在聊天中征得你的批准,才能使用该令牌再次调用。auto:同样分两步执行,但模型查看预览后可以自行使用令牌。refuse:此类客户端上的写入操作会被拒绝。能够显示提示词的客户端(Claude Code)始终会显示实际提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值会按 refuse 处理。 |
MCP_CONFIRM_ELICITATION | on | off 表示绝不发送确认提示,因此所有客户端都会使用 MCP_CONFIRM_MODE 流程。对于声明能够显示提示词、但实际从不显示的客户端(受控调用会挂起——opencode 2.0.x),请设置此项。任何其他值都会保持为 on,并输出 stderr 警告。 |
MCP_CONFIRM_TTL_SECONDS | 600 | 令牌的有效时长。 |
MCP_CONFIRM_SECRET | 每个进程随机生成 | 签名密钥;只有在令牌必须跨服务重启继续有效时才设置。 |
设置
- 从 releases 安装 ContextMint Bridge 浏览器扩展:
在 Chrome 中,解压
contextmint-bridge-chrome-*.zip资源包并以未打包方式加载(chrome://extensions→ 开发者模式 → 加载未打包的扩展程序);在 Safari 中,它随 ContextMint 应用提供,目前尚无公开下载链接,因此暂时请使用 Chrome。ContextMint Bridge 是 fetchproxy 浏览器扩展的新名称,由同一维护者开发;fetchproxy 自己的 README 中也指向它。其源代码公开于 nullnet-app/contextmint-bridge: 你可以自行构建,也可以使用随发布版本一同提供的.sha256文件校验发布 zip 文件 (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。 - 在 Chrome 中打开预订组件:
https://book.easytable.com/book/?id=<id>,并等待其加载完成。 - 首次调用工具时会打印一次性配对码,请在 ContextMint Bridge 中批准。
create 和 modify 还会从已加载的确认步骤中读取组件的 Cloudflare Turnstile 令牌,因此确认预订时必须打开预订组件标签页。
环境
无需设置环境变量。以下可选配置项与 .mcpb 清单中的设置一致(MCP_CONFIRM_* 系列见确认):
| 变量 | 默认值 | |
|---|---|---|
EASYTABLE_WS_PORT | 37149 | fetchproxy 浏览器桥接的集中器端口。同一台机器上的所有 fetchproxy MCP 共用此端口,因此要么为它们全部更改,要么一个也不改(用于本地测试或托管注册的桥接端口)。 |
FETCHPROXY_WS_HOST | 127.0.0.1 | 桥接绑定接口,仅接受字面 IP 地址(其他值会被忽略)。请保持为回环地址;此设置供位于独立网络命名空间中的托管子进程使用。 |
FETCHPROXY_IDENTITY_DIR | ~/.fetchproxy/identity/ | 存储桥接长期身份密钥对的位置,仅接受绝对路径(其他值会被忽略)。适用于为每个调用方运行独立子进程的主机。 |
EASYTABLE_DEBUG | 未设置 | 设置为真值后,会将桥接角色及每个请求的调试信息记录到 stderr。 |
开发
npm install
npm run build
npm test
有关逆向分析得出的请求/响应格式,请参阅 docs/EASYTABLE-API.md;有关架构说明,请参阅 CLAUDE.md。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。