Plesk

Gestiona tu servidor de hosting Plesk usando asistentes de IA.

Documentación

Servidor MCP de Plesk

Este servidor MCP para Plesk permite a los administradores gestionar sus servidores Plesk mediante diversos agentes y aplicaciones de IA. Se basa en la API REST de Plesk y en la API REST de WP Toolkit, y proporciona capacidades de administración básicas, así como la capacidad de gestionar el servidor mediante comandos de shell y subir archivos al servidor.

El servidor MCP se ejecuta localmente en tu máquina, por lo que la información importante no sale de tu entorno.

Requisitos de Plesk

Se espera que el servidor MCP sea compatible con cualquier versión de Plesk suficientemente reciente (no hay limitaciones estrictas) y con cualquier sistema operativo (Linux o Windows) que Plesk soporte. Sin embargo, solo se probó en Plesk Obsidian 18.0.76, por lo que se recomienda usar una versión de Plesk compatible.

Obviamente, el acceso a la API no debe estar deshabilitado en el servidor.

Requisitos del servidor MCP

Necesitarás el administrador de paquetes de Python uv para ejecutar el servidor. Consulta la documentación oficial para las instrucciones de instalación.

Uso

Configura el servidor en tu mcp.json de VS Code o equivalente (en otros agentes o aplicaciones) usando una configuración como:

{
    "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"
            }
        }
    }
}

Puede que quieras usar un archivo env (por ejemplo, mediante el parámetro "envFile") si tu agente o aplicación lo admite. Esto evitará poner credenciales directamente en el archivo de configuración.

Consulta uvx plesk-mcp@latest --help para obtener detalles sobre las opciones disponibles y las variables de entorno.

Uso recomendado

Para un mejor comportamiento, se recomienda usar este servidor MCP en combinación con un servidor MCP de documentación. Selecciona plesk-local-docs-mcp o plesk-remote-docs-mcp. Esto permitirá al agente obtener información más precisa sobre el uso de Plesk cuando sea necesario.

También puedes conectar varios servidores Plesk a la vez si es necesario (por ejemplo, para gestionar múltiples servidores).

Aquí tienes un ejemplo de configuración:

{
    "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"
            }
        }
    }
}

Desarrollo

Comando de ejecución del servidor MCP:

uv run plesk-mcp --log-level debug --insecure

Antes del commit:

uv run ruff format
uv run ruff check --fix
uv run mypy .
uv run pytest

Publicar:

uv build --clear
uv publish
mcp-publisher login github
mcp-publisher publish

Pruebas

Uso de la imagen Docker de Plesk

Si no tienes una instancia de Plesk pero quieres probar este servidor MCP, puedes usar la imagen Docker de Plesk en su lugar:

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

El inicio de la imagen Docker no es instantáneo, así que espera un minuto más o menos antes de intentar conectarte.

Y luego configura el servidor MCP como:

{
    "servers": {
        "plesk": {
            "command": "uvx",
            "args": [
                "plesk-mcp@latest",
                "--insecure"
            ],
            "env": {
                "PLESK_HOST": "https://localhost:8443",
                "PLESK_PASSWORD": "changeme1Q**"
            }
        }
    }
}

Sin servidor Plesk (modo demo)

Alternativamente, ejecuta en modo demo desde las fuentes (con respuestas simuladas):

{
    "servers": {
        "plesk": {
            "command": "uv",
            "args": [
                "run",
                "plesk-mcp"
            ],
            "env": {
                "PLESK_HOST": "https://linux.demo.example.net",
                "PLESK_API_KEY": "-"
            }
        }
    }
}

Pruebas automatizadas

Las pruebas unitarias se ejecutan con uv run pytest (en la raíz del proyecto y en cada subproyecto). Las pruebas de humo que ejercitan servicios reales se omiten por defecto y se seleccionan mediante -m smoke:

# Plesk MCP smoke tests (against a reachable Plesk instance, e.g. from the Docker image described above)
PLESK_HOST=https://localhost:8443 PLESK_PASSWORD='changeme1Q**' PLESK_INSECURE=1 \
    uv run pytest -m smoke