Unofficial MCP Server for the Opera Cloud API
Project description
OPERA Cloud MCP Server
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
- Implementation Plan - Development roadmap
- Production Monitoring - Monitoring setup
- Security Implementation - Security configuration
- AGENTS.md - Complete tool reference for AI agents
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run quality checks:
uv run crackerjack - Submit a pull request
License
BSD 3-Clause License - see LICENSE for details.
Support
- Issues: GitHub Issues
- Documentation: See
/docsdirectory - Examples: See
/examplesdirectory
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11b4e1d506a1844bbad88cd3b2b0a8283acd5a3eefa077aba5253acbb4e1c516
|
|
| MD5 |
2b4f67f7bddfd52f579ed43ab50a9a5e
|
|
| BLAKE2b-256 |
6fec9baf243c9822df18aa327d88890f170dc588d5a30d84725aefad4ba2056c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f4de5a1ec98b2a60b8180f57617b7c5a1f72f122f1cec45739f56ec8d018f49
|
|
| MD5 |
7d916b6cfd9f79acda191e1e9c55cbf2
|
|
| BLAKE2b-256 |
71ae0fe082d8e0dbe4094c436da6d6f0839eb65855826bbd3f65397c5530f229
|