Skip to main content
Glama
WPCafe MCP Server

WPCafe MCP Server

by xs-mahbub

WPCafe MCP Server

Connect any MCP-compatible AI assistant — Claude, ChatGPT, Cursor, and others — to your WordPress site running the WPCafe restaurant plugin.

Once connected, your AI assistant can manage reservations, food orders, locations, QR codes, settings, analytics, and every other feature available in the WPCafe admin panel.


What you can do

Category

Actions

Reservations

List, get, create, update, delete, bulk delete, cancel, check time slots, check capacity

Food Orders

List, get, update status, delete (WooCommerce orders)

Products

List food menu items, get product details, list categories

Locations

List, get, create, update, delete, bulk delete branches

QR Codes

List, get, create, update, delete scan-to-order QR codes

Settings

Get all settings, get public settings, update settings

Dashboard

Overview stats, food order analytics, reservation analytics, top-selling products

Modules

List extensions, enable/disable modules, get integrations, get addon plugins

Pro — Seat Plans

List, get, create, update, delete visual floor layouts

Pro — Discounts

List, get, create, update, delete discount codes

Pro — Receipts

List receipt layouts, get order receipt

Pro — Timed Products

List, create time-availability rules for menu items


Related MCP server: wordpress-seo-mcp

Prerequisites

  • Node.js 18 or later

  • WPCafe plugin (free) installed and active on your WordPress site

  • WordPress user with Administrator or Shop Manager role

  • A WordPress Application Password (created in WP Admin → Users → Your Profile)


Setup

Step 1 — Create a WordPress Application Password

  1. Go to WordPress Admin → Users → Your Profile

  2. Scroll down to Application Passwords

  3. Enter a name (e.g. WPCafe MCP) and click Add New Application Password

  4. Copy the password shown — it looks like xxxx xxxx xxxx xxxx xxxx xxxx

  5. Keep it somewhere safe; WordPress will not show it again

Step 2 — Configure your AI client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "wpcafe": {
      "command": "npx",
      "args": ["-y", "github:themewinter/wpcafe-mcp"],
      "env": {
        "WPCAFE_SITE_URL": "https://yoursite.com",
        "WPCAFE_USERNAME": "your-admin-username",
        "WPCAFE_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

Restart Claude Desktop. WPCafe tools will appear automatically.

Cursor / VS Code (MCP extension)

{
  "servers": {
    "wpcafe": {
      "command": "npx",
      "args": ["-y", "github:themewinter/wpcafe-mcp"],
      "env": {
        "WPCAFE_SITE_URL": "https://yoursite.com",
        "WPCAFE_USERNAME": "your-admin-username",
        "WPCAFE_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

Any other MCP client

The server speaks standard MCP over stdio. Use npx -y github:themewinter/wpcafe-mcp as the command with the three env vars set.


Example prompts

Show me all pending reservations for today.

Create a reservation for John Smith (john@example.com) on 2026-07-01 at 7pm for 4 guests.

List all food orders with status "processing".

What were the top 10 selling items this month?

Update the primary color in WPCafe settings to #FF5722.

Create a QR code named "Table 12" for location ID 3.

Enable the Delivery module.

Show me the dashboard overview for the past week.

Optional: Enable full write access

By default the server works with Application Password authentication. A small subset of WPCafe operations (reservation creation, food-order listing) use WordPress's CSRF nonce system, which requires a one-time server-side snippet.

If you hit a message like "This operation requires a WordPress security nonce", add this to your site's functions.php (or any active plugin):

add_action( 'rest_api_init', function () {
    register_rest_route( 'wpcafe/v2', '/nonce', [
        'methods'             => 'GET',
        'callback'            => fn() => [
            'nonce'   => wp_create_nonce( 'wp_rest' ),
            'expires' => time() + 43200,
        ],
        'permission_callback' => 'is_user_logged_in',
    ] );
} );

Alternatively, upload wordpress-plugin/wpcafe-mcp-bridge.php (included in this repo) to your wp-content/plugins/ directory and activate it in WP Admin — same effect, no code editing required.


Security

How authentication works

  1. You create an Application Password in your WordPress profile — it is separate from your login password and can be revoked at any time.

  2. The MCP server sends it with every request as an Authorization: Basic header.

  3. WordPress verifies it and authenticates the request as that user.

  4. All WPCafe permission checks (capabilities, roles) still apply — the MCP server does not bypass them.

What the MCP server does NOT do

  • It does not store or cache credentials on disk.

  • It does not bypass WordPress capability checks.

  • It does not expose any endpoint that isn't already in the WPCafe REST API.

  • It does not run any code inside WordPress — it only calls the existing REST API.

HTTPS requirement

Always use HTTPS for WPCAFE_SITE_URL. Application Passwords are sent in every request header; without HTTPS anyone on the network can read them. The server warns (but does not block) if it detects an HTTP URL for a non-localhost host.

Revoking access

Go to WordPress Admin → Users → Your Profile → Application Passwords and delete the WPCafe MCP entry. The server immediately loses access.

Role capabilities

Role

List / Get

Create

Update

Delete

Administrator

All resources

All resources

All resources

All resources

Shop Manager

Reservations, Orders, Products

Reservations

Order status, Reservation status

—

Staff (wpcafe_manage_*)

Own + all reservations/orders

—

Status only

—


Troubleshooting

"HTTP 401 Unauthorized"

  • Check that WPCAFE_USERNAME and WPCAFE_APP_PASSWORD are correct.

  • Make sure Application Passwords are enabled (some security plugins disable them).

  • Verify the user exists and has the right role.

"HTTP 403 Forbidden" The authenticated user does not have the required capability. Use an administrator or shop manager account.

"This operation requires a WordPress security nonce" Add the functions.php snippet above, or install wordpress-plugin/wpcafe-mcp-bridge.php.

Pro tools return 404 The wpcafe-pro plugin is not installed or not active. Pro tools are registered but return 404 on free-only installations.


Development

git clone https://github.com/themewinter/wpcafe-mcp.git
cd wpcafe-mcp
npm install
npm run dev      # Run with tsx (no build step)
npm run build    # Compile TypeScript to dist/
npm start        # Run compiled output

To add new tools, create a register function in src/tools/ following the pattern of existing files, then call it in src/index.ts.


License

GPL-2.0-or-later — same license as the WPCafe WordPress plugin.

Available Tools

53 tools
bulk_delete_locationsA

Delete multiple restaurant locations at once.

Inputs: ids (required).

bulk_delete_reservationsA

Delete multiple reservations at once by providing an array of IDs.

Inputs: ids (required).

cancel_reservationA

Cancel a reservation using invoice number and guest email (public-facing cancellation, no admin login required).

Inputs: email (required), invoice (required), notes.

create_discountB

[WPCafe Pro] Create a new discount code for food orders.

Inputs: code (required), type (required), amount (required), max_uses, +4 more.

create_locationB

Create a new restaurant location/branch. Requires a name and location coordinates (lat/lng object).

Inputs: location (required), restaurant_name (required), restaurant_type, restaurant_email, +3 more.

create_qrcodeA

Create a new QR code for a table or location. The QR encodes a URL that customers scan to open the food ordering page.

Inputs: name (required), table_id, location_id, redirect_url.

create_reservationC

Create a new table reservation. Requires guest name, email, date, start_time, end_time, and total_guest. The booking price is calculated server-side.

Inputs: date (required), name (required), email (required), end_time (required), +9 more.

create_seat_planB

[WPCafe Pro] Create a new seat plan layout for a restaurant location.

Inputs: name (required), location_id (required), canvas_data.

create_timed_productB

[WPCafe Pro] Create a time-availability rule for a product — restrict when it appears on the menu.

Inputs: schedule (required), product_id (required).

delete_discountB

[WPCafe Pro] Delete a discount code by ID.

Inputs: id (required).

delete_food_orderA

Move a food order to trash. The order is not permanently deleted — it can be restored from the WooCommerce orders screen.

Inputs: id (required).

delete_locationB

Delete a single restaurant location by ID.

Inputs: id (required).

delete_qrcodeA

Delete a QR code by ID. Scanning the deleted QR code will no longer open the ordering page.

Inputs: id (required).

delete_reservationB

Permanently delete a reservation by ID.

Inputs: id (required).

delete_seat_planB

[WPCafe Pro] Delete a seat plan by ID.

Inputs: id (required).

get_addon_pluginsA

Get the list of available WPCafe addon plugins (Elementor Addons, Bricks Builder, Multivendor) and whether they are installed and active.

Inputs: no named parameters.

get_dashboard_food_ordersB

Get a paginated list of food orders from the dashboard analytics view, optionally filtered by status and branch.

Inputs: paged, branch, status, per_page.

get_dashboard_overviewB

Get a high-level overview of restaurant performance: total revenue, orders, reservations, and new customers for a date range.

Inputs: branch, end_date, start_date.

get_dashboard_reservationsB

Get a paginated list of reservations from the dashboard analytics view, optionally filtered by status and branch.

Inputs: paged, branch, status, per_page.

get_discountB

[WPCafe Pro] Get details of a single discount code including type, amount, usage limits, and expiry.

Inputs: id (required).

get_food_orderA

Get full details of a single food order including line items, billing/shipping address, totals, and customer notes.

Inputs: id (required).

get_integrationsA

Get the status and configuration of WPCafe third-party integrations (WooCommerce, FluentCRM, Mailmint, WhatsApp, etc.).

Inputs: no named parameters.

get_locationA

Get details of a single restaurant location including address, coordinates, schedule, and capacity.

Inputs: id (required).

get_productA

Get full details of a single food menu product including price, description, categories, labels, images, and WooCommerce meta.

Inputs: id (required).

get_public_settingsA

Get public (non-sensitive) WPCafe settings. Safe to call without admin credentials. Returns reservation form config, colors, schedule, currency, and UI settings.

Inputs: no named parameters.

get_qrcodeA

Get details of a single QR code including the image URL, linked table/location, and scan statistics.

Inputs: id (required).

get_receiptA

[WPCafe Pro] Get a generated receipt/bill for a specific order. Returns the receipt data or PDF download URL.

Inputs: order_id (required).

get_reservationA

Get full details of a single reservation by its ID.

Inputs: id (required).

get_reservation_capacityB

Check how many seats are available, booked, and total for a specific date/time slot.

Inputs: date (required), end_time (required), start_time (required), branch_id.

get_reservation_time_slotsA

Get available reservation time slots for a date range. Used to show a calendar of open and blocked slots.

Inputs: end_date (required), start_date (required), location_id.

get_seat_planA

[WPCafe Pro] Get details of a specific seat plan including table positions, capacities, and shape data.

Inputs: id (required).

get_settingsA

Get all WPCafe plugin settings. Requires administrator or shop manager role. Sensitive credentials (WhatsApp token, webhook URLs) are only returned for administrators with manage_options capability.

Inputs: no named parameters.

get_top_selling_productsB

Get the top selling food menu items for a given time period and branch. Useful for menu optimization and promotions.

Inputs: branch, period, per_page.

list_discountsA

[WPCafe Pro] List discount codes configured for food ordering.

Inputs: paged, per_page.

list_extensionsA

List all WPCafe modules/extensions with their current on/off status. Includes both free modules (Reservation, Food Ordering, QR Code, Tipping, Mini Cart) and Pro modules (Delivery, Pickup, Discounts, Dine-In, Seat Plan, etc.).

Inputs: no named parameters.

list_food_ordersB

List WooCommerce food orders managed by WPCafe. Returns order summaries including customer, items count, total, and status.

Inputs: paged, search, status, date_to, +3 more.

list_locationsC

List all restaurant locations/branches configured in WPCafe.

Inputs: paged, search, per_page.

list_product_categoriesB

List WooCommerce product categories used in the WPCafe food menu.

Inputs: parent, search, per_page.

list_productsA

List WooCommerce food menu products managed by WPCafe. Supports filtering by category, location, search, and pagination.

Inputs: order, paged, search, orderby, +3 more.

list_qrcodesB

List all QR codes created in WPCafe. Each QR code links to a specific table or location for scan-to-order functionality.

Inputs: paged, search, per_page.

list_receipt_layoutsC

[WPCafe Pro] List custom receipt/bill layouts created with the Receipt Layout Builder.

Inputs: per_page.

list_reservationsA

List table reservations with optional filters. Returns paginated results including guest info, date/time, status, and branch.

Inputs: paged, branch, search, status, +4 more.

list_seat_plansC

[WPCafe Pro] List visual seat plans / floor layouts for restaurant locations.

Inputs: location_id.

list_timed_productsA

[WPCafe Pro] List products with time-based availability rules (e.g. breakfast items only available 6am-11am).

Inputs: per_page.

toggle_extensionA

Enable or disable a WPCafe module by its slug. Affects which features are active on the site.

Inputs: slug (required), status (required).

update_dashboard_order_statusA

Update the status of an order directly from the dashboard analytics view (shortcut for the restaurant management panel).

Inputs: id (required), status (required).

update_discountC

[WPCafe Pro] Update an existing discount code.

Inputs: id (required), code, type, amount, +2 more.

update_food_order_statusC

Update the WooCommerce status of a food order (e.g. mark as processing, completed, cancelled).

Inputs: id (required), status (required).

update_locationA

Update an existing restaurant location. Only provide fields you want to change.

Inputs: id (required), location, restaurant_name, restaurant_email, +3 more.

update_qrcodeA

Update an existing QR code — rename it or change its linked table/location.

Inputs: id (required), name, table_id, location_id, +1 more.

update_reservationA

Update an existing reservation. Only provide fields you want to change.

Inputs: id (required), date, name, email, +8 more.

update_seat_planB

[WPCafe Pro] Update an existing seat plan (rename or change canvas layout data).

Inputs: id (required), name, canvas_data.

update_settingsA

Update one or more WPCafe settings. Only provide the keys you want to change — all other settings remain unchanged. Requires administrator role.

Inputs: extra, currency, wc_status, primary_color, +16 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 53 tools

    Disambiguation4/5

    Most tools target distinct entities (locations, reservations, orders, QR codes, discounts, etc.), but there is minor overlap between get/list/dashboard variants for reservations and orders. However, descriptions clearly differentiate them, so agents can generally distinguish.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case (e.g., create_location, delete_qrcode, list_products, update_settings), making the naming predictable and easy to understand.

    Tool Count3/5

    With 53 tools, the set is quite large, but it covers multiple modules of a comprehensive restaurant management plugin (reservations, ordering, QR codes, discounts, seat plans, settings, etc.). It is borderline heavy but not unreasonable for such a broad domain.

    Completeness4/5

    The tool set provides extensive CRUD operations for most entities (locations, QR codes, reservations, discounts, seat plans, timed products) and includes dashboard analytics and management tools. Minor gaps exist, such as no tool to create a food order or product from the MCP side, but these are likely intentional.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      F
      maintenance
      Enables AI assistants to interact with a WordPress site, allowing content and taxonomy management (list, create, update, delete) through 17 MCP tools.
      2
      -