Coolify MCP

Servidor MCP para operações da API Coolify.

Documentação

coolify-mcp

npm version npm downloads license node version typescript CI Glama score

Servidor MCP para a API do Coolify - permite fluxos de implantação completos do zero à produção.

coolify-mcp demo

Tem como alvo a API do Coolify v4.1.2. Tipos e esquemas são gerados diretamente da especificação oficial do OpenAPI do Coolify, então as entradas das ferramentas sempre correspondem ao que a API realmente aceita.

Recursos

  • Fluxo de implantação completo: Crie projetos, ambientes, servidores e aplicativos do zero
  • 5 tipos de aplicativos: uma ferramenta createApplication cobre fontes de git público, GitHub App, Deploy Key, Dockerfile e Docker Image — além de implantações Docker Compose via createService (desde o Coolify v4.1, implantações compose são serviços)
  • Gerenciamento de ambientes: CRUD completo para variáveis de ambiente com mascaramento de segredos
  • Controle de implantação: Implante (opcionalmente aguardando o status final, com cauda de log em caso de falha), inicie, pare, reinicie aplicativos
  • Diagnóstico: diagnoseApp encontra um aplicativo por UUID, nome ou domínio e agrega status, implantações recentes, caudas de log de falhas, logs de execução e próximas ações sugeridas
  • Pesquisa de documentação: searchDocs realiza pesquisa de texto completo na documentação oficial do Coolify a partir de um índice local incluído — sem necessidade de rede
  • Segurança: Proteção contra escrita, ocultação de segredos e anotações MCP (readOnlyHint/destructiveHint) para que clientes possam aprovar automaticamente leituras e proteger chamadas destrutivas
  • Cobertura quase completa da API: bancos de dados (8 mecanismos, backups, ambientes), serviços, armazenamentos, tarefas agendadas, equipes, previews, servidores, chaves SSH e GitHub Apps
  • Eficiente em tokens: 65 ferramentas cujas definições custam cerca de 9 mil tokens de contexto, com validação rigorosa em tempo de execução contra esquemas gerados a partir da especificação OpenAPI do Coolify

Requisitos

  • Node 18+
  • Um token de API do Coolify (Configurações > API no seu painel do Coolify)

Instalação

Claude Desktop, um clique: baixe o coolify-mcp.mcpb da versão mais recente e arraste-o para Configurações → Extensões. Você será solicitado a informar a URL do seu Coolify e o token — sem instalação do Node, sem edição de JSON.

Via npm:

npm install -g @fndchagas/coolify-mcp
# or
npx -y @fndchagas/coolify-mcp

Início Rápido

CLI Claude Code

claude mcp add coolify \
  --env COOLIFY_BASE_URL="https://coolify.example.com/api/v1" \
  --env COOLIFY_TOKEN="<token>" \
  -- npx -y @fndchagas/coolify-mcp

CLI OpenAI Codex

codex mcp add coolify \
  --env COOLIFY_BASE_URL="https://coolify.example.com/api/v1" \
  --env COOLIFY_TOKEN="<token>" \
  -- npx -y @fndchagas/coolify-mcp

Ou edite o ~/.codex/config.toml:

[mcp_servers.coolify]
command = "npx"
args = ["-y", "@fndchagas/coolify-mcp"]
env = { COOLIFY_BASE_URL = "https://coolify.example.com/api/v1", COOLIFY_TOKEN = "<token>" }

Configuração Manual (~/.mcp.json)

{
  "mcpServers": {
    "coolify": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@fndchagas/coolify-mcp"],
      "env": {
        "COOLIFY_BASE_URL": "https://coolify.example.com/api/v1",
        "COOLIFY_TOKEN": "<token>",
        "COOLIFY_ALLOW_WRITE": "true"
      }
    }
  }
}

Variáveis de Ambiente

VariávelPadrãoDescrição
COOLIFY_BASE_URLobrigatórioURL da API do Coolify (ex.: https://coolify.example.com/api/v1)
COOLIFY_TOKENobrigatórioToken da API de Configurações > API do Coolify
COOLIFY_ALLOW_WRITEtrueHabilita operações de escrita (criar, atualizar, excluir, implantar)
COOLIFY_STRICT_VERSIONfalseFalha em caso de incompatibilidade de versão da API
COOLIFY_MCP_ELICITATIONonDefina como off para pular a confirmação humana em exclusões destrutivas (válvula de escape para clientes que anunciam elicitação, mas não a implementam)
MCP_TRANSPORTstdioTransporte: stdio, http, both
PORT7331Porta HTTP (ao usar transporte http)
MCP_HTTP_TOKENnão definidoToken Bearer obrigatório em solicitações /mcp (transporte HTTP). Defini-lo também altera o padrão de bind para 0.0.0.0
MCP_HTTP_HOST127.0.0.1 (0.0.0.0 com token)Interface à qual o transporte HTTP faz bind. Vincular além de loopback sem token exibe um aviso alto

Implantação do Zero

Com este MCP, você pode implantar um aplicativo do zero:

1. listProjects / createProject       → Get or create a project
2. listEnvironments / createEnvironment → Get or create an environment
3. listServers / createServer         → Get or create a server
4. listPrivateKeys / createPrivateKey → Get or create SSH keys (if needed)
5. createApplication (type: public)   → Create the application
6. applicationEnvs (action: upsert)   → Configure environment variables
7. deploy                             → Trigger deployment

Referência de Ferramentas

Projetos e Ambientes

FerramentaDescriçãoEscrita
listProjectsLista todos os projetos
createProjectCria um novo projeto
updateProjectAtualiza nome/descrição do projeto
deleteProjectExclui um projeto e todos os seus recursos
listEnvironmentsLista ambientes em um projeto
createEnvironmentCria um novo ambiente

Servidores e Infraestrutura

FerramentaDescriçãoEscrita
listServersLista todos os servidores
getServerObtém detalhes do servidor
createServerCria um novo servidor
validateServerValida conexão do servidor
listPrivateKeysLista chaves privadas SSH
createPrivateKeyCria uma nova chave SSH
listGithubAppsLista GitHub Apps configurados

Aplicativos - Leitura

FerramentaDescrição
listApplicationsLista todos os aplicativos (resumidos por padrão)
getApplicationObtém detalhes do aplicativo (segredos mascarados por padrão)
getLogsObtém logs de execução do aplicativo

Aplicativos - Criação

FerramentaDescriçãoEscrita
createApplicationCria um aplicativo; type seleciona a origem: public, private-github-app, private-deploy-key, dockerfile ou dockerimage. Campos de longo alcance vão em extra e são validados por tipo.

Implantações Docker Compose são criadas com createService passando docker_compose_raw — desde o Coolify v4.1 elas são serviços, não aplicativos.

Aplicativos - Gerenciamento

FerramentaDescriçãoEscrita
updateApplicationAtualiza configuração do aplicativo
deleteApplicationExclui um aplicativo
startApplicationInicia um aplicativo
stopApplicationPara um aplicativo
restartApplicationReinicia um aplicativo

Variáveis de Ambiente

FerramentaDescriçãoEscrita
applicationEnvsGerencia variáveis de ambiente do aplicativo: listar (mascaradas por padrão), criar, atualizar, upsert por chave, bulk_update, excluir

Variáveis de ambiente de bancos de dados e serviços têm suas próprias ferramentas: databaseEnvs e serviceEnvs.

Implantações

FerramentaDescriçãoEscrita
deployDispara uma implantação; wait: true consulta até o status final e retorna uma cauda de log em caso de falha
diagnoseAppDiagnostica um aplicativo por UUID, nome ou domínio: status, implantações recentes, cauda de log de falha, logs de execução, dicas
diagnoseServerDiagnostica um servidor por UUID, nome ou IP: detalhamento de status de recursos, domínios, dicas
listDeploymentsLista implantações em execução
getDeploymentObtém status e logs da implantação
listAppDeploymentsLista implantações de um aplicativo
cancelDeploymentCancela uma implantação em execução

Bancos de Dados

FerramentaDescriçãoEscrita
listDatabasesLista todos os bancos de dados
getDatabaseObtém detalhes do banco de dados
createDatabaseCria um banco de dados; type seleciona o mecanismo: postgresql, mysql, mariadb, mongodb, redis, keydb, dragonfly, clickhouse
updateDatabaseAtualiza configuração do banco de dados
deleteDatabaseExclui um banco de dados (volumes/configurações excluídos por padrão)
controlDatabaseInicia, para ou reinicia um banco de dados
databaseBackupsGerencia agendamentos e execuções de backup (listar/criar/atualizar/excluir/listar_execuções/excluir_execução)
databaseEnvsGerencia variáveis de ambiente do banco de dados (listar/criar/atualizar/bulk_update/excluir)

Serviços

FerramentaDescriçãoEscrita
listServicesLista serviços
getServiceObtém detalhes do serviço (segredos mascarados por padrão)
createServiceCria um serviço de um clique ou implantação Docker Compose
updateServiceAtualiza um serviço
deleteServiceExclui um serviço
controlServiceInicia, para ou reinicia um serviço
serviceEnvsGerencia variáveis de ambiente do serviço (listar/criar/atualizar/bulk_update/excluir)

Armazenamentos, Tarefas Agendadas e Previews

FerramentaDescriçãoEscrita
storagesGerencia volumes persistentes e montagens de arquivo para aplicativos, bancos de dados e serviços
scheduledTasksGerencia tarefas cron para aplicativos e serviços, incluindo histórico de execuções
deletePreviewExclui uma implantação de preview pelo ID da pull request

Equipes, Servidores e Git

FerramentaDescriçãoEscrita
teamsLista equipes, obtém a equipe atual e lista membros
updateServerAtualiza configuração do servidor
deleteServerExclui um servidor
getServerResourcesLista recursos em execução em um servidor
getServerDomainsLista domínios configurados em um servidor
getPrivateKeyObtém metadados da chave SSH (material da chave mascarado por padrão)
updatePrivateKeyAtualiza uma chave privada SSH
deletePrivateKeyExclui uma chave privada SSH
getGithubAppRepositoriesLista repositórios acessíveis a um GitHub App
getGithubAppBranchesLista branches de um repositório

Operações em Lote

FerramentaDescriçãoEscrita
getInfrastructureOverviewResumo em uma chamada de servidores, projetos, aplicativos (detalhamento de status), bancos de dados, serviços e implantações em execução
restartProjectAppsReinicia todos os aplicativos em um projeto ou ambiente (solicita confirmação)
redeployProjectDispara uma implantação para todos os aplicativos em um projeto ou ambiente (solicita confirmação)
stopAllApplicationsParada de emergência de todos os aplicativos em execução, opcionalmente por projeto (solicita confirmação, indicando o raio de impacto)

Outros

FerramentaDescrição
listResourcesLista todos os recursos com filtragem
searchDocsPesquisa de texto completo na documentação oficial do Coolify (índice incluído, sem rede)
getHealthVerifica se a API do Coolify está no ar

Recursos de Segurança

Proteção Contra Escrita

Desative todas as operações de escrita:

COOLIFY_ALLOW_WRITE=false

Ocultação de Segredos

  • Os valores das variáveis de ambiente são mascarados por padrão
  • As credenciais do banco de dados são ocultadas
  • Use showSecrets: true somente quando necessário

Reforço do Transporte HTTP

O transporte HTTP faz bind em 127.0.0.1 por padrão. Para expô-lo além de loopback, defina MCP_HTTP_TOKEN — toda solicitação para /mcp deve então conter Authorization: Bearer <token> (verificado em tempo constante) — e o bind muda para 0.0.0.0 (substituível com MCP_HTTP_HOST). Vincular a um host não-loopback sem token exibe um aviso alto: qualquer pessoa que consiga alcançar a porta controla sua instância do Coolify.

Confirmação Humana em Exclusões Destrutivas

Em clientes MCP que suportam elicitação (Claude Code, VS Code Copilot), excluir um projeto, aplicativo, banco de dados, serviço, servidor ou chave privada solicita sua confirmação primeiro, informando o que será perdido. Clientes sem elicitação se comportam exatamente como antes. Uma recusa, cancelamento ou tempo limite aborta a chamada; defina COOLIFY_MCP_ELICITATION=off para desativar totalmente os avisos.

Desenvolvimento

git clone https://github.com/frndchagas/coolify-mcp.git
cd coolify-mcp
npm install
npm run dev

Scripts

npm run dev            # Run in development mode
npm run build          # Build TypeScript
npm run generate       # Fetch the pinned OpenAPI spec and regenerate types

Versão Fixada do Coolify

A versão está definida em src/coolify/constants.ts. Para atualizar:

  1. Edite COOLIFY_VERSION em src/coolify/constants.ts
  2. Execute npm run generate

Listagens no Registro

Exemplos de Clientes MCP

Cliente HTTP

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';

const client = new Client({ name: 'coolify-client', version: '1.0.0' });
const transport = new StreamableHTTPClientTransport(
  new URL('http://localhost:7331/mcp')
);

await client.connect(transport);

// List all applications
const apps = await client.callTool({
  name: 'listApplications',
  arguments: {},
});
console.log(apps.structuredContent);

// Deploy an application
const deploy = await client.callTool({
  name: 'deploy',
  arguments: { uuid: 'your-app-uuid' },
});
console.log(deploy.structuredContent);

await client.close();

Cliente Stdio

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

const client = new Client({ name: 'coolify-client', version: '1.0.0' });
const transport = new StdioClientTransport({
  command: 'npx',
  args: ['-y', '@fndchagas/coolify-mcp'],
  env: {
    COOLIFY_BASE_URL: 'https://coolify.example.com/api/v1',
    COOLIFY_TOKEN: '<token>',
  },
});

await client.connect(transport);

const result = await client.callTool({
  name: 'getApplication',
  arguments: { uuid: 'your-app-uuid' },
});
console.log(result.structuredContent);

await client.close();

Licença

MIT