# plesk-mcp

Connects AI assistants to Plesk hosting instances via REST APIs and shell access. Lets you administer servers and transfer files directly from your workspace.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: FlayedOne
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/FlayedOne/plesk-mcp
- Updated: 2026-05-17
- HTML: https://affpapa.org/en/nevibecode/mcp/plesk-mcp

## What it does

The MCP server links your coding agent to Plesk on Linux or Windows. It communicates through the Plesk REST API alongside WP Toolkit endpoints to handle routine server operations. The server executes locally on your machine, so credentials stay within your private environment. Agents can trigger shell commands and upload files straight to the remote machine.

Running the tool requires Python's `uv` package installer. Connection details pass through environment variables: `PLESK_HOST` with an address and `PLESK_API_KEY` generated via `plesk bin secret_key`. Alternatively, standard administrator username and password parameters work. An `--insecure` option handles self-signed certificates.

Without enabled REST API access on the hosting panel, requests will fail immediately. The author tested the integration against Plesk Obsidian 18.0.76. You can attach multiple instances simultaneously or test against the official `plesk/plesk` container before touching production.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `PLESK_HOST`, `PLESK_API_KEY`, `PLESK_USERNAME`, `PLESK_PASSWORD` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PLESK_HOST=<PLESK_HOST> --env PLESK_API_KEY=<PLESK_API_KEY> --env PLESK_USERNAME=<PLESK_USERNAME> --env PLESK_PASSWORD=<PLESK_PASSWORD> --transport stdio plesk-mcp -- uvx plesk-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from plesk-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add plesk-mcp --env PLESK_HOST=<PLESK_HOST> --env PLESK_API_KEY=<PLESK_API_KEY> --env PLESK_USERNAME=<PLESK_USERNAME> --env PLESK_PASSWORD=<PLESK_PASSWORD> -- uvx plesk-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from plesk-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "plesk-mcp": {
            "command": "uvx",
            "args": [
                "plesk-mcp"
            ],
            "env": {
                "PLESK_HOST": "<PLESK_HOST>",
                "PLESK_API_KEY": "<PLESK_API_KEY>",
                "PLESK_USERNAME": "<PLESK_USERNAME>",
                "PLESK_PASSWORD": "<PLESK_PASSWORD>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from plesk-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "plesk-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "plesk-mcp"
            ],
            "env": {
                "PLESK_HOST": "<PLESK_HOST>",
                "PLESK_API_KEY": "<PLESK_API_KEY>",
                "PLESK_USERNAME": "<PLESK_USERNAME>",
                "PLESK_PASSWORD": "<PLESK_PASSWORD>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from plesk-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PLESK_HOST=<PLESK_HOST> -e PLESK_API_KEY=<PLESK_API_KEY> -e PLESK_USERNAME=<PLESK_USERNAME> -e PLESK_PASSWORD=<PLESK_PASSWORD> plesk-mcp uvx plesk-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from plesk-mcp <command>

## When to use it
- execute shell commands on remote Plesk hosts
- transfer configuration files directly to hosting servers
- manage sites using Plesk and WP Toolkit REST APIs
- administer multiple Plesk installations from one environment

## Example prompts
- Check the server status using Plesk REST API
- Upload `nginx.conf` to my Plesk hosting instance
- Run a shell command on the Plesk server to inspect disk usage

## Similar
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [Oh My Posh Validator](https://affpapa.org/en/nevibecode/mcp/oh-my-posh-validator.md) — MCP server · ★ 23654
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18779
- [Coder](https://affpapa.org/en/nevibecode/mcp/coder.md) — MCP server · ★ 17191
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12110

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
