Plesk

Gerencie seu servidor de hospedagem Plesk usando assistentes de IA.

Documentação

Servidor MCP Plesk

Este servidor MCP para Plesk permite que administradores gerenciem seus servidores Plesk usando vários agentes e aplicativos de IA. Ele é construído sobre a API REST do Plesk e a API REST do WP Toolkit, e fornece capacidades essenciais de administração, bem como a capacidade de gerenciar o servidor por meio de comandos de shell e enviar arquivos para o servidor.

O servidor MCP é executado localmente na sua máquina, para que informações importantes não saiam do seu ambiente.

Requisitos do Plesk

Espera-se que o servidor MCP suporte qualquer versão do Plesk suficientemente recente (não há limitações estritas) e qualquer sistema operacional (Linux ou Windows) que o Plesk suporte. No entanto, ele foi testado apenas no Plesk Obsidian 18.0.76, então prefira usar uma versão suportada do Plesk.

Obviamente, o acesso à API não deve estar desabilitado no servidor.

Requisitos do Servidor MCP

Você precisará do gerenciador de pacotes Python uv para executar o servidor. Consulte a documentação oficial para instruções de instalação.

Uso

Configure o servidor no seu mcp.json do VS Code ou equivalente (em outros agentes ou aplicativos) usando uma configuração 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"
            }
        }
    }
}

Você pode querer usar um arquivo de ambiente (por exemplo, via parâmetro "envFile") se o seu agente ou aplicativo suportar. Isso evitará colocar credenciais diretamente no arquivo de configuração.

Consulte uvx plesk-mcp@latest --help para detalhes sobre as opções disponíveis e variáveis de ambiente.

Uso Recomendado

Para melhor comportamento, é recomendado usar este servidor MCP em combinação com um servidor MCP de documentação. Selecione plesk-local-docs-mcp ou plesk-remote-docs-mcp. Isso permitirá que o agente obtenha informações mais precisas sobre o uso do Plesk quando necessário.

Você também pode anexar vários servidores Plesk de uma só vez, se necessário (por exemplo, para gerenciar vários servidores).

Aqui está um exemplo de configuração:

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

Desenvolvimento

Comando de execução do servidor MCP:

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

Antes do 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

Testes

Usando a Imagem Docker do Plesk

Se você não tem uma instância do Plesk, mas deseja testar este servidor MCP, você pode usar a imagem Docker do Plesk em vez disso:

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

A inicialização da imagem Docker não é instantânea, então aguarde cerca de um minuto antes de tentar conectar.

E então configure o servidor MCP como:

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

Sem Servidor Plesk (Modo Demonstração)

Alternativamente, execute em modo demonstração a partir das fontes (com respostas simuladas):

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

Testes automatizados

Os testes de unidade são executados com uv run pytest (na raiz do projeto e em cada subprojeto). Os testes de fumaça que exercitam serviços reais são ignorados por padrão e selecionados via -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