/ Directory / Playground / coolify-mcp
● Community StuMason ⚡ Instant

coolify-mcp

by StuMason · StuMason/coolify-mcp

Ops your self-hosted Coolify PaaS through chat — deploy apps, spin up databases, tail logs, rotate env vars — with 38 tools tuned to fit small context windows.

Coolify MCP is a TypeScript server that wraps the Coolify API with 38 opinionated, token-efficient tools. Responses are stripped down 90-99% compared to the raw API, so you can actually hold a deploy conversation without context collapse. Great for self-hosters who want ChatOps without the ops.

Why use it

Key features

Live Demo

What it looks like in practice

coolify.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "coolify-mcp"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "coolify-mcp"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "coolify-mcp"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": [
        "-y",
        "coolify-mcp"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "coolify",
      "command": "npx",
      "args": [
        "-y",
        "coolify-mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "coolify": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "coolify-mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add coolify -- npx -y coolify-mcp

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use coolify-mcp

Deploy a new app to Coolify from a Git URL by chat

👤 Solo devs, indie hackers self-hosting ⏱ ~10 min beginner

When to use: You have a new side project on GitHub and want it live on your VPS in under 5 minutes without clicking through Coolify's UI.

Prerequisites
  • Running Coolify instance — coolify.io install script on your VPS
  • COOLIFY_ACCESS_TOKEN — Coolify > Settings > API > Create Token
Flow
  1. Create the app
    Create a new Coolify app in project 'side-projects' on server 'hetzner-fsn1'. Source: https://github.com/me/my-app. Build pack: Nixpacks. Port: 3000.✓ Copied
    → App created with a UUID returned
  2. Set env vars
    Set these env vars on the app: DATABASE_URL=..., SESSION_SECRET=..., NODE_ENV=production.✓ Copied
    → Env vars saved
  3. Deploy and watch logs
    Deploy the app. Tail the build log; tell me when it's healthy or if it crashes.✓ Copied
    → Live build log + final success/fail verdict

Outcome: A new HTTPS app running on your VPS in ~5 minutes, all from chat.

Pitfalls
  • Forgot to set a domain; Coolify uses an ugly auto-generated one — After deploy, ask: 'Add custom domain app.example.com with HTTPS'. Coolify auto-provisions Let's Encrypt.
Combine with: github

Spin up a managed Postgres for your new app in one prompt

👤 Full-stack devs ⏱ ~5 min beginner

When to use: Your app needs a DB and you don't want to shell in, docker run, and remember backup cron.

Flow
  1. Create the database
    Create a Postgres 16 database named 'myapp-prod' in project 'side-projects' with 2GB RAM, daily backups retained 7 days.✓ Copied
    → Database created, credentials returned
  2. Connect it to your app
    Add the DATABASE_URL for this DB as an env var on app 'my-app', and redeploy.✓ Copied
    → Env var set + redeploy triggered

Outcome: Managed Postgres with scheduled backups, wired into your app.

Pitfalls
  • Default Postgres accepts connections only from Coolify network — Set Public toggle via the MCP if you need external access — and open only specific IPs
Combine with: postgres

Diagnose and recover from a production app crash from your phone

👤 Solo ops, small teams ⏱ ~10 min intermediate

When to use: Your app is down and you're away from your desk. You have Claude on your phone and your Coolify token.

Flow
  1. Check health
    Show me the status of all apps in project 'prod'. Anything unhealthy?✓ Copied
    → Per-app status list with reds flagged
  2. Look at logs
    Tail the last 200 lines of app 'api-server'. What's the error?✓ Copied
    → Log excerpt + probable cause
  3. Roll back or restart
    Restart the app. If it crashes again within 2 minutes, redeploy the previous commit.✓ Copied
    → Restart issued; state monitored

Outcome: Recovered service without needing a laptop.

Pitfalls
  • Restart won't fix a bad deploy — you'll just loop — Tell Claude to look at deploy history and roll back to the last healthy commit if restart doesn't help
Combine with: sentry

Rotate a shared secret across every app in a project

👤 Small DevOps teams ⏱ ~10 min intermediate

When to use: You rotated an API key (Stripe, Sentry DSN, etc.) and 6 apps all reference it.

Flow
  1. List affected apps
    In project 'prod', list all apps that have the env var 'STRIPE_SECRET_KEY'.✓ Copied
    → List of matching apps
  2. Bulk update and redeploy
    Update STRIPE_SECRET_KEY to [new value] on all those apps, then trigger redeploy for each with a 30-second stagger.✓ Copied
    → Per-app update + redeploy report

Outcome: Fleet-wide secret rotation in one conversation.

Pitfalls
  • Staggered redeploy still causes brief downtime — If zero-downtime required, use Coolify's rolling deploy mode per app

Combinations

Pair with other MCPs for X10 leverage

coolify + github

When a new repo is ready, deploy it to Coolify and comment the URL back on the PR

Take repo me/new-project. Deploy it to Coolify under project 'preview', then comment the preview URL on the main branch README.✓ Copied
coolify + sentry

When Sentry shows a spike on a Coolify-hosted app, redeploy the previous version

If Sentry issue count for app 'api-server' doubles in 10 min, roll back the Coolify deploy to previous commit.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
list_servers Discover attached servers before creating resources 1 API call
list_applications project_uuid?: str Find existing apps; scope to a project for less noise 1 API call
create_application source, server, project, build_pack, port, ... Spin up a new app from Git 1 API call
deploy_application app_uuid: str Kick off a deploy; returns immediately, poll status 1 API call + build time
get_application_logs app_uuid, tail?: int Debug a running or failing app 1 API call
update_env_variable app_uuid, key, value, is_preview?: bool Change an env var; does not auto-redeploy 1 API call
create_database engine, name, project, server, config Provision a new managed DB (Postgres, MySQL, Redis, MongoDB, etc.) 1 API call
search_docs query: str Look up Coolify feature usage without leaving the chat free

Cost & Limits

What this costs to run

API quota
Bounded by Coolify instance — no formal rate limit, but keep calls sane
Tokens per call
List calls ~500-2000 tokens (optimized); detail calls ~200-1000
Monetary
Free, MIT. Coolify itself is free & self-hosted.
Tip
Use search_docs before guessing — it's cheaper than Claude trial-and-error-ing a feature it's unsure about.

Security

Permissions, secrets, blast radius

Minimum scopes: A Coolify API token scoped to the team you want to manage
Credential storage: COOLIFY_ACCESS_TOKEN env var on the machine running MCP client
Data egress: Direct to your Coolify instance; your Coolify handles everything else
Never grant: Share the token — it's equivalent to full control of your PaaS

Troubleshooting

Common errors and fixes

401 Unauthorized

Token invalid or expired. Regenerate in Coolify > Settings > API and update the env var.

Verify: curl -H 'Authorization: Bearer $TOKEN' $COOLIFY_URL/api/v1/servers
Deploy stuck in 'queued'

Check if the Coolify server has free CPU/disk. Also confirm the build queue isn't blocked by a previous hung deploy.

Verify: Use `list_deployments` tool and cancel stale ones
create_application returns 422 build_pack invalid

Valid values are: nixpacks, static, dockerfile, dockercompose. Case sensitive.

Custom domain shows cert error

DNS must point to the Coolify server before TLS can be issued. Verify A record, then ask Claude to trigger the LE issuance retry.

Verify: dig app.example.com

Alternatives

coolify-mcp vs others

AlternativeWhen to use it insteadTradeoff
Dokploy MCPYou're on Dokploy instead of CoolifySimilar feature set; Dokploy is the closest competitor
Caprover / Dokku CLI via ssh-managerYou use Caprover or Dokku and don't have a dedicated MCPDrive via SSH commands; less ergonomic but works anywhere

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills