Rizerve MCP Server

Install

git clone https://github.com/panoskiriakopoulos-sys/rizerve-mcp-server.git
cd rizerve-mcp-server
npm install && npm run build

The Rizerve MCP Server gives AI assistants direct, operational access to the Rizerve direct booking platform through natural language. Built on the Model Context Protocol (MCP) — the open standard that allows AI models to connect to external tools and data sources — this server exposes 19 tools covering properties, bookings, availability, iCal sync, analytics, webhooks, and guest management. It works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.

Key Takeaways

What You Can Do With the Rizerve MCP Server

Once connected, an MCP-enabled AI assistant can manage a Rizerve account entirely through conversation — no dashboard required for routine operations. The server translates natural language requests into Rizerve API calls and returns structured results the model can read, summarize, or act on.

Practical examples of what a connected assistant can handle:

Quick Start

Requirements

Node.js 18 or higher is required. A Rizerve account and API key are required — the key is available in the Rizerve Dashboard under Integrations → API Access and follows the format rz_xxxxxxxxxxxxxxxx.

Installation

git clone https://github.com/panoskiriakopoulos-sys/rizerve-mcp-server.git
cd rizerve-mcp-server
npm install
npm run build

Set the API Key and Run

# Set your API key
export RIZERVE_API_KEY="rz_xxxxxxxxxxxxxxxx"

# Run via stdio (for Claude Desktop, Cursor, Windsurf)
npm start

# Or run as an HTTP server for remote MCP clients
TRANSPORT=http PORT=3000 npm start

Client Configuration

Claude Desktop

Add the following to your claude_desktop_config.json file, replacing the path and API key with your own values:

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["/path/to/rizerve-mcp-server/dist/index.js"],
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Once saved and Claude Desktop is restarted, the Rizerve tools appear automatically in the tool list. No further configuration is needed.

Cursor, Windsurf, and Other MCP Clients

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/rizerve-mcp-server",
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Remote HTTP Transport

For MCP clients that connect over HTTP rather than stdio — useful for shared team environments or hosted deployments — start the server with the HTTP transport flag:

TRANSPORT=http PORT=3000 npm start

The server will listen on the specified port and accept standard MCP-over-HTTP requests.

Environment Variables

VariableDefaultDescription
RIZERVE_API_KEYrequiredAPI key from Rizerve Dashboard → Integrations → API Access
RIZERVE_API_URLhttps://api.rizerve.io/v1API base URL — override for staging or local testing
TRANSPORTstdioUse stdio for local MCP clients, http for remote access
PORT3000HTTP port when running in HTTP transport mode

Full Tool Reference

The server exposes 19 tools across six functional areas. All tools return raw JSON from the Rizerve API v1, transparently wrapped for MCP tool compatibility. All prices are in the property’s configured currency as face-value numbers, not cents.

Properties — 5 Tools

ToolKey ArgumentsDescription
rizerve_list_propertiespage, limit, published_onlyList all properties with full details, pricing, and amenities
rizerve_get_propertyslugGet a single property by its public slug
rizerve_create_propertyname*, price_per_night*, location, bedrooms, amenitiesCreate a new property listing
rizerve_update_propertyslug, then any field to changePartial update — only supplied fields are changed
rizerve_delete_propertyslugPermanently deletes property and all related data ⚠️

Bookings — 4 Tools

ToolKey ArgumentsDescription
rizerve_list_bookingsstatus, property_slug, check_in_from, check_in_to, page, limitList bookings with date and status filters
rizerve_get_bookingidGet a single booking by UUID
rizerve_create_bookingproperty_id*, guest_name*, check_in*, check_out*, total_price*, guest_email, guests, notesCreate a booking — minimum stay rules are automatically enforced
rizerve_update_booking_statusid, statusTransition status: pending → confirmed / cancelled, confirmed → cancelled / completed

Availability — 3 Tools

ToolKey ArgumentsDescription
rizerve_get_availabilityslug, check_in, check_outCheck whether a property is available for a given date range
rizerve_block_dateslug, date, available, reasonBlock or unblock a single date with an optional reason label
rizerve_batch_set_availabilityranges[] with property_id, date_from, date_to, available, reasonBulk block or unblock up to 50 date ranges in a single call

iCal Feeds — 4 Tools

ToolKey ArgumentsDescription
rizerve_list_ical_feedsslugList all imported calendar feeds (Airbnb, Booking.com, VRBO)
rizerve_import_ical_feedslug, url, sourceImport an external iCal feed — syncs automatically within minutes
rizerve_export_icalslugGet the public iCal URL to share with OTAs for outbound calendar sync
rizerve_delete_ical_feedslug, feed_idRemove an imported feed and its blocked dates ⚠️

Analytics — 3 Tools

ToolKey ArgumentsDescription
rizerve_get_property_statsslug, periodPage views, booking count, conversion rate, revenue, and occupancy for a property
rizerve_get_revenue_reportperiod, group_byRevenue breakdown by day, week, month, or property
rizerve_get_occupancy_reportperiod, property_slugOccupancy rates across one or all properties for a given period

Webhooks and Guest Lookup — 4 Tools

ToolKey ArgumentsDescription
rizerve_create_webhookurl, events[]Register a webhook endpoint for booking.created, booking.status_changed, or availability.updated
rizerve_list_webhooksList all registered webhooks with failure statistics
rizerve_delete_webhookidRemove a registered webhook
rizerve_lookup_guestemailFind all bookings associated with a guest’s email address

Project Structure

The server is written in TypeScript and organized by functional domain. Each tool group has its own file under src/tools/, with matching Zod validation schemas under src/schemas/. The API client in src/services/api-client.ts handles HTTP communication, response wrapping, and error normalization. The entry point at src/index.ts registers all tools with the MCP server instance.

src/
├── index.ts               # MCP server entry, registers all tools
├── constants.ts           # API URL, response formats, valid values
├── types.ts               # TypeScript interfaces matching v1 API responses
├── services/
│   └── api-client.ts      # HTTP client, response wrapping, error handling
├── tools/
│   ├── properties.ts
│   ├── bookings.ts
│   ├── availability.ts
│   ├── ical.ts
│   └── analytics.ts
└── schemas/
    ├── common.ts
    ├── properties.ts
    ├── bookings.ts
    ├── availability.ts
    ├── ical.ts
    └── analytics.ts

Development

# Install dependencies
npm install

# Build TypeScript to dist/
npm run build

# Watch mode for active development
npm run dev

# Run with debug logging
DEBUG=* npm start

API Compatibility and Response Format

This server targets Rizerve API v1. All responses are raw JSON arrays or objects from the API, transparently wrapped for MCP tool compatibility — the model receives the same data structure a direct API call would return. The full API reference is available in the repository at rizerve-api-docs.md.

The source code and issue tracker are on GitHub at github.com/panoskiriakopoulos-sys/rizerve-mcp-server. Licensed MIT. To get started, generate an API key from the Rizerve Dashboard under Integrations → API Access, clone the repository, and add the server config to your MCP client — the 19 tools will be available in your next session.

Setup

Get your API key from Rizerve Dashboard → Integrations → API Access.

Claude Desktop

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["/path/to/rizerve-mcp-server/dist/index.js"],
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Cursor / Windsurf

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/rizerve-mcp-server",
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

What You Can Ask

Connect to any MCP-compatible client and ask:


Tool Reference

Properties (5 tools)

ToolArgumentsDescription
rizerve_list_propertiespagelimitpublished_onlyList all properties with full details, prices, amenities
rizerve_get_propertyslugGet single property by its public slug
rizerve_create_propertyname*, price_per_night*, locationbedroomsamenities, …Create a new property listing
rizerve_update_propertyslug, then any field to changeUpdate property fields (partial update)
rizerve_delete_propertyslugPermanently delete property + all related data ⚠️

Bookings (4 tools)

ToolArgumentsDescription
rizerve_list_bookingsstatusproperty_slugcheck_in_fromcheck_in_topagelimitList bookings with filters
rizerve_get_bookingidGet single booking by UUID
rizerve_create_bookingproperty_id*, guest_name*, check_in*, check_out*, total_price*, guest_emailguest_phoneguestsnotesCreate a new booking — auto-enforces minimum stay
rizerve_update_booking_statusidstatusTransition: pending→confirmed/cancelled, confirmed→cancelled/completed

Availability (3 tools)

ToolArgumentsDescription
rizerve_get_availabilityslugcheck_incheck_outCheck if a property is available for a date range
rizerve_block_dateslugdateavailablereasonBlock or unblock a single date
rizerve_batch_set_availabilityranges[] (property_iddate_fromdate_toavailablereason)Bulk block/unblock up to 50 date ranges

iCal Feeds (4 tools)

ToolArgumentsDescription
rizerve_list_ical_feedsslugList imported calendar feeds (Airbnb, Booking.com, VRBO)
rizerve_import_ical_feedslugurlsourceImport external iCal feed — auto-syncs within minutes
rizerve_export_icalslugGet the public iCal URL to share with OTAs
rizerve_delete_ical_feedslugfeed_idRemove imported feed and its dates ⚠️

Analytics (3 tools)

ToolArgumentsDescription
rizerve_get_property_statsslugperiodPage views, bookings, conversion, revenue, occupancy
rizerve_get_revenue_reportperiodgroup_byRevenue breakdown by day/week/month/property
rizerve_get_occupancy_reportperiodproperty_slugOccupancy rates across properties

Webhooks & Guests (3 tools)

ToolArgumentsDescription
rizerve_create_webhookurlevents[]Register webhook for booking.createdbooking.status_changedavailability.updated
rizerve_list_webhooksList registered webhooks with failure stats
rizerve_delete_webhookidRemove webhook
rizerve_lookup_guestemailFind all bookings for a guest by email

19 tools total — full CRUD across properties, bookings, availability, iCal, analytics, webhooks, and guest history.


Configuration

Env VarDefaultDescription
RIZERVE_API_KEYrequiredAPI key from Rizerve Dashboard → Integrations → API Access
RIZERVE_API_URLhttps://api.rizerve.io/v1API base URL (change for staging/testing)
TRANSPORTstdiostdio for local MCP clients, http for remote access
PORT3000HTTP port when TRANSPORT=http

API Compatibility

This server targets Rizerve API v1. All prices are in the property’s configured currency (face value, not cents). Response format is raw JSON arrays/objects — the MCP server transparently wraps them for tool compatibility.

Full API reference: rizerve-api-docs.md


Development

# Install
npm install

# Build
npm run build

# Watch mode
npm run dev

# Run with debug logging
DEBUG=* npm start

Project Structure

src/
├── index.ts           # MCP server entry, registers all tools
├── constants.ts       # API URL, response formats, valid values
├── types.ts           # TypeScript interfaces matching v1 API responses
├── services/
│   └── api-client.ts  # HTTP client, response wrapping, error handling
├── tools/
│   ├── properties.ts  # Property CRUD tools
│   ├── bookings.ts    # Booking CRUD + status machine tools
│   ├── availability.ts # Date blocking + batch tools
│   ├── ical.ts        # iCal import/export tools
│   └── analytics.ts   # Revenue, occupancy, stats tools
└── schemas/
    ├── common.ts      # Shared Zod schemas (pagination, response format)
    ├── properties.ts  # Property input validation
    ├── bookings.ts    # Booking input validation
    ├── availability.ts # Availability input validation
    ├── ical.ts        # iCal input validation
    └── analytics.ts   # Analytics input validation