Skip to main content

SynXis CRS MCP Server

Code style: crackerjack Runtime: oneiric Framework: FastMCP uv Python: 3.13+

MCP server for SynXis CRS (Central Reservation System) integration.

Version: 0.1.4 Status: Internal Bodai integration component

Quick Links

Quality & CI

Crackerjack is the standard quality-control and CI/CD gate for SynXis CRS MCP changes. Local verification should mirror the Crackerjack workflow used across the Bodai ecosystem.


Overview

SynXis CRS MCP exposes central-reservations workflows through a FastMCP server. It is designed for agent-facing hotel search, availability, rate lookup, and reservation creation while keeping provider credentials, request validation, and transport concerns in a narrow integration boundary.

The server is intentionally separate from synxis-pms-mcp. CRS owns shopping and booking workflows that belong to the central reservation system; PMS owns property operations such as guest, room, check-in, check-out, and folio workflows.

Capabilities

Implemented tool surface:

  • Property search: find hotels by city, state, region, or other location text
  • Availability lookup: check available room types for a property and date range
  • Rate lookup: retrieve rate plans, totals, currency, and cancellation policy details
  • Reservation creation: create a booking from property, room type, rate plan, dates, and guest details
  • Mock mode: exercise the MCP tool surface without live SynXis credentials
  • HTTP health routes: /health and /healthz for MCP client and process supervision checks

Quick Start

Prerequisites

  • Python 3.13+
  • UV package manager
  • SynXis CRS OAuth2 credentials for live API access

Local Setup

git clone https://github.com/lesleslie/synxis-crs-mcp.git
cd synxis-crs-mcp
uv sync --group dev

Run In Mock Mode

Mock mode is the safest way to validate client wiring and tool behavior before using live credentials.

export SYNXIS_CRS_MOCK_MODE=true
uv run synxis-crs-mcp start
uv run synxis-crs-mcp health

Run With Live Credentials

export SYNXIS_CRS_CLIENT_ID="your-client-id"
export SYNXIS_CRS_CLIENT_SECRET="your-client-secret"
export SYNXIS_CRS_HOTEL_ID="your-hotel-or-chain-id"
uv run synxis-crs-mcp start

The default HTTP bind is 127.0.0.1:3046.

CLI Commands

The CLI is built with mcp-common and provides the standard lifecycle command surface used by Bodai MCP servers.

uv run synxis-crs-mcp start      # Start the HTTP MCP server
uv run synxis-crs-mcp stop       # Stop the managed server process
uv run synxis-crs-mcp restart    # Restart the managed server process
uv run synxis-crs-mcp status     # Show process status
uv run synxis-crs-mcp health     # Run the local health probe

MCP Server Configuration

Claude / Codex Style Configuration

Add the server to an MCP client configuration:

{
  "mcpServers": {
    "synxis-crs": {
      "command": "uv",
      "args": ["run", "synxis-crs-mcp", "start"],
      "cwd": "/Users/les/Projects/synxis-crs-mcp",
      "env": {
        "SYNXIS_CRS_MOCK_MODE": "true"
      }
    }
  }
}

For live access, replace mock mode with credential environment variables supplied by your secret manager.

Health Checks

curl http://127.0.0.1:3046/health
curl http://127.0.0.1:3046/healthz

Tool Reference

Tool Purpose Required Inputs
search_properties Search hotels by location location
get_availability Check room availability for a property property_id, start_date, end_date
get_rates Retrieve rates for a property and date range property_id, start_date, end_date
create_reservation Create a hotel reservation property_id, room_type, rate_plan_id, start_date, end_date, guest fields

Dates use YYYY-MM-DD. Tool responses follow a consistent ToolResponse shape:

{
  "success": true,
  "message": "Found 2 properties in Miami Beach",
  "data": {},
  "error": null,
  "next_steps": []
}

Configuration

Committed defaults live in settings/synxis-crs.yaml. Runtime overrides should come from environment variables or a local .env file that is not committed.

Setting Environment Variable Default
Client ID SYNXIS_CRS_CLIENT_ID empty
Client secret SYNXIS_CRS_CLIENT_SECRET empty
Base URL SYNXIS_CRS_BASE_URL https://api.synxis.com/crs/v1
Hotel or chain ID SYNXIS_CRS_HOTEL_ID empty
Mock mode SYNXIS_CRS_MOCK_MODE false
Timeout SYNXIS_CRS_TIMEOUT 30.0
Max retries SYNXIS_CRS_MAX_RETRIES 3
HTTP host SYNXIS_CRS_HTTP_HOST 127.0.0.1
HTTP port SYNXIS_CRS_HTTP_PORT 3046
Log level SYNXIS_CRS_LOG_LEVEL INFO
JSON logs SYNXIS_CRS_LOG_JSON true

Project Structure

synxis_crs_mcp/
  cli.py              # mcp-common lifecycle CLI
  client.py           # SynXis CRS client boundary
  config.py           # Pydantic settings and logging
  models.py           # Typed CRS domain models
  server.py           # FastMCP application factory
  tools/crs_tools.py  # Registered MCP tools
settings/
  synxis-crs.yaml     # Committed defaults
tests/
  test_schema_validation.py

Development

uv sync --group dev
uv run pytest
uv run ruff check synxis_crs_mcp tests
uv run ruff format synxis_crs_mcp tests

Use direct pytest commands for targeted debugging:

uv run pytest tests/test_schema_validation.py -v

Security Notes

  • Do not commit SynXis credentials, bearer tokens, tenant identifiers, or guest payment data.
  • Keep examples and tests on mock mode or scrubbed fixtures.
  • Treat reservation payloads and guest contact fields as sensitive operational data.
  • Keep SynXis URLs, ports, and tenant settings configurable rather than hard-coded in new code.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

synxis_crs_mcp-0.2.0.tar.gz (785.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synxis_crs_mcp-0.2.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file synxis_crs_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: synxis_crs_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 785.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for synxis_crs_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1200f4d7ed13b5199519588749332104cb69a007860844eef141a5c207f14d8a
MD5 b4b34e5859449750eeaa1b54ed3c9e9d
BLAKE2b-256 6d3d38d7f36f76a00b6072fa999d68862717154dcfa2b199afa985c5a8d9a05a

See more details on using hashes here.

File details

Details for the file synxis_crs_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: synxis_crs_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for synxis_crs_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 124f066dcca35bef109bac248988f94ee9b2717c16353c8c44609664d2496785
MD5 dff929f5e140913273e7e678b59304c7
BLAKE2b-256 443261356dd30340665a0539b2a8ee032fc90915bfdea21411b52ddee747e59b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.5

2 files

0.1.4

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page