Coolify MCP Server

Deploy, diagnose and administer a self-hosted Coolify v4 instance from an MCP client

By Stu Mason (individual) TypeScript Local · stdio DevOps and monitoringCloud platforms

66 popularity score ★ 620 ↓ 2.5k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs COOLIFY_BASE_URL, COOLIFY_ACCESS_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add coolify -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> -- npx -y @masonator/coolify-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "@masonator/coolify-mcp"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "@masonator/coolify-mcp"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "coolify": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@masonator/coolify-mcp"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.coolify]
command = "npx"
args = ["-y", "@masonator/coolify-mcp"]

[mcp_servers.coolify.env]
COOLIFY_BASE_URL = "<COOLIFY_BASE_URL>"
COOLIFY_ACCESS_TOKEN = "<COOLIFY_ACCESS_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> coolify npx -- -y @masonator/coolify-mcp
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs COOLIFY_BASE_URL, COOLIFY_ACCESS_TOKEN. Replace each <NAME> with your value.

FirstTerminal
git clone https://github.com/StuMason/coolify-mcp.git
cd coolify-mcp && npm install
npm run build
Claude CodeTerminal
claude mcp add coolify -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "coolify": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "coolify": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "coolify": {
      "type": "stdio",
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
      ],
      "env": {
        "COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
        "COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.coolify]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"]

[mcp_servers.coolify.env]
COOLIFY_BASE_URL = "<COOLIFY_BASE_URL>"
COOLIFY_ACCESS_TOKEN = "<COOLIFY_ACCESS_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> coolify node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'

Settings 11

COOLIFY_BASE_URL Required: Address of your Coolify instance; falls back to http://localhost:3000 when unset.
COOLIFY_ACCESS_TOKEN Required: Coolify API token; COOLIFY_ACCESS_TOKEN_FILE or COOLIFY_INSTANCES can stand in for it.
COOLIFY_ACCESS_TOKEN_FILE Optional: Path to a file holding the token, re-read when it changes; wins over COOLIFY_ACCESS_TOKEN.
COOLIFY_INSTANCES Optional: JSON array of {name, url, token} to manage several instances.
CF_ACCESS_CLIENT_ID Optional: Cloudflare Access service token id, when Coolify sits behind Access.
CF_ACCESS_CLIENT_SECRET Optional: Cloudflare Access service token secret.
COOLIFY_MCP_ELICITATION Optional: Set to off to disable confirmation prompts on stdio.
COOLIFY_MCP_AUDIT Optional: on or off to override the per-call audit log on stderr.
MCP_TRANSPORT Optional: Set to http to start the HTTP server instead of stdio.
MCP_READONLY Optional: HTTP mode: register only read-only tools (default false).
MCP_REQUEST_STATE_KEY Optional: HMAC secret so pending confirmations survive a restart.

What it does

Coolify MCP Server is a third-party server, written by Stu Mason, that talks to the REST API of a Coolify v4 instance (the open-source, self-hosted PaaS). Through it an assistant can list and inspect servers, projects, applications, databases and services; create, update, move and delete them; deploy, roll back, start, stop and restart; edit environment variables, storages, scheduled tasks, backups and tags; manage private keys, GitHub apps and Hetzner/DigitalOcean cloud tokens; provision Hetzner servers; read container logs; and search a bundled copy of the Coolify documentation that works offline.

Most tools group related operations behind an `action` argument, so version 3.9.0 registers 46 tools; with two or more instances set in `COOLIFY_INSTANCES` a 47th, `list_instances`, appears and every tool takes an optional `instance`. Diagnostic tools (`diagnose_app`, `diagnose_server`, `find_issues`) accept a name, domain, IP or UUID, and `deploy` can wait until a deployment finishes and hand back the end of the log when it fails. It also ships three prompts and two `coolify://` resources, and a `doctor` subcommand that checks the configuration, reachability, token rights and Coolify version.

It runs locally over stdio through npx, as a one-click Claude Desktop extension, or as an HTTP container you deploy inside your own Coolify, where clients sign in with OAuth 2.1 and the Coolify token stays on that container. In the stdio code (src/index.ts at v3.9.0), `COOLIFY_BASE_URL` falls back to http://localhost:3000 when unset in single-instance mode, so a missing URL points at localhost rather than failing at start.

What it needs

RuntimeNode.js

Node.js with npx for the local way (the Claude Desktop .mcpb extension needs no Node install). A running Coolify instance, v4.0 to v4.3 are the tested range, and a Coolify API token; on Coolify v4.2+ a Member-role token can only read, and plaintext secrets need a token with sensitive-read scope. The remote way needs a container deployed in your Coolify with a public https domain.

Limits

Some actions need newer Coolify: moving resources and tags need v4.2+, rollback needs v4.3, and `storages` `host_path` is refused from Coolify 4.3.22. Volume backup schedules cannot be read back, and `backup_set` replaces the whole schedule. Confirmation prompts for destructive calls only appear on clients that support elicitation; over stdio, clients without it (its docs name Claude Desktop and claude.ai) get no prompt, and confirmations expire after ten minutes. The read-only switch `MCP_READONLY` is read only in HTTP mode; the stdio entry point in v3.9.0 always registers the write tools. Its docs advise one server per client for agencies, since a fleet is one trust domain.

Who it suits

Suits people who run Coolify themselves and want an assistant that can change things, not only report: deploys, env var edits, restarts, backups, and work across several instances from one connection, with stdio for clients that cannot speak HTTP. Its own README points those with one instance and read-only questions to Coolify's built-in MCP server at /mcp, which needs no install and keeps the token inside Coolify, and those scripting CI to the official Coolify CLI. Because it is not published by Coolify and holds a token that can delete resources, teams wanting only reads should give it a Member-role token or run it in HTTP mode with MCP_READONLY=true.

Tools 47

get_infrastructure_overview
Summary of servers, projects and resources on the instance
get_mcp_version
Version of this MCP server
get_version
Version of the Coolify instance
system
Health check, full resource listing, and turning the Coolify API on or off
diagnose_app
Status, logs and likely problems for one application by name, domain or UUID
diagnose_server
Health and problems for one server by name, IP or UUID
find_issues
Scan the whole instance for unhealthy resources
coolify_url
Dashboard link for an application, database, service, deployment, server, project, environment or key
restart_project_apps
Restart every application in a project, after confirmation
bulk_env_update
Set one env var across many applications
stop_all_apps
Emergency stop of all running applications, after confirmation
redeploy_project
Redeploy every application in a project
list_servers
List servers
get_server
Details of one server, credentials masked
validate_server
Run Coolify's server validation
server_resources
Resources running on a server
server_domains
Domains served by a server
list_destinations
List Docker destinations
projects
List, get, create, update or delete projects
environments
List, get, create or delete environments and verify an app's binding
list_applications
List applications as short summaries
get_application
Full details of one application
application
Create, update, move or delete applications and preview deployments
list_databases
List databases
get_database
Details of one database, passwords masked
database
Create (8 engines), update, move or delete databases
database_backups
Manage database backup schedules and executions
list_services
List services
get_service
Details of one service, credentials masked
service
Create, update, move or delete services and control their containers
control
Start, stop or restart an application, database or service
logs
Read container logs for an application, database or service
application_logs
Older application log reader, replaced by logs
tags
List, attach and detach tags (Coolify v4.2+)
env_vars
Create, read, update, delete and bulk-update env vars, values masked
storages
Manage persistent and file storages and volume backup schedules
scheduled_tasks
Manage scheduled tasks, view runs, or run one now
list_deployments
List deployments
deploy
Deploy, redeploy a PR preview or roll back, optionally waiting for the result
deployment
Get or cancel a deployment, list an app's deployments or rollback images
private_keys
Manage SSH private keys; key material is never returned
github_apps
Manage GitHub app connections and list their repos and branches
teams
List teams and their members
cloud_tokens
Manage and validate Hetzner and DigitalOcean tokens
hetzner
List Hetzner locations, server types, images and SSH keys, and create servers
search_docs
Search the bundled Coolify documentation index
list_instances
Show configured instances; present only in fleet mode

Similar servers