Easytable Mcp

io.github.chrischall由 GitHub 帳號 chrischall 發布v1.3.0更新於 Nov 7, 2026

easyTable restaurant reservations for Claude — availability, and create/modify/cancel bookings

已驗證STDIO僅桌面位置與生活瀏覽器自動化

概覽

AI 產生的概覽

針對 easyTable 餐廳訂位的 MCP 伺服器:透過使用者已登入的瀏覽器分頁查詢空位,並建立、修改或取消訂位。

可以做什麼
  • 列出餐廳可預訂的區域與類型 id、可預訂日期,以及依人數查詢可用時段
  • 依訂位時使用的手機號碼查找既有訂位
  • 建立、修改或取消訂位,每項操作都需先確認
  • 執行橋接健康檢查,回傳連線角色、連接埠、擴充功能連結狀態與往返耗時
適用情境
適合想在桌面聊天用戶端中讓助理查詢 easyTable 餐廳空位,並完成從訂位到改期、取消的整套流程。
執行需求
以 npm 套件形式在桌上型電腦上透過 stdio 本機執行。需安裝並配對 ContextMint Bridge 瀏覽器擴充功能,並在 Chrome 中開啟且載入完成的 book.easytable.com 訂位元件頁面;建立與修改還需讀取該頁面的 Turnstile 權杖。不需登入或 API 金鑰;選用變數包括 EASYTABLE_WS_PORT、FETCHPROXY_WS_HOST、FETCHPROXY_IDENTITY_DIR、EASYTABLE_DEBUG 及 MCP_CONFIRM_* 系列設定。
安裝前請注意
寫入操作會實際建立、變更或取消訂位,需經確認提示或「預覽加一次性 confirmToken」兩步確認;MCP_CONFIRM_MODE=auto 允許模型自行檢視預覽後繼續,無法辨識的值一律視為 refuse。訂位依手機號碼查找,號碼會傳送至該網站。橋接會在 FETCHPROXY_IDENTITY_DIR 保存長期身分金鑰對;README 說明本專案由 AI 維護,請自行斟酌使用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Easytable Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

easytable-mcp

An MCP server for easyTable restaurant reservations. easyTable is a restaurant table-booking system with a public per-restaurant widget at https://book.easytable.com/book/?id=<restaurantId>.

Every request rides the user's own signed-in, Cloudflare-cleared book.easytable.com browser tab via the @fetchproxy/server bridge — the site blocks server-side requests, and there is no login (the restaurant is identified by its id).

This project was developed and is maintained by AI (Claude Code). Use at your own discretion.

Tools

ToolKind
easytable_list_typesread — bookable areas/types for a restaurant
easytable_list_datesread — bookable dates for an area + party size
easytable_list_timesread — available time slots
easytable_find_bookingsread — look up bookings by phone number
easytable_create_bookingwrite (confirmed) — make a reservation
easytable_modify_bookingwrite (confirmed) — change a reservation
easytable_cancel_bookingwrite (confirmed) — cancel a reservation
easytable_healthcheckread — bridge connection status

Confirmations

Every write asks you to confirm it first. A client that can show a confirmation prompt (Claude Code) shows one. Elsewhere the first call sends nothing and returns a preview plus a confirmToken; only a repeat call with the same arguments and that token books, changes or cancels. A cancel looks the booking up first, so its preview shows which reservation it is, and an id that isn't one of that mobile's bookings is refused. The token is single-use, and a changed argument invalidates it.

variabledefault
MCP_CONFIRM_MODEask-userWhat a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse.
MCP_CONFIRM_ELICITATIONonoff never sends a confirmation prompt, so every client gets the MCP_CONFIRM_MODE path. Set it for a client that declares it can show prompts but never does (the gated call hangs — opencode 2.0.x). Any other value stays on, with a stderr warning.
MCP_CONFIRM_TTL_SECONDS600How long a token stays valid.
MCP_CONFIRM_SECRETrandom per processSigning key; set it only if tokens must survive a server restart.

Setup

  1. Install the ContextMint Bridge browser extension from its releases: in Chrome, unzip the contextmint-bridge-chrome-*.zip asset and load it unpacked (chrome://extensions → Developer mode → Load unpacked); in Safari, it ships inside the ContextMint app, which has no public download link yet, so use Chrome for now. ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).
  2. Open a booking widget in Chrome: https://book.easytable.com/book/?id=<id> and let it finish loading.
  3. The first tool call prints a one-time pair code to approve in ContextMint Bridge.

create and modify additionally read the widget's Cloudflare Turnstile token from the loaded confirm step, so a booking-widget tab must be open when you confirm one.

Environment

No environment variables are required. These optional knobs mirror the .mcpb manifest's settings (the MCP_CONFIRM_* family is under Confirmations):

variabledefault
EASYTABLE_WS_PORT37149Concentrator port for the fetchproxy browser bridge. Every fetchproxy MCP on one machine shares it, so move it for all of them or none (local testing, or a hosted registration's bridge port).
FETCHPROXY_WS_HOST127.0.0.1Bridge bind interface, a literal IP only (anything else is ignored). Keep on loopback; it exists for a hosted child in its own network namespace.
FETCHPROXY_IDENTITY_DIR~/.fetchproxy/identity/Where the bridge's long-term identity keypair is stored, an absolute path only (anything else is ignored). For a host that runs a separate child per caller.
EASYTABLE_DEBUGunsetSet to a truthy value to log the bridge role and per-request debug lines to stderr.

Development

sh
npm installnpm run buildnpm test

See docs/EASYTABLE-API.md for the reverse-engineered request/response shapes and CLAUDE.md for architecture notes.

License

MIT

來源:README.md,提交 75344fa

工具

8

easytable_list_types

List the bookable areas/types for a restaurant (e.g. "Boka Inne", "Boka baren"). Returns each area's type id for use in the other availability tools.

輸入參數id必填lang

easytable_list_dates

List bookable dates for a restaurant area and party size. Each entry has an ISO date and whether it is available.

輸入參數id必填langtype必填persons必填

easytable_list_times

List available time slots for a restaurant area, date, and party size. Times are returned as HH:MM.

輸入參數id必填date必填langtype必填persons必填

easytable_find_bookings

Look up a restaurant's existing bookings made with a given mobile number. Returns each booking's id (for easytable_cancel_booking) plus a summary.

輸入參數id必填langmobile必填

easytable_cancel_booking

Cancel an existing booking. Look up the booking id first with easytable_find_bookings (it needs the mobile the booking was made with). Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). The first call only looks the booking up (a read); it cancels nothing.

輸入參數id必填mobile必填bookingId必填confirmToken

easytable_create_booking

Create a restaurant booking. Reads the Cloudflare Turnstile token from your signed-in booking-widget tab (via the bridge) and submits it with the reservation — so a book.easytable.com/book/?id=<id> tab must be open and loaded. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). The first call makes NO network call.

輸入參數id必填date必填langname必填time必填type必填emaileventmobile必填commentcompanypersons必填另有 1 個

easytable_modify_booking

Modify an existing booking (date/time/party size/details). Like create, it reads the Turnstile token from your signed-in widget tab. Get the existing booking id from easytable_find_bookings. The change replaces the whole booking: email, comment and company are required — pass the booking's current values to keep them (ask the user if unknown), or '' to clear them; the newsletter opt-in is reset. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). The first call makes NO network call.

輸入參數id必填date必填langname必填time必填type必填email必填eventmobile必填comment必填company必填persons必填另有 2 個

easytable_healthcheck

Verify the ContextMint Bridge connection end-to-end

Round-trips a small public book.easytable.com URL (/robots.txt) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real book.easytable.com-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.

無需輸入參數。

版本歷史

17
  1. v1.3.0最新Nov 4, 2026
  2. v1.2.9Oct 29, 2026
  3. v1.2.8Oct 17, 2026
  4. v1.2.7Oct 16, 2026
  5. v1.2.6Oct 10, 2026
  6. v1.2.5Oct 7, 2026
  7. v1.2.4Oct 5, 2026
  8. v1.2.3Oct 3, 2026
  9. v1.2.2Oct 1, 2026
  10. v1.2.1Sep 28, 2026
  11. v1.2.0Sep 24, 2026
  12. v1.1.3Sep 23, 2026
  13. v1.1.2Sep 23, 2026
  14. v1.1.1Sep 21, 2026
  15. v1.1.0Sep 20, 2026
  16. v1.0.0Sep 18, 2026
  17. v0.4.4Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分