# easytable-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/chrischall/easytable-mcp  
**GitHub Stars:** 0  
**npm Downloads (last month):** 2280  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/easytable-mcp

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

## Tools
Capabilities this server exposes over MCP:

- **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.
- **easytable_list_dates** — List bookable dates for a restaurant area and party size. Each entry has an ISO date and whether it is available.
- **easytable_list_times** — List available time slots for a restaurant area, date, and party size. Times are returned as HH:MM.
- **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.
- **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.
- **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.
- **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.
- **easytable_healthcheck** — 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.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "easytable-mcp": {
    "command": "npx",
    "args": ["-y","easytable-mcp"]
  }
}
```

## Documentation

## What easytable-mcp does

easytable-mcp exposes easyTable restaurant reservations through the Model Context Protocol. It works with a restaurant's public booking widget, identified by the restaurant ID in a URL such as `https://book.easytable.com/book/?id=<restaurantId>`.

The read operations discover bookable areas or reservation types, available dates for an area and party size, and available time slots. Another read operation finds bookings associated with a phone number. Confirmed write operations create, modify, and cancel reservations. A health check reports the status of the browser-bridge connection.

## How it works

Requests are routed through the user's signed-in, Cloudflare-cleared `book.easytable.com` browser tab using the `@fetchproxy/server` bridge. This browser path is required because easyTable blocks server-side requests. The restaurant is selected by its widget ID; the service does not require a separate easyTable login.

Create and modify operations also obtain the widget's Cloudflare Turnstile token from the loaded confirmation step. For those actions, the relevant booking widget tab must remain open when the operation is confirmed.

Every write is gated. Clients that support confirmation prompts can display one directly. On clients without that capability, the first request returns a preview and a single-use `confirmToken`; the operation proceeds only after a repeat request uses the same arguments and token. Cancellation checks the phone number's bookings before producing its preview, and a booking belonging to another phone number is rejected. Tokens expire according to `MCP_CONFIRM_TTL_SECONDS` and argument changes invalidate them.

## Setup and configuration

Install the ContextMint Bridge Chrome extension from its release package, load it unpacked through Chrome's extension developer settings, and open the restaurant's easyTable booking widget. Safari support is packaged in the ContextMint app, while the documented setup path uses Chrome. The first MCP tool call displays a one-time pair code that must be approved in the bridge.

No environment variables are required. Optional settings include `EASYTABLE_WS_PORT` for the shared browser-bridge port, `FETCHPROXY_WS_HOST` for its bind address, `FETCHPROXY_IDENTITY_DIR` for the identity keypair directory, and `EASYTABLE_DEBUG` for diagnostic logging. Confirmation behavior can be adjusted with `MCP_CONFIRM_MODE`, `MCP_CONFIRM_ELICITATION`, `MCP_CONFIRM_TTL_SECONDS`, and `MCP_CONFIRM_SECRET`.

## Tools and capabilities

- `easytable_list_types`: discover bookable restaurant areas or types.
- `easytable_list_dates`: list dates for an area and party size.
- `easytable_list_times`: retrieve available time slots.
- `easytable_find_bookings`: look up bookings by phone number.
- `easytable_create_booking`: create a confirmed reservation.
- `easytable_modify_booking`: change a confirmed reservation.
- `easytable_cancel_booking`: cancel a confirmed reservation.
- `easytable_healthcheck`: check bridge connectivity.

## Limitations and notes

The browser extension, an open easyTable widget, and bridge pairing are prerequisites for operation. The browser-based route is especially important because direct server-side access to easyTable is blocked. Confirmation settings affect clients that cannot display native prompts; an unrecognized `MCP_CONFIRM_MODE` value causes writes to be refused. The project is licensed under MIT.

_Full upstream README: https://allmcps.com/mcp/easytable-mcp/readme_

