Provides read-only access to Cloudways hosting resources, allowing retrieval of servers, applications, monitoring data, projects, team members, alerts, SSH keys, and available providers/regions/server sizes from the Cloudways API.
Cloudways MCP Server
A Model Context Protocol (MCP) server for managing Cloudways infrastructure. Provides a secure, modular interface to the Cloudways API with 43+ tools covering server and application management.
Features
Cloudways API Coverage: 43+ tools organized into logical categories
Modular Architecture: Separation of concerns with dedicated modules for different functionalities
Security: Multi-layered authentication with credential encryption, session isolation, rate limiting, and audit logging
Performance: Asynchronous design with Redis caching and HTTP connection pooling
Production Ready: Structured logging, error handling, and monitoring
MCP Compatible: Full Model Context Protocol support for AI assistant integration
Related MCP server: Clever Cloud Documentation MCP Server
Tools Overview
Basic Operations (18 tools)
Authentication & Info:
ping,customer_info,rate_limit_statusServer Management:
list_servers,get_server_detailsApplication Management:
get_app_details,get_app_credentials,get_app_settings,get_app_monitoring_summaryProject Management:
list_projects,list_team_members,get_alertsInfrastructure Discovery:
get_ssh_keys,get_available_providers,get_available_regions,get_available_server_sizes,get_available_apps,get_available_packages
Server Operations (12 tools)
Power Management:
start_server,stop_server,restart_serverBackup & Recovery:
backup_server,get_server_settingsStorage Management:
get_server_disk_usage,optimize_server_diskService Control:
get_server_services_status,change_service_stateCaching:
manage_server_varnishMonitoring:
get_server_monitoring_detail,get_server_analytics
Application Management (8 tools)
Deployment:
clone_app,backup_app,restore_app,rollback_app_restorePerformance:
clear_app_cache,get_app_varnish_settings,manage_app_varnishConfiguration:
reset_app_file_permissions,enforce_app_httpsDomain Management:
update_app_cname,delete_app_cnameAnalytics:
get_app_analytics_traffic,get_app_analytics_php,get_app_analytics_mysql
Security & Access Control (5 tools)
IP Management:
get_whitelisted_ips_ssh,get_whitelisted_ips_mysql,update_whitelisted_ipsSecurity Monitoring:
check_ip_blacklistedTool Access:
allow_ip_siab,allow_ip_adminerSSL Management:
install_ssl_certificate,remove_ssl_certificate,install_letsencrypt,renew_letsencrypt,set_letsencrypt_auto_renewal,revoke_letsencryptGit Deployment:
generate_git_ssh_key,get_git_ssh_key,git_clone,git_pull,get_git_deployment_history,get_git_branch_names
Architecture
Installation & Setup
Prerequisites
Python 3.11+
Redis server (for caching and session management)
Cloudways API credentials
Configure environment variables:
# Generate encryption key for secure credential storage export ENCRYPTION_KEY=$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())') # Redis configuration export REDIS_URL="redis://localhost:6379/0" # Optional performance tuning export REDIS_POOL_SIZE="500" export HTTP_POOL_SIZE="500" export RATE_LIMIT_REQUESTS="90" export RATE_LIMIT_WINDOW="60"
Encryption Key Management
The server requires a Fernet encryption key for secure credential storage.
Generating a New Key
Exporting an Existing Key
Key Validation
Important Notes
Key must be 44 characters long (base64-encoded)
Generated using
Fernet.generate_key()Do not commit keys to version control
Changing the key invalidates existing encrypted data in Redis
Start the server:
python main.pyServer will be available at:
http://localhost:7000/mcp
Authentication
The server uses header-based authentication with encrypted credential storage:
Security Features
Credential Encryption: API keys encrypted with Fernet before Redis storage
Session Isolation: Unique customer ID generation prevents session cross-contamination
Token Auto-Renewal: OAuth token refresh before expiration
Rate Limiting: Token bucket algorithm (90 requests/60 seconds by default)
Input Validation: Parameter validation with range checks
Audit Logging: Request/response logging with structured data
Configuration Options
Variable | Default | Description |
| Required | Fernet encryption key for credential storage |
|
| Redis connection string |
|
| Redis connection pool size |
|
| HTTP connection pool size |
|
| Requests per time window |
|
| Rate limit window (seconds) |
|
| Logging verbosity |
|
| Log format (console/json) |
Monitoring & Observability
Structured Logging
Performance Metrics: Request timing and resource usage
Security Events: Authentication failures, rate limiting
API Interactions: Request/response logging with sanitized credentials
Error Tracking: Error context and stack traces
Health Checks
ping- Basic connectivity and authentication testrate_limit_status- Current rate limit statuscustomer_info- Session and authentication status
Development & Extension
Adding New Tools
Choose appropriate module in
tools/directoryFollow existing patterns for error handling and authentication
Use type hints with Pydantic models for parameters
Include docstrings
Test with various authentication scenarios