Skip to main content

SynXis PMS MCP Server

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

MCP server for SynXis PMS (Property Management 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 PMS MCP changes. Local verification should mirror the Crackerjack workflow used across the Bodai ecosystem.


Overview

SynXis PMS MCP exposes property-management workflows through a FastMCP server. It is designed for agent-facing hotel operations such as guest lookup, room status checks, check-in, check-out, and folio review while keeping provider credentials, request validation, and transport concerns in a narrow integration boundary.

The server is intentionally separate from synxis-crs-mcp. PMS owns on-property operational workflows; CRS owns central reservation shopping, rates, availability, and booking workflows.

Capabilities

Implemented tool surface:

  • Guest lookup: retrieve guest profile details by guest ID
  • Room status: inspect room status, type, features, floor, and occupancy
  • Check-in: assign a room and complete guest arrival workflow
  • Check-out: complete departure workflow and return billing summary details
  • Folio lookup: retrieve charges, payments, totals, and balance information
  • 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 PMS OAuth2 credentials for live API access

Local Setup

git clone https://github.com/lesleslie/synxis-pms-mcp.git
cd synxis-pms-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_PMS_MOCK_MODE=true
uv run synxis-pms-mcp start
uv run synxis-pms-mcp health

Run With Live Credentials

export SYNXIS_PMS_CLIENT_ID="your-client-id"
export SYNXIS_PMS_CLIENT_SECRET="your-client-secret"
export SYNXIS_PMS_PROPERTY_ID="your-property-id"
uv run synxis-pms-mcp start

The default HTTP bind is 127.0.0.1:3047.

CLI Commands

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

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

MCP Server Configuration

Claude / Codex Style Configuration

Add the server to an MCP client configuration:

{
  "mcpServers": {
    "synxis-pms": {
      "command": "uv",
      "args": ["run", "synxis-pms-mcp", "start"],
      "cwd": "/Users/les/Projects/synxis-pms-mcp",
      "env": {
        "SYNXIS_PMS_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:3047/health
curl http://127.0.0.1:3047/healthz

Tool Reference

Tool Purpose Required Inputs
get_guest Retrieve guest profile details guest_id
get_room_status Retrieve room status and room metadata room_id
check_in Check in a reservation to a room reservation_id, room_id
check_out Check out a reservation and return billing summary reservation_id
get_folio Retrieve folio charges, payments, totals, and balance reservation_id

Tool responses follow a consistent ToolResponse shape:

{
  "success": true,
  "message": "Room 1201 status: clean",
  "data": {},
  "error": null,
  "next_steps": []
}

Configuration

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

Setting Environment Variable Default
Client ID SYNXIS_PMS_CLIENT_ID empty
Client secret SYNXIS_PMS_CLIENT_SECRET empty
Base URL SYNXIS_PMS_BASE_URL https://api.synxis.com/pms/v1
Property ID SYNXIS_PMS_PROPERTY_ID empty
Mock mode SYNXIS_PMS_MOCK_MODE false
Timeout SYNXIS_PMS_TIMEOUT 30.0
Max retries SYNXIS_PMS_MAX_RETRIES 3
HTTP host SYNXIS_PMS_HTTP_HOST 127.0.0.1
HTTP port SYNXIS_PMS_HTTP_PORT 3047
Log level SYNXIS_PMS_LOG_LEVEL INFO
JSON logs SYNXIS_PMS_LOG_JSON true

Project Structure

synxis_pms_mcp/
  cli.py              # mcp-common lifecycle CLI
  client.py           # SynXis PMS client boundary
  config.py           # Pydantic settings and logging
  models.py           # Typed PMS domain models
  server.py           # FastMCP application factory
  tools/pms_tools.py  # Registered MCP tools
settings/
  synxis-pms.yaml     # Committed defaults
tests/
  test_example.py

Development

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

Use direct pytest commands for targeted debugging:

uv run pytest tests/test_example.py -v

Security Notes

  • Do not commit SynXis credentials, bearer tokens, tenant identifiers, guest profile data, or folio/payment details.
  • Keep examples and tests on mock mode or scrubbed fixtures.
  • Treat check-in, check-out, room assignment, and billing payloads as sensitive operational data.
  • Keep SynXis URLs, ports, and property 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_pms_mcp-0.2.0.tar.gz (498.6 kB view details)

Uploaded Source

Built Distribution

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

synxis_pms_mcp-0.2.0-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: synxis_pms_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 498.6 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_pms_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6c174bce7b0c13d848a7c4714a8572f3731b673a39e974926e9299fe5c58546a
MD5 e6ebfd82a320230f8f8c252e8b941be2
BLAKE2b-256 0738a7253e246a1a60b4bc8ca6edf6c91919395f0fea01a4724fe74d8dd6ae0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: synxis_pms_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.0 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_pms_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3459f442f9b43f0bbf85514e3bd5a9ddc3d33c441957f4b7032a7a42f503254e
MD5 52984d5fd6f698dacf80d27544974dc2
BLAKE2b-256 a054cd558976b099260a53ded5d2a1e40b6ffb65a50663ef1f08b119945774c0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.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.3

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