Plesk
About
Manage your Plesk hosting server using AI assistants.
Details
- Author
- FlayedOne
- GitHub stars
- 3
- Downloads
- 419
- Categories
- Cloud Service, Infrastructure, Other
Jump to
- Manage Plesk servers via AI agents and apps.
- Core administration through Plesk REST API.
- Execute shell commands on the server.
- Upload files to the server.
- Runs locally for data privacy.
- Supports multiple Plesk servers simultaneously.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
PleskCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Configure the server in your MCP client (e.g., VS Code mcp.json) using the uvx command with the package plesk-mcp@latest. Set environment variables for the Plesk host URL and authentication (API key or username/password). You may attach multiple Plesk servers and optionally combine this server with a documentation MCP server for better agent performance.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"plesk": {
"plesk": {
"command": "uvx",
"args": [
"plesk-mcp@latest"
],
"env": {
"PLESK_HOST": "https://plesk.example.net:8443",
"PLESK_API_KEY": "<Create via `plesk bin secret_key --create -description 'Plesk MCP'` on the server.>"
}
}
}
}
}
McpServers
{
"plesk": {
"command": "uvx",
"args": [
"plesk-mcp@latest"
],
"env": {
"PLESK_HOST": "https://plesk.example.net:8443",
"PLESK_API_KEY": "<Create via `plesk bin secret_key --create -description 'Plesk MCP'` on the server.>"
}
}
}
Plesk MCP Server
<!-- mcp-name: io.github.FlayedOne/plesk-mcp -->
This MCP server for Plesk allows administrators to manage their Plesk servers using various AI agents and apps. It builds on top of Plesk REST API and WP Toolkit REST API, and provides core administration capabilities, as well as ability to manage the server through shell commands and upload files to the server.
The MCP server runs locally on your machine, so important information doesn't leave your environment.
Plesk Requirements
The MCP server is expected to support any sufficiently recent Plesk version (there are no strict limitations) and any OS (Linux or Windows) that Plesk supports. However, it was tested only on Plesk Obsidian 18.0.76, so prefer using a supported Plesk version.
Obviously, API access must not be disabled on the server.
MCP Server Requirements
You will need uv Python package manager to run the server. Refer to the official documentation for installation instructions.
Usage
Configure the server in your VS Code mcp.json or equivalent (in other agents or apps) using a configuration like:
{
"servers": {
"plesk": {
"command": "uvx",
"args": [
"plesk-mcp@latest"
],
"env": {
// Base URL of your Plesk server. May include port.
// If you don't have a valid TLS certificate or want to use HTTP,
// add the --insecure flag to the args above.
// However, this is not recommended as you credentials may be leaked as a result.
"PLESK_HOST": "https://plesk.example.net:8443",
// API key (recommended).
// Create via plesk bin secret_key --create -description 'Plesk MCP' on the server.
"PLESK_API_KEY": "00000000-0000-0000-0000-000000000000",
// Alternatively, you can use username and password.
"PLESK_USERNAME": "admin",
"PLESK_PASSWORD": "passwd"
}
}
}
}
You may want to use env file (e.g. via "envFile" parameter) if your agent or app supports it. This will avoid putting credentials directly in the config file.
See uvx plesk-mcp@latest --help for details on available options and environment variables.
Recommended Usage
For better behavior, it's recommended to use this MCP server in combination with a documentation MCP server. Select either plesk-local-docs-mcp or plesk-remote-docs-mcp. This will allow the agent to get more accurate information about Plesk usage when needed.
You may also attach several Plesk servers at once if needed (e.g. for managing multiple servers).
Here's an example configuration:
{
"servers": {
"plesk-docs": {
"command": "uvx",
"args": [
"plesk-local-docs-mcp@latest"
],
"env": {
"OPENAI_API_KEY": "sk-..."
}
},
"plesk1": {
"command": "uvx",
"args": [
"plesk-mcp@latest"
],
"env": {
"PLESK_HOST": "https://plesk1.example.net:8443",
"PLESK_API_KEY": "00000000-0000-0000-0000-000000000000"
}
},
"plesk2": {
"command": "uvx",
"args": [
"plesk-mcp@latest"
],
"env": {
"PLESK_HOST": "https://plesk2.example.net",
"PLESK_USERNAME": "admin",
"PLESK_PASSWORD": "passwd"
}
}
}
}
Development
MCP server run command:
uv run plesk-mcp --log-level debug --insecure
Before commit:
uv run ruff format
uv run ruff check --fix
uv run mypy .
uv run pytest
Publish:
uv build --clear
uv publish
mcp-publisher login github
mcp-publisher publish
Testing
Using Plesk Docker Image
If you don't have a Plesk instance but want to test this MCP server, you may use Plesk Docker image instead:
docker run -d --rm --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns host -p 80:80 -p 443:443 -p 8880:8880 -p 8443:8443 --name plesk plesk/plesk
The Docker image startup is not instant, so give it a minute or so before trying to connect.
And then configure the MCP server as:
{
"servers": {
"plesk": {
"command": "uvx",
"args": [
"plesk-mcp@latest",
"--insecure"
],
"env": {
"PLESK_HOST": "https://localhost:8443",
"PLESK_PASSWORD": "changeme1Q**"
}
}
}
}
Without Plesk Server (Demo Mode)
Alternatively, run in demo mode from sources (with mocked responses):
{
"servers": {
"plesk": {
"command": "uv",
"args": [
"run",
"plesk-mcp"
],
"env": {
"PLESK_HOST": "https://linux.demo.example.net",
"PLESK_API_KEY": "-"
}
}
}
}
Automated tests
Unit tests run with uv run pytest (in the project root and in each sub-project). Smoke tests that exercise real services are skipped by default and selected via -m smoke:
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




