To connect Mews to Claude, you run a small MCP server: a lightweight program on your own machine that wraps the Mews Connector API and exposes it to Claude as a set of tools. Once connected, Claude can read room status, reservations, housekeeping tasks, and departments across your property and answer questions about them, no dashboards, no exports.

MCP (the Model Context Protocol) is an open standard from Anthropic that lets AI assistants talk to outside systems. Mews does not ship a first-party MCP server as of July 2026, but it is one of the friendliest platforms in hospitality to build one for: the Connector API is fully documented in the open, and Mews publishes public demo tokens so you can test everything without a live account.

Where Mews stands on AI (and why this guide exists)

Mews is the most AI-forward PMS in hotels right now, and the receipts are public. The catch: all of that intelligence lives inside the Mews platform. If you want your own AI assistant to reason across your operational data, the documented path is the Connector API, which is exactly what this guide wires up.

  • SEP 2025Acquires Flexkeeping The housekeeping and hotel-ops platform (founded 2012) joins Mews; its technology is being natively connected to the Mews PMS. According to Mews, Flexkeeping's tools made hotel teams 40% more productive and cut guest complaints by 45%.
  • JAN 2026Raises $300M for agentic AI A Series D led by EQT Growth at a $2.5B valuation, which Skift reported as funding for AI that can run hotel operations. It followed Mews' fourteenth acquisition, the generative AI analytics platform DataChat.
  • MAY 2026Unveils the "operating system for hospitality" At Unfold 2026 in Amsterdam, Mews launched five products including Guest Messaging with Mews Agent, which can autonomously manage guest conversations and action tasks.

What you can ask once it's connected

Questions a housekeeping or ops leader actually asks, answered from live PMS data:

  • "How many rooms are still Dirty right now, and which floors are they on?"
  • "Compare today's housekeeping load to arrivals: how many checkouts, how many rooms Inspected, how many still to turn?"
  • "Which rooms are OutOfOrder or OutOfService, and is anything arriving into them this week?"
  • "List maintenance tasks created in the last 30 days and group them by department. What's trending up?"
  • "What does occupancy look like over the next 14 days, and which days will stretch the housekeeping team most?"

The room states you'll be querying

According to the Mews Connector API reference, every bookable space (a "resource") carries one of five states. This little enum is the backbone of hotel housekeeping analytics, and it's what your first tool will pull:

StateMeaning
DirtyNeeds cleaning and inspection. Mews sets this automatically on check-in or check-out (configurable), or after a configured vacancy interval of up to 7 days.
CleanCleaned, awaiting inspection.
InspectedCleaned and verified. Ready to sell.
OutOfServiceTemporarily unavailable but still counted in availability.
OutOfOrderRemoved from availability, typically for maintenance.

Before you start

Three things: Node.js 18 or newer (check with node --version), either Claude Desktop or Claude Code, and a pair of Mews tokens. For tokens you have two options, and the first one requires no Mews account at all.

01

Start on the demo environment (no account needed)

This is the part that makes Mews unusually pleasant to build against. The Connector API docs publish shared demo properties at https://api.mews-demo.com with working ClientToken and AccessToken pairs anyone can use. You can have Claude querying a fully populated fake hotel tonight.

Published demo credentials (UK, gross pricing)

Straight from the Mews Open API "Environments" page. These are intentionally public test tokens for a shared demo property; they expose no real hotel's data.

Platform address
https://api.mews-demo.com
ClientToken
E0D439EE522F44368DC78E1BFB03710C-D24FB11DBE31D4621C4817E028D9E1D
AccessToken
C66EF7B239D24632943D115EDE9CB810-EA00F8FD8294692C940F6B5A8F9453D
Demo is public, production is sacred. Mews' docs are explicit: the demo environments are completely public and no real data should ever be entered there. The flip side: production tokens are secrets. Keep them in environment variables, never in code or chat.

For a live property later: the ClientToken identifies your application and is issued by Mews through its partner onboarding; the AccessToken is issued per property and, per the Mews Help Center, can be found in Mews under Main menu → Marketplace → My subscriptions → [integration] → Settings (the key icon). Step 06 covers the production path.

02

Scaffold the project

Two dependencies: the official MCP SDK and zod (used to describe each tool's inputs). No build step.

terminal
mkdir mews-mcp && cd mews-mcp
npm init -y
npm pkg set type="module"
npm install @modelcontextprotocol/sdk zod
03

Write the server

Save this as index.js. One quirk to know: the Connector API accepts only HTTP POST, with ClientToken, AccessToken, and a Client label in the JSON body of every request, no OAuth dance, no Authorization header. That makes the whole server one helper plus four read-only tools.

index.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

// Demo: https://api.mews-demo.com | Production: https://api.mews.com
const PLATFORM = process.env.MEWS_PLATFORM_ADDRESS ?? "https://api.mews-demo.com";
const CLIENT_TOKEN = process.env.MEWS_CLIENT_TOKEN;
const ACCESS_TOKEN = process.env.MEWS_ACCESS_TOKEN;

if (!CLIENT_TOKEN || !ACCESS_TOKEN) {
  console.error("Set MEWS_CLIENT_TOKEN and MEWS_ACCESS_TOKEN first.");
  process.exit(1);
}

// Every Connector API call is a POST with the tokens in the body.
async function mews(operation, payload = {}) {
  const res = await fetch(`${PLATFORM}/api/connector/v1/${operation}`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      ClientToken: CLIENT_TOKEN,
      AccessToken: ACCESS_TOKEN,
      Client: "RapidEye Mews MCP 1.0.0",
      ...payload,
    }),
  });
  if (!res.ok) throw new Error(`Mews ${res.status}: ${await res.text()}`);
  return res.json();
}

function json(data) {
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
}

// ISO interval helper: { StartUtc, EndUtc } from now to now + days.
function window(days) {
  const now = new Date();
  const end = new Date(now.getTime() + days * 86400000);
  return { StartUtc: now.toISOString(), EndUtc: end.toISOString() };
}

const server = new McpServer({ name: "mews", version: "1.0.0" });

server.registerTool(
  "get_room_status",
  {
    description:
      "List all spaces (rooms) with their housekeeping state: Dirty, Clean, Inspected, OutOfService, or OutOfOrder. The backbone of any housekeeping question.",
    inputSchema: {},
  },
  async () =>
    json(await mews("resources/getAll", {
      Extent: { Resources: true },
      Limitation: { Count: 1000 },
    }))
);

server.registerTool(
  "list_reservations",
  {
    description:
      "List reservations active during a date window (default: the next 7 days). Returns status, scheduled start/end, assigned resource, and guest counts.",
    inputSchema: {
      days: z.number().optional().describe("Window length in days from now, default 7, max ~90"),
    },
  },
  async ({ days }) =>
    json(await mews("reservations/getAll/2023-06-06", {
      CollidingUtc: window(days ?? 7),
      Limitation: { Count: 1000 },
    }))
);

server.registerTool(
  "list_tasks",
  {
    description:
      "List operational tasks (housekeeping, maintenance, front office) created in a recent window (default: last 30 days, max 3 months per the API).",
    inputSchema: {
      days_back: z.number().optional().describe("How many days back to look, default 30, max 90"),
    },
  },
  async ({ days_back }) => {
    const d = Math.min(days_back ?? 30, 90);
    const now = new Date();
    return json(await mews("tasks/getAll", {
      CreatedUtc: {
        StartUtc: new Date(now.getTime() - d * 86400000).toISOString(),
        EndUtc: now.toISOString(),
      },
      Limitation: { Count: 1000 },
    }));
  }
);

server.registerTool(
  "list_departments",
  {
    description:
      "List the property's departments (housekeeping, maintenance, front office) so task DepartmentIds can be resolved to names.",
    inputSchema: {},
  },
  async () =>
    json(await mews("departments/getAll", { Limitation: { Count: 100 } }))
);

const transport = new StdioServerTransport();
await server.connect(transport);
console.error(`Mews MCP server running on stdio (${PLATFORM})`);
If a request 400s, the error body tells you which field it wants; Mews versions some operations (note the /2023-06-06 on reservations) and evolves request shapes. The exact current schema for every operation is in the open docs at docs.mews.com, no login required, which is more than most PMS vendors can say.
04

Connect it to Claude

Point Claude at the server and pass your tokens. The demo tokens from step 01 work as-is.

Claude Desktop

Add a mews entry to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %AppData%\Claude\claude_desktop_config.json on Windows), then fully quit and reopen the app.

claude_desktop_config.json
{
  "mcpServers": {
    "mews": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/mews-mcp/index.js"],
      "env": {
        "MEWS_PLATFORM_ADDRESS": "https://api.mews-demo.com",
        "MEWS_CLIENT_TOKEN": "your-client-token",
        "MEWS_ACCESS_TOKEN": "your-access-token"
      }
    }
  }
}
Claude Code
terminal
claude mcp add \
  --env MEWS_PLATFORM_ADDRESS=https://api.mews-demo.com \
  --env MEWS_CLIENT_TOKEN=your-client-token \
  --env MEWS_ACCESS_TOKEN=your-access-token \
  --transport stdio mews \
  -- node /ABSOLUTE/PATH/TO/mews-mcp/index.js

Confirm with claude mcp list. Add --scope user to make it available in every project.

05

Ask away

Start a new conversation. Claude asks permission the first time it calls a tool; approve it and you're set.

try these
Pull room status and give me a housekeeping board: counts by state,
then list every Dirty room.

What reservations are active in the next 7 days? Estimate the
housekeeping load per day from the checkouts.

List tasks from the last 30 days, resolve their departments, and
tell me which department is busiest.
06

Go to production

When the demo convinces you, the production path is more deliberate, by design. The Connector API is a partner API: your ClientToken comes from Mews through its integration partner onboarding, and each property grants your integration an AccessToken when it subscribes to it in the Mews Marketplace (per the Mews Help Center, the token sits under My subscriptions → Settings). Swap MEWS_PLATFORM_ADDRESS to https://api.mews.com and keep the code identical.

Rate limits: Mews enforces 200 requests per AccessToken per sliding 30-second window in both environments, and recommends exponential backoff on 429 responses using the Retry-After header. The four tools above stay comfortably under that in normal use.

Prefer to skip the typing?

Paste this into Claude Code (or any coding agent) and it will build, install, and wire up the server for you.

prompt for Claude Code
Build a local MCP server (Node.js, ESM, @modelcontextprotocol/sdk and zod)
that wraps the Mews Connector API. Read MEWS_PLATFORM_ADDRESS (default
https://api.mews-demo.com), MEWS_CLIENT_TOKEN, and MEWS_ACCESS_TOKEN from
the environment. All Mews calls are HTTP POST to
{PLATFORM}/api/connector/v1/{operation} with ClientToken, AccessToken, and
Client ("Mews MCP 1.0.0") merged into the JSON body. Register these
read-only tools: get_room_status -> resources/getAll with
Extent {Resources: true} and Limitation {Count: 1000};
list_reservations(days?) -> reservations/getAll/2023-06-06 with a
CollidingUtc {StartUtc, EndUtc} window (default 7 days) and Limitation;
list_tasks(days_back?) -> tasks/getAll with a CreatedUtc window (default
30 days, cap 90) and Limitation; list_departments -> departments/getAll.
If Mews returns 400, surface the response body so I can fix the request
shape against docs.mews.com. Use StdioServerTransport, log startup to
stderr, then make package.json (type: module), install deps, and show me
the claude mcp add command and three prompts to try. For testing, Mews'
docs publish public demo tokens on the Connector API Environments page.

Good to know

  • It's read-only. Every tool calls a getAll operation. Claude can't check anyone in, change a rate, or flip a room to Inspected. The API does support writes (resources/update changes a room's state, tasks/add creates tasks); add them deliberately, and test on the demo environment first.
  • Housekeeping is a first-class API citizen. Mews publishes a dedicated housekeeping use-case guide covering resource states, resource blocks (OutOfOrder / OutOfService), task management, and even websocket events for live room-status changes. If you outgrow polling, the websocket is the upgrade path.
  • Task queries are window-limited. tasks/getAll filters like CreatedUtc and DeadlineUtc accept intervals up to 3 months. For longer trend analysis, have Claude page through consecutive windows.
  • The Flexkeeping era is coming. Mews acquired Flexkeeping in September 2025 and is connecting it natively to the PMS, so expect Mews housekeeping to get deeper (and possibly grow new API surface) over time. The Connector API operations here are the documented, stable interface today.

The API tells you a room is Inspected. It can't tell you the room is right. State flags record that someone tapped a button, not what the room looked like. RapidEye closes that gap for hotel housekeeping QA: room photos from cleaners or inspectors are read by AI that flags damage, missed cleaning, and out-of-standard setups before the next guest opens the door. If you're wiring Mews data into Claude, our RapidEye API is built to sit in the same stack.

FAQ

Does Mews have an official MCP server?

Not as of July 2026. Mews' AI push (Mews Agent, the $300M agentic-AI raise) has gone into in-platform intelligence rather than external AI-assistant connectors. Third-party and community Mews MCP servers exist on GitHub and MCP directories, or you build a focused read-only one yourself in twenty minutes, which is this guide.

Can I try this without a Mews account?

Yes, and that's rare among PMS vendors. Mews publishes working demo ClientToken and AccessToken pairs for shared public demo properties at api.mews-demo.com. Build against those, then request production access when it earns it.

Is it safe to connect a live property?

The server here is read-only, tokens stay in environment variables on your machine, and Claude asks before each tool call. Treat production tokens as secrets: Mews' own guidance is to store them securely and never share them.

What about Flexkeeping?

Mews acquired the housekeeping platform Flexkeeping (founded 2012 by Luka Berger) on September 30, 2025 and is connecting its technology natively to the Mews PMS. Room states and tasks via the Connector API remain the documented integration surface; watch Mews' changelog as the integration deepens.

How is this different from Mews Agent?

Mews Agent lives inside Mews Guest Messaging and autonomously handles guest conversations. This connection points the other direction: it gives your assistant read access to operational data so you can ask cross-cutting questions, housekeeping load versus occupancy, maintenance trends by department, that in-app tools weren't built to answer.

I run vacation rentals, not a hotel. Same playbook?

Yes. We've written the same guide for the STR stack: Hostaway, Guesty, OwnerRez, and more in the full Claude guides library. Only the auth step changes.

More from this series

Sources

  1. Mews Open API: Connector API, Getting startedhttps://docs.mews.com/connector-api/getting-started
  2. Mews Connector API: Environments (demo tokens, base URLs, rate limits)https://docs.mews.com/connector-api/guidelines/environments
  3. Mews Connector API: Requests (POST-only, body auth, URL pattern)https://docs.mews.com/connector-api/guidelines/requests
  4. Mews Connector API: Resources (space states)https://docs.mews.com/connector-api/operations/resources
  5. Mews Connector API: Reservations (getAll 2023-06-06)https://docs.mews.com/connector-api/operations/reservations
  6. Mews Connector API: Taskshttps://docs.mews.com/connector-api/operations/tasks
  7. Mews Connector API: Housekeeping use casehttps://docs.mews.com/connector-api/use-cases/housekeeping
  8. Mews Help Center: Find an integration's access tokenhttps://help.mews.com/en/articles/4276781-find-an-integration-s-access-token
  9. Mews press: Mews Acquires Flexkeeping, Delivering Next-Generation Housekeeping Innovation for Hoteliershttps://www.mews.com/en/press/mews-acquires-flexkeeping
  10. Mews press: Mews Secures $300 million Investmenthttps://www.mews.com/en/press/mews-secures-300-million-investment
  11. Skift: Mews Raises $300 Million to Prove AI Can Run Hotel Operationshttps://skift.com/2026/01/22/mews-raises-300-million-series-d-2-5-billion-valuation/
  12. Mews press: Mews unveils the operating system for hospitality (Unfold 2026)https://www.mews.com/en/press/mews-operating-system-unfold-2026
  13. Model Context Protocol: Build an MCP serverhttps://modelcontextprotocol.io/quickstart/server
  14. Claude Code: Connect to tools via MCPhttps://code.claude.com/docs/en/mcp

Independent integration guide. RapidEye is not affiliated with or endorsed by Mews or Anthropic. API behavior, request schemas, and dashboard menus can change; confirm specifics against the official docs above. Last reviewed July 18, 2026.