Skip to main content

Unofficial MCP Server for the Opera Cloud API

Project description

OPERA Cloud MCP Server

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

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.6.tar.gz (354.2 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.6-py3-none-any.whl (216.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opera_cloud_mcp-0.3.6.tar.gz
  • Upload date:
  • Size: 354.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","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.6.tar.gz
Algorithm Hash digest
SHA256 b869631fe933d0a04f8b6f92e72c5e1367cd06d4937d41ed360dad4acb5e7254
MD5 1f306e0500e8af3b51d56031f1988d1e
BLAKE2b-256 0dfe3842c797d98cb4f9f138213d5a56ac0e5ca877753deee7fafae2f7baaa3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: opera_cloud_mcp-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 216.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 3dd041de5e954d6e5216b9c42dc0ccd10d4c564ed9c80da78b0a9950710d4eb4
MD5 de91795916b0f39b61583f370adda906
BLAKE2b-256 b4b13d17b237c16ac0563dd4db79ad0f3dd42696e207d9319084b7f9d9fbc8f4

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