MCP Server for the Plesk REST API with support for multiple Plesk instances.
- ✅ Support for multiple Plesk instances
- ✅ Automatic API key generation
- ✅ Complete REST API integration
- ✅ Domain management
- ✅ Client management
- ✅ Server information
- ✅ Extension management
- ✅ Execute CLI commands
- ✅ WordPress Toolkit Integration
- Manage WordPress installations
- Create and restore backups
- Clone installations
- Control maintenance mode
- Clear cache
- Security settings (Vulnerability Filtering)
npm install
npm run build- Copy
.env.exampleto.env - Enter your Plesk instances:
PLESK_URL=https://your-plesk-server.com
PLESK_API_KEY=your-api-key
PLESK_2_URL=https://second-server.com
PLESK_2_API_KEY=second-api-keyThe MCP Server provides a tool for automatic API key generation:
In Claude Desktop:
Use the plesk_generate_api_key tool with:
- plesk_url: https://your-server.com:8443
- username: admin
- password: your-password
- instance_name: default (or instance_2, etc.)
The tool automatically generates an API key and saves it in the .env file. After restarting the MCP Server, the instance is available.
New keys have no IP binding, so they remain usable when the client's public IP changes. Both the MCP tool and generate-key.cjs call /api/v2/cli/secret_key/call with --create and -description, without -ip-address. This requires administrator credentials and access to that CLI utility through the REST API. There is no fallback to /auth/keys, because that endpoint binds keys to the sender's IP when ip is omitted.
Existing IP-bound keys are not changed by this update. Generate a replacement, restart the MCP server, and verify access before deleting the old key. See the Plesk secret_key reference.
- Log in to Plesk
- Go to "Tools & Settings" > "API Keys"
- Create a new API key
- Copy the key to your
.envfile
plesk_generate_api_key- Generate API key and save to .envplesk_list_api_keys- List all API keysplesk_delete_api_key- Delete API keyplesk_list_instances- Show all configured instances
plesk_list_domains- List all domainsplesk_get_domain- Retrieve domain detailsplesk_create_domain- Create new domainplesk_update_domain- Update domainplesk_delete_domain- Delete domain
plesk_list_clients- List all clientsplesk_get_client- Retrieve client detailsplesk_create_client- Create new clientplesk_update_client- Update clientplesk_suspend_client- Suspend clientplesk_activate_client- Activate client
plesk_get_server_info- Server informationplesk_list_ips- List all IP addresses
plesk_list_extensions- List all extensions
plesk_execute_cli- Execute Plesk CLI command
plesk_wp_list_installations- List all WordPress installationsplesk_wp_get_installation- WordPress installation detailsplesk_wp_clone_installation- Clone WordPress installationplesk_wp_create_backup- Create backupplesk_wp_restore_backup- Restore backupplesk_wp_list_backups- List all backupsplesk_wp_toggle_maintenance- Enable/disable maintenance modeplesk_wp_clear_cache- Clear cacheplesk_wp_get_background_task- Retrieve background task statusplesk_wp_list_background_tasks- List background tasksplesk_wp_update_vulnerability_filtering- Enable/disable vulnerability filteringplesk_wp_get_changelog- Retrieve WordPress Toolkit changelog
Add to Claude Desktop Config (claude_desktop_config.json):
{
"mcpServers": {
"plesk": {
"command": "node",
"args": ["/yourgit/plesk_mcp/dist/index.js"]
}
}
}npm run dev