Skip to main content

Unofficial MCP Server for the Opera Cloud API

Project description

OPERA Cloud MCP Server

Code style: crackerjack Python: 3.13+ Coverage

Unofficial Model Context Protocol (MCP) server for Oracle OPERA Cloud API integration, enabling AI agents to interact with hospitality management systems.

Features

  • Complete OPERA Cloud Integration: Access to reservations, guests, rooms, operations, and financial data
  • FastMCP Framework: Built on FastMCP for high-performance MCP protocol support
  • Production Ready: Security, monitoring, rate limiting, and Docker deployment
  • 45+ Tools: Comprehensive API coverage across 5 core domains
  • Enterprise Security: OAuth2 authentication, token refresh, and audit logging

Quick Start

Installation

# Clone the repository
git clone https://github.com/lesleslie/opera-cloud-mcp.git
cd opera-cloud-mcp

# Install dependencies
uv sync

# Copy environment template
cp .env.example .env

Configuration

Edit .env with your OPERA Cloud credentials:

OPERA_CLOUD_BASE_URL=https://your-opera-instance.com/api/v1
OPERA_CLOUD_CLIENT_ID=your_client_id
OPERA_CLOUD_CLIENT_SECRET=your_client_secret
OPERA_CLOUD_USERNAME=your_username
OPERA_CLOUD_PASSWORD=your_password

Running the Server

# Development
python -m opera_cloud_mcp

# Or with uv
uv run python -m opera_cloud_mcp

MCP Integration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "opera-cloud-mcp": {
      "command": "python",
      "args": ["-m", "opera_cloud_mcp"],
      "cwd": "/path/to/opera-cloud-mcp",
      "env": {
        "OPERA_CLOUD_BASE_URL": "https://your-opera-instance.com/api/v1",
        "OPERA_CLOUD_CLIENT_ID": "your_client_id",
        "OPERA_CLOUD_CLIENT_SECRET": "your_client_secret",
        "OPERA_CLOUD_USERNAME": "your_username",
        "OPERA_CLOUD_PASSWORD": "your_password"
      }
    }
  }
}

Other MCP Clients

See example.mcp.json and example.mcp.dev.json for configuration templates.

Available Tools

The server provides 45+ tools across 5 domains:

Reservation Management (15 tools)

  • Search reservations by date, guest, or status
  • Create, modify, and cancel reservations
  • Handle check-in/check-out operations
  • Manage group bookings and waitlists

Guest Management (12 tools)

  • Guest profile creation and updates
  • Loyalty program management
  • Communication preferences
  • Guest history and analytics

Room Management (8 tools)

  • Room availability and inventory
  • Housekeeping status updates
  • Room assignments and moves
  • Maintenance coordination

Operations Management (6 tools)

  • Daily operations reporting
  • Occupancy forecasting
  • Revenue management
  • Event coordination

Financial Management (4 tools)

  • Billing and invoicing
  • Payment processing
  • Revenue reporting
  • Financial analytics

Development

Code Quality

# Run all quality checks
uv run crackerjack

# Individual tools
uv run ruff check --fix
uv run mypy .
uv run pytest --cov=opera_cloud_mcp

Testing

# Run tests
uv run pytest

# With coverage
uv run pytest --cov=opera_cloud_mcp --cov-report=html

Production Deployment

Docker

# Build image
docker build -t opera-cloud-mcp .

# Run container
docker run -d \
  --name opera-cloud-mcp \
  -p 8000:8000 \
  --env-file .env \
  opera-cloud-mcp

Docker Compose

For full stack with monitoring:

docker-compose up -d

Includes:

  • OPERA Cloud MCP Server
  • Redis (optional caching)
  • Prometheus (metrics)
  • Grafana (monitoring dashboards)

Environment Variables

Variable Description Required
OPERA_CLOUD_BASE_URL OPERA Cloud API base URL Yes
OPERA_CLOUD_CLIENT_ID OAuth2 client ID Yes
OPERA_CLOUD_CLIENT_SECRET OAuth2 client secret Yes
OPERA_CLOUD_USERNAME OPERA Cloud username Yes
OPERA_CLOUD_PASSWORD OPERA Cloud password Yes
OPERA_CLOUD_TIMEOUT Request timeout (seconds) No (default: 30)
OPERA_CLOUD_MAX_CONNECTIONS Max HTTP connections No (default: 50)
OPERA_CLOUD_RATE_LIMIT Rate limit (requests/second) No (default: 10)

Monitoring

Health Checks

  • Health: GET /health - Basic health status
  • Ready: GET /ready - Readiness probe for K8s
  • Metrics: GET /metrics - Prometheus metrics

Observability

  • Structured Logging: JSON logs with correlation IDs
  • Metrics: Request rates, latencies, error rates
  • Tracing: Distributed tracing support
  • Alerting: Prometheus alerting rules

Security

Authentication

  • OAuth2 with automatic token refresh
  • Secure credential storage
  • Token binding for enhanced security

Security Features

  • Rate limiting with token bucket algorithm
  • Circuit breaker for service resilience
  • Input validation and sanitization
  • Audit logging for compliance

Production Security

See docs/security-implementation.md for detailed security configuration.

Documentation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run quality checks: uv run crackerjack
  5. Submit a pull request

License

BSD 3-Clause License - see LICENSE for details.

Support

  • Issues: GitHub Issues
  • Documentation: See /docs directory
  • Examples: See /examples directory

Built for the hospitality industry using FastMCP and Oracle OPERA Cloud.

Project details


Download files

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

Source Distribution

opera_cloud_mcp-0.3.4.tar.gz (291.5 kB view details)

Uploaded Source

Built Distribution

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

opera_cloud_mcp-0.3.4-py3-none-any.whl (204.7 kB view details)

Uploaded Python 3

File details

Details for the file opera_cloud_mcp-0.3.4.tar.gz.

File metadata

  • Download URL: opera_cloud_mcp-0.3.4.tar.gz
  • Upload date:
  • Size: 291.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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 opera_cloud_mcp-0.3.4.tar.gz
Algorithm Hash digest
SHA256 11b4e1d506a1844bbad88cd3b2b0a8283acd5a3eefa077aba5253acbb4e1c516
MD5 2b4f67f7bddfd52f579ed43ab50a9a5e
BLAKE2b-256 6fec9baf243c9822df18aa327d88890f170dc588d5a30d84725aefad4ba2056c

See more details on using hashes here.

File details

Details for the file opera_cloud_mcp-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: opera_cloud_mcp-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 204.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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 opera_cloud_mcp-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3f4de5a1ec98b2a60b8180f57617b7c5a1f72f122f1cec45739f56ec8d018f49
MD5 7d916b6cfd9f79acda191e1e9c55cbf2
BLAKE2b-256 71ae0fe082d8e0dbe4094c436da6d6f0839eb65855826bbd3f65397c5530f229

See more details on using hashes here.

Supported by

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