
Awesome Coolify
io.github.clezcodingPublished by GitHub account clezcodingv0.1.2Updated Oct 24, 2026
Coolify 4.1.x MCP server — deploy, diagnose, and manage apps, services, and databases
The publisher's own server: Awesome Tools
Overview
Lets an assistant deploy, diagnose, and manage Coolify applications, services, databases, and servers through action-based tools.
- What you can do
- Exposes Coolify 4.1.x operations as 19 action-based tools covering system health, resource discovery, diagnostics, application and deployment lifecycle, services, databases, projects, environments, servers, SSH keys, recipes, and offline docs search. It can trigger deploys, watch deployments, read bounded logs, manage environment variables, run database backups, and perform confirm-gated emergency actions. A multi-instance registry routes calls to different Coolify instances with per-call credentials.
- When to use it
- Use it when an assistant should operate or troubleshoot a self-hosted Coolify instance: deploying apps, checking fleet health, triaging incidents, managing env vars, or running database backups. It suits teams already running Coolify who want agent-driven ops rather than manual dashboard work.
- Requirements
- Node.js 24+ and a self-hosted Coolify instance on 4.1.x. An API token from Coolify Keys & Tokens. Single-instance setups set COOLIFY_URL and COOLIFY_TOKEN in the MCP env block; optional COOLIFY_VERIFY_SSL and COOLIFY_MCP_LOG. Multi-instance setups register instances in ~/.coolify-mcp/instances.json. Desktop clients only.
Installation
In SourceWeft
- Open Awesome Coolify in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
awesome-coolify-mcp
Operate Coolify from your coding agent.
Verify connectivity, discover infrastructure, create workloads, deploy, follow logs, diagnose incidents, and run gated emergency ops — across one or many self-hosted or Cloud instances —
straight from Cursor, Claude, VS Code, Windsurf, or any MCP-speaking agent.
🇩🇪 Deutsch · Coolify · Model Context Protocol · Install configurator ↗
[npm version] [npm downloads] [Node.js >= 24] [TypeScript] [Coolify API 4.1.x] [19 tools] [CI status] [Latest GitHub release] [MIT License]
Overview · Why · Features · Architecture · Quick start · Install · Cloud · Tools · Prompts · Safety · Roadmap
[Add awesome-coolify-mcp to Cursor] [Install awesome-coolify-mcp in VS Code]
One click installs with placeholder credentials — see Install for the full walkthrough, or use the browser configurator to fill in real values safely.
📋 Table of contents
- Overview
- Why awesome-coolify-mcp
- Features
- How it works
- Quick start
- Install
- Coolify Cloud
- Supported clients
- Environment variables
- MCP Prompts
- Tools reference
- Safety model
- Structured errors & retries
- Example agent workflows
- Status today
- Coming soon
- Local development
- Links
🔭 Overview
Self-hosted Coolify is one of the best open-source alternatives to Heroku/Vercel-style PaaS platforms — but wiring it up to an AI coding agent has historically meant piecing together several small, overlapping community MCP integrations, each with its own schema, its own error format, and its own idea of what "safe" looks like.
awesome-coolify-mcp 1.1.4 replaces that patchwork with a single, community-maintained MCP server that speaks Coolify's REST API 4.1.x through a clean, action-based tool surface. Source, docs, and npm distribution live in one public repo — clezcoding/awesome-coolify — while the installable package stays awesome-coolify-mcp. Instead of memorizing dozens of near-identical tool names, your agent calls one of 19 tools with an action field:
Under the hood, every call goes through the same request pipeline: Zod-validated input, retrying HTTP client, secret-aware output masking, and structured error envelopes with recovery hints — so your agent fails gracefully instead of guessing.
[!NOTE] This is a community project built for people who run their own Coolify instances. It is not affiliated with or endorsed by Coolify Labs.
🆚 Why awesome-coolify-mcp
Today, the shipped surface covers day-2 operations and infrastructure creation: verify connectivity, discover fleets, deploy and watch builds, inspect bounded logs, diagnose incidents, run gated emergency ops, and manage applications, services, databases, SSH keys, servers, projects, environments, backups, and environment variables.
✨ Features
[Feature highlights: action-based tools, safety gates, diagnose, deploy and logs]
- 19 action-based tools — call
application({ action: "deploy", uuid })instead of hunting through dozens of granular tool names. The registered surface issystem,meta,resource,diagnose,application,emergency,deployment,service,database,private_key,instance,manifest,server,project,environment,docs,recipe,setup, andintelligence. - Multi-instance registry & routing — register every Coolify instance you own in
~/.coolify-mcp/instances.jsonvia theinstancetool; per-call credential resolution with no cross-instance leakage. - Coolify Cloud aware —
instance({ action: "cloud-info" })for local discovery, team-scoped tokens, and structured cloud error codes (COOLIFY_CLOUD_FORBIDDEN,COOLIFY_CLOUD_UNSUPPORTED). - Local manifest cache —
.coolify/manifest.jsonsync viamanifest({ action: "sync" }), best-effort auto-hooks on app/service/DB mutations, and_meta.manifestWarningwhen the cache is stale. - Server branding — MCP list icon via
serverInfo.icons(embedded data URI + jsDelivr CDN entries fromdocs/assets/). - Ops workflows that mirror real incidents — a single
system.infrastructure_overviewcall for the big picture, fuzzyresource.findwhen you only remember a name or domain,diagnose.app/diagnose.serverfor a specific suspect, anddiagnose.scanwhen you just know something is wrong fleet-wide. - Deploy lifecycle agents can drive — start/stop/restart, force rebuild,
deployment.watchwith bounded backoff,deployment.logsfor builds, boundedapplication.logs, and runtime follow with idle/overall timeouts. - Full workload CRUD — create, inspect, update, delete, and operate applications, services, and databases; discover live one-click IDs with
service.list-types. - Recipes and guided setup — create git apps, app-plus-database stacks, and one-click services; run
setup.preflight,setup.wire, orsetup.resume; install four matching IDE workflow skills. - Safety by default, not by convention — emergency mutations require an explicit
confirm: true; sensitive keys (password,token,secret,private,env) render as***unless you opt in withreveal: true. - Agent-friendly failure modes — every error is a parseable envelope with a
code, a humanmessage, andrecoveryHints; transient network/429/5xx failures retry automatically with exponential backoff. - Broad client coverage out of the box — Cursor, VS Code / GitHub Copilot, Claude Desktop, Claude Code, Windsurf, and 15+ more via the install configurator.
🏗️ How it works
The server itself is intentionally boring: it holds no long-lived state and never touches your IDE's config files. Your MCP host (Cursor, Claude, VS Code, …) injects COOLIFY_URL and COOLIFY_TOKEN through its MCP config's env block — or you register named instances in ~/.coolify-mcp/instances.json via the instance tool. The process reads credentials from its environment (or the registry) and forwards authenticated requests to your Coolify instance over HTTPS.
🚀 Quick start
Prerequisites
- Node.js 24+ (Active LTS; CI uses Node 24)
- A self-hosted Coolify instance on 4.1.x
- An API token from Coolify → Keys & Tokens (authorization docs)
Run it directly with npx — no global install needed:
Wire the two required environment variables into your MCP host (see Install for every client). Once connected, a minimal smoke test looks like this:
[!NOTE] Multi-instance users: register each Coolify instance first with
instance({ action: "add", name, url, token }), then callsystem({ action: "verify" }). Single-instance setups can skip the registry and useCOOLIFY_URL/COOLIFY_TOKENin MCP env.
[!IMPORTANT] Emergency actions (
stop_all,redeploy_project,restart_project) requireconfirm: true. Call them withoutconfirmfirst — you'll get awould_affectpreview and no mutation runs. Only passreveal: truewhen you genuinely need plaintext secrets back.
📦 Install
There are three equally supported paths — pick whichever fits your workflow.
1. One-click deeplink
Best when you already have your Coolify URL and token handy. Placeholder credentials work fine too — you'll be prompted to fill them in, or you can swap them afterwards.
[Add awesome-coolify-mcp to Cursor] [Install awesome-coolify-mcp in VS Code]
How these links work (click to expand)
Both editors implement a protocol handler that reads a JSON server configuration straight out of the URL:
Clicking the button opens your editor, shows the server it's about to add, and lets you review or edit the command/env before accepting — nothing is installed silently.
2. Install configurator (GitHub Pages)
Use the browser configurator to type in your real COOLIFY_URL / COOLIFY_TOKEN and generate a ready-to-paste snippet for your exact client — JSON, TOML, or YAML depending on what that client expects.
Everything runs client-side in your browser. Your token is never sent to a backend, logged, or stored anywhere but the config file you paste it into.
3. Manual MCP config
Paste this into your host's MCP configuration file. Cursor example (~/.cursor/mcp.json for global, or .cursor/mcp.json in a project):
A ready-made copy-paste template also lives at docs/mcp.example.json.
[!TIP] Using Coolify Cloud? Generate a team-scoped token and follow the registry setup in docs/en/cloud.md.
IDE skills (Cursor, Claude Code, Codex)
Install Coolify workflow skills for Cursor, Claude Code, and Codex:
After MCP install, run setup({ action: "preflight" }) or see the Setup guide for gh preflight, project linkage, and greenfield provisioning.
🖥️ Supported clients
The install configurator covers a much wider matrix — OpenCode, Codex CLI, Gemini CLI, Cline, Kilo Code, Goose, LM Studio, Hermes Agent, Kimi Code, Google Antigravity, OpenClaw, and more — with the correct config shape for each.
[!NOTE] Claude Desktop currently uses manual JSON or configurator output.
🔐 Environment variables
Credentials are read from the process environment (your IDE's MCP env block) or an optional local .env file when running the CLI directly. They are never echoed back inside tool responses.
[!NOTE] With the multi-instance registry (
~/.coolify-mcp/instances.json),COOLIFY_URLandCOOLIFY_TOKENbecome optional — theinstancetool resolves credentials per call. Env vars remain the simplest path for single-instance setups.
☁️ Coolify Cloud
awesome-coolify-mcp works with Coolify Cloud using the same 19 tools — team-scoped tokens, structured cloud error codes (COOLIFY_CLOUD_FORBIDDEN, COOLIFY_CLOUD_UNSUPPORTED), and local instance action cloud-info for discovery.
Run instance({ action: "cloud-info" }) before your first Cloud session — it returns isCloud, resolved url, credential source (registry | env | infer), knownLimits, and a docs link. No live API call.
Full setup, smoke test, and known limits → docs/en/cloud.md
💬 MCP Prompts
Six parameterized workflow prompts return numbered step guidance (English bodies) that orchestrate existing tools. Most arguments are optional — open any prompt without prefill.
Prompt handlers never read .coolify/manifest.json from disk — they steer the agent to resolve UUIDs from manifest or ask the user. Playbooks never auto-set confirm: true.
🧰 Tools reference
Every domain is exposed as one MCP tool with an action discriminator, so your agent's tool list stays short while the capability surface stays wide.
🖥️ system — connectivity & overview
Your first call in any session: is Coolify reachable, and what does the fleet look like right now?
🏷️ meta — server identity
🔎 resource — discovery
For when you know roughly what you're looking for but not its exact UUID.
🩺 diagnose — investigation
The tool you reach for when something feels wrong but you don't yet know what.
🚀 application — app operations
📈 deployment — deploy tracking
🛡️ Deploy guard (preflight + rollback)
⏱️ Watch — bounded deploy monitoring
After application.deploy with wait: false, call deployment.watch — do not loop deployment.get manually.
The shipped IDE skill packs use this same bounded watch flow and document timeout recovery.
🧩 service / database — sidecar lifecycle
🍳 recipe — multi-resource orchestration
One MCP call to stand up common workload patterns — application + database wiring, git apps, or validated one-click services.
Safety: Recipe creates are intentional — no confirm gate. No dry-run / preview. Partial failure does not auto-rollback; created UUIDs are returned in error.data. Connection strings are masked unless reveal: true. recommend is read-only / advisory.
Also use service.list-types to discover valid one-click type IDs before create-one-click.
🌱 Resource environment variables (envs:*)
Manage Coolify runtime configuration on applications, services, and databases through envs:* actions on the existing domain tools — no separate env MCP tool.
Confirm gates: envs:delete and envs:bulk-update always require confirm: true on all three tools. On application only, envs:sync requires confirm: true when applying (dry_run: false, the default) or when prune: true. envs:promote requires confirm: true when applying (dry_run: false).
Reveal policy: Env values render as *** by default. Pass reveal: true only after the human explicitly asks for plaintext — the agent must not auto-set reveal: true.
envs:sync semantics (application only): Supply exactly one of env_file (local path) or env_content (inline .env text). dry_run: true returns a diff (added, updated, unchanged, removed, optional conflicts) with no API writes; default dry_run: false applies changes. Remote keys missing locally are never deleted unless prune: true (also requires confirm: true). When local and remote values differ, set conflict_policy to overwrite, keep_remote, or abort after asking the human — apply with conflicts and no policy returns COOLIFY_CONFIRM_REQUIRED.
envs:promote semantics (application only, same instance): Product docs may say env.promote; the implemented action is application.envs:promote. Compare env vars between source_uuid and target_uuid (two applications in one Coolify instance — no cross-instance fan-out). Default dry_run: true returns preview buckets (only_in_source, only_in_target, value_mismatches) plus structured promotion_suggestions with follow-up tool/action hints; values are masked unless reveal: true. Applying copies into the target requires confirm: true. Default conflict_policy is keep_remote — mismatched target keys are skipped unless the human opts into overwrite or abort.
💾 Database backups (backup:*)
Configure, list, update, delete, and trigger backup schedules — and inspect execution history — on the existing database tool. No separate backup MCP tool.
Parent identity: All backup actions require the parent database via uuid or name. Schedule-scoped actions (backup:update, backup:delete, backup:now, backup:history) also require scheduled_backup_uuid.
Confirm gates: backup:delete requires confirm: true — otherwise COOLIFY_CONFIRM_REQUIRED. delete_s3 defaults false (config-only delete). When delete_s3: true, deletion still requires confirm: true — purging S3 artifacts is treated as destructive.
Frequency (Pitfall 1): backup:create accepts OpenAPI named presets (every_minute, hourly, daily, weekly, monthly, yearly) or a cron expression. backup:update accepts presets only — passing cron on update returns COOLIFY_VALIDATION_ERROR.
backup:now semantics: Maps to Coolify PATCH with { backup_now: true } on the schedule — no separate trigger endpoint. Requires scheduled_backup_uuid.
Reveal policy: S3-related credentials in backup config responses are masked as *** by default. Pass reveal: true only after the human explicitly asks for plaintext — the agent must not auto-set reveal: true.
Out of scope (v2.x+): Backup execution delete, restore/import from backup, and S3 storage destination CRUD are not available in this release.
🔑 private_key — SSH key CRUD
Manage Coolify private keys with PEM content masked by default.
🖧 server — server CRUD & validation
📁 project — project CRUD
🌍 environment — environment CRUD
📚 docs — offline guides
🚨 emergency — high-impact ops (gated)
Reach for these only when you mean it — every action below is behind a confirmation gate.
🗂️ instance — multi-instance registry
Manage named Coolify instances in ~/.coolify-mcp/instances.json. Per-call credential resolution — no cross-instance leakage.
📜 manifest — local cache
Read/write/sync .coolify/manifest.json — a workspace cache, not source of truth. Remote wins on UUID conflict.
[!NOTE]
manifest.auditcompares local.coolify/manifest.jsonvs live Coolify inventory for the scoped instance. Findings name follow-up actions such asmanifest.syncormanifest.upsert— hints are advisory only; nothing auto-heals. Keep usingmanifest.difffor the raw structural reconciliation report. Best-effort auto-hooks update the manifest after app/service/DB mutations. Stale UUID 404s elsewhere surface_meta.manifestWarning— runmanifest({ action: "sync" })to reconcile.
🧭 setup — guided project wiring
wire never auto-pushes. The setup flow pauses cleanly when gh authentication is missing and resumes from completed steps.
🎨 Branding (serverInfo.icons)
The MCP server advertises icons in initialize via an embedded PNG data URI (primary) and jsDelivr CDN URLs for mcp-icon-192.png and favicon-32.png. Cursor may still show a letter fallback — see maintainer verify record. Not a Coolify API call.
🛡️ Safety model
Confirmation gate
Destructive emergency actions follow a strict two-step pattern:
- Call with
confirmomitted orfalse→ you get back awould_affectpreview and error codeCOOLIFY_CONFIRM_REQUIRED— nothing is mutated. - Call again with
confirm: true→ the action actually executes.
Regular app/service/database mutations (start, stop, deploy, …) are not behind this gate — they simply follow Coolify's own API semantics, since they're scoped to one resource rather than your whole fleet.
Environment variables: envs:delete and envs:bulk-update require confirm: true on application, service, and database. envs:sync apply (dry_run: false) and envs:sync with prune: true require confirm: true on application only. dry_run: true sync previews never mutate. envs:promote apply (dry_run: false) requires confirm: true on application; default conflict_policy is keep_remote.
Drift & heal (read-only audit, preview-first promote): manifest.audit is advisory-only — it never writes manifest or live state. application.envs:promote (product name env.promote) previews by default; values stay masked unless reveal: true. Both stay within one Coolify instance per call.
Deploy guard (advisory preflight, confirm-gated rollback): deployment.preflight is read-only and returns a risk_score with four named factors — no external DNS/HTTP probes. deployment.rollback requires confirm: true before mutating; git rollbacks PATCH the target commit then POST /deploy (MCP composite, not a Coolify rollback API).
Secret masking
- Keys matching
password,token,secret,private, orenvrender as***by default in tool output. - Pass
reveal: trueonly when you explicitly need plaintext — for example, to copy an env var into another system. Ask the human first before settingreveal: trueon anyenvs:*call. - Log line bodies are not masked. Treat raw logs like you would any other sensitive output: don't paste them into long-lived agent memory or public tickets.
[!WARNING] Registry files (
~/.coolify-mcp/instances.json) are written with0o700directory and0o600file permissions. Tokens are never echoed in tool output unless you explicitly passreveal: true.
⚠️ Structured errors & retries
Every API failure comes back as a parseable envelope your agent can reason about, instead of a raw stack trace:
Transient failures (HTTP 429, 5xx, or network errors) retry automatically up to 3 times with exponential backoff (1s → 2s → 4s) before giving up and returning the error to your agent.
💬 Example agent workflows
"Is my Coolify reachable, and what do I have?"
"Find the nginx app, deploy it, then show me the logs."
"Something feels wrong across the fleet."
"Emergency: stop everything, but let me see the blast radius first."
"Multi-instance: list registered instances and verify each."
✅ Status today
Package 1.1.4 ships 19 tools and six MCP prompts for Coolify API 4.1.x:
Capability discovery & build logs:
system({ action: "version" })returnscoolifyVersion(replacing the legacyversionfield),mcpVersion, and acapabilitiesmap of Coolify 4.1.2 feature flags. For app triage + bounded runtime tail in one call, usediagnose({ action: "logs", mode: "full", uuid: "..." })— checkcapabilities.diagnose_logs. For Log Brain pattern triage, usediagnose({ action: "analyze", uuid: "..." })— checkcapabilities.diagnose_analyze. For advisory stack picks from the live catalog, userecipe({ action: "recommend", stack: "..." })— checkcapabilities.recipe_recommend. For instance health, dependency graph, impact, and janitor/cleanup, useintelligence({ action: "scorecard" | "graph" | "impact" | "janitor" | "cleanup", ... })— checkcapabilities.intelligence_scorecard(and siblingintelligence_*keys);cleanuprequiresconfirm: true. For manifest drift audit and cross-app env promote, usemanifest({ action: "audit" })andapplication({ action: "envs:promote", source_uuid, target_uuid, ... })— checkcapabilities.manifest_auditandcapabilities.envs_promote(MCP composites over existing reads/env CRUD, not Coolify-native REST endpoints). For deployment build logs, preferdeployment({ action: "logs", deployment_uuid: "..." })(orapplication_uuidto resolve the newest deployment). Theapplication.logspath withdeployment_uuidstill works for back-compat. For runtime log follow, useapplication({ action: "logs", uuid: "...", follow: true })— bounded MCP polling until idle or timeout; checkcapabilities.application_logs_followviasystem.version.
[!WARNING] Coolify 4.1.x does not expose stable service or database log endpoints. This server therefore does not claim or register service/database log actions. Use application runtime logs and deployment build logs until compatible upstream APIs are available.
🔮 Coming soon
Future work stays bounded by verifiable upstream and repository constraints:
- Add service/database logs when compatible Coolify APIs are stable and available.
- Close tracked REST mappings in
docs/COVERAGE.mdwhere they add useful agent workflows. - Revisit cross-instance fan-out only with explicit rate-limit and credential-isolation guarantees.
No release date or compatibility promise is attached to these boundaries. Use GitHub Issues for concrete requests.
🛠️ Local development
Logs go to stderr only — stdout is reserved exclusively for the MCP protocol.
The maintainer publish flow (build → pack --dry-run → publish) is documented in CONTRIBUTING.md.
[!NOTE] Maintainers can run live UAT against a real Coolify instance with
npm run uat:live. See CONTRIBUTING.md — Live UAT Harness for prerequisites and report output — do not duplicate the runbook here.
🔗 Links
Source: README.md at commit d891bb8
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Awesome integrations
Awesome Tools
tools.awesomeOfficial publisher
Search a curated directory of SaaS and AI tools, read categories and tags, submit your own product, and verify a backlink badge.

Awesome JEV
Published by GitHub account daftAI2026
Awesome JEV's hosted MCP server; no sign-in required; Streamable HTTP; 2 tools.

Awesome Report
Published by GitHub account ks0430
Lets an assistant publish its findings as a clean, shareable web page with tables, charts and diagrams.

Awesome Agent Skills
Published by GitHub account shadowrootdev
A local MCP server that gives an assistant a catalog of 100+ curated AI agent skills, letting it list, inspect, invoke and refresh them.

Awesome Copilot MCP Server
Published by GitHub account microsoft
A local MCP server that retrieves GitHub Copilot customization files from the Awesome Copilot repository for use in an assistant.