applicationEnvs
Manage environment variables for an application. Actions: list (secrets masked unless showSecrets), create, update, upsert (create or update by key), bulk_update (pass envs array), delete (needs env_uuid).
Run a Coolify estate from the client — deploy an application from a repo, stand up a database with backups, and diagnose the one that is down without assembling the sequence yourself.
LABSCO SUMMARY
One environment variable separates an agent that can describe the estate from one that can delete a project — but it is on by default, so switching it off is a decision you have to make rather than one made for you. Above that, the estate-wide operations request confirmation on clients that support it, and the stop-everything call states its blast radius when it does. The diagnose tools are the ones worth knowing exist: the app diagnostic folds current status, the latest deployments, the failed deployment's log tail and recent runtime logs into a single call — the sequence you would otherwise assemble by hand while something is down.
A Coolify client covering the deployment workflow end to end: servers, projects, applications, databases, services, environment variables, storages, scheduled tasks and deployments. Its types and schemas are generated from Coolify's own OpenAPI spec, so tool inputs match what the API actually accepts.
Node 18 or newer, your Coolify instance's API URL in COOLIFY_BASE_URL, and a token from its API settings in COOLIFY_TOKEN. Writes are enabled by default — set COOLIFY_ALLOW_WRITE to false if this install should only ever read. An SSH private key must be registered in Coolify before a server can be created, and a GitHub App configured before a private repository can be deployed through one. Raise your client's tool timeout if you deploy with the wait option, since it polls until the deployment reaches a terminal state.
One command plus a key — npm install -g @fndchagas/coolify-mcp, then supply credentials
USE CASES
One call for servers, projects, applications with their status breakdown, databases, services and anything mid-deployment.
List what the GitHub App can see, create the application against the right branch, and deploy it, waiting for the terminal status.
Ask by uuid, name or domain and get status, recent deployments, the failed deployment's log tail and runtime logs together, with next actions.
Create the engine you need, set its environment, and put a cron backup with retention behind it in the same session.
List the variables masked, upsert the one that changed by key, and redeploy.
Restart or redeploy everything in the project in one operation — the tool asks for confirmation first on clients that can.
Search the bundled documentation index and get the canonical page URL back without leaving the session.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
applicationEnvsManage environment variables for an application. Actions: list (secrets masked unless showSecrets), create, update, upsert (create or update by key), bulk_update (pass envs array), delete (needs env_uuid).
cancelDeploymentCancel a running deployment by UUID.
controlDatabaseStart, stop, or restart a database by UUID.
controlServiceStart, stop, or restart a service by UUID.
createApplicationCreate a new application. type selects the source: 'public' (public git repo), 'private-github-app' (private repo via GitHub App, needs github_app_uuid), 'private-deploy-key' (private repo via SSH deploy key, needs private_key_uuid), 'dockerfile' (raw Dockerfile content in dockerfile), 'dockerimage' (prebuilt image, needs docker_registry_image_name and ports_exposes). Git-based types also need git_repository, git_branch, and build_pack. All types need project_uuid, server_uuid, and environment_name or environment_uuid (one is enough). Any other Coolify application field (install/build/start commands, base_directory, health checks, resource limits, ...) can be passed in extra; fields not valid for the chosen type are ignored.
createDatabaseCreate a database. type selects the engine: postgresql, mysql, mariadb, mongodb, redis, keydb, dragonfly, or clickhouse. Requires project_uuid, server_uuid, and environment_name or environment_uuid (one is enough). Engine-specific fields (versions, credentials, memory limits, ...) can be passed in extra and are validated per engine.
createEnvironmentCreate a new environment in a project. Requires the project UUID.
createPrivateKeyCreate a new SSH private key. The private_key field should contain the full PEM-encoded key.
createProjectCreate a new Coolify project. Returns the project UUID.
createServerCreate a new server. Requires a private key UUID for SSH access.
createServiceCreate a one-click service (database, cache, etc.) or a Docker Compose deployment (pass docker_compose_raw with the YAML content). Requires project_uuid, server_uuid, and environment_name (or environment_uuid). Since Coolify v4.1, Docker Compose deployments are services, not applications.
databaseBackupsManage scheduled backups for a database. Actions: list, create, update, delete (backup schedules), list_executions, delete_execution. create/update take frequency (cron expression) plus optional fields (enabled, save_s3, s3_storage_uuid, databases_to_backup, dump_all, retention settings via extra).
databaseEnvsManage environment variables for a database. Actions: list (secrets masked unless showSecrets), create, update, bulk_update (pass envs array), delete (needs env_uuid).
deleteApplicationDelete an application by UUID. Optionally delete volumes, configurations, and connected networks.
deleteDatabaseDelete a database by UUID. By default Coolify also deletes configurations, volumes, and connected networks and runs docker cleanup; pass the flags as false to keep them.
deletePreviewDelete a preview deployment of an application by pull request id.
deletePrivateKeyDelete an SSH private key by UUID. Not recoverable from Coolify once gone.
deleteProjectDelete a project by UUID. This will delete all environments and resources in the project.
deleteServerDelete a server by UUID.
deleteServiceDelete a service by UUID. By default Coolify also deletes configurations, volumes, and connected networks and runs docker cleanup; pass the flags as false to keep them.
deployTrigger a deployment for an application by UUID or tag. With wait=true, polls until every triggered deployment reaches a terminal status (finished/failed/cancelled) and returns a log tail for failures — raise your MCP client's tool timeout when waiting on long builds.
diagnoseAppDiagnose an application by UUID, name, or domain. Aggregates current status, the latest deployments, a log tail from the most recent failed deployment, recent runtime logs, and suggested next actions in one call.
diagnoseServerDiagnose a server by UUID, name, or IP: lists the resources running on it with a status breakdown, configured domains, and suggested next actions.
getApplicationGet application details by UUID (optional field selection).
getDatabaseGet database details by UUID.
getDeploymentGet deployment status and logs by UUID.
getGithubAppBranchesList branches of a repository accessible to a GitHub App.
getGithubAppRepositoriesList repositories accessible to a GitHub App.
getHealthCheck that the Coolify API is up (GET /health).
getInfrastructureOverviewOne-call summary of the whole Coolify estate: servers, projects, applications (with status breakdown), databases, services, and currently running deployments.
getLogsFetch runtime logs for an application.
getPrivateKeyGet an SSH private key's metadata by UUID. The key material is masked unless showSecrets is true.
getServerGet server details by UUID.
getServerDomainsList all domains configured on a server.
getServerResourcesList all resources (applications, databases, services) running on a server.
getServiceGet service details by UUID (secrets masked by default; pass showSecrets to reveal).
listAppDeploymentsList deployments for an application with pagination (skip/take).
listApplicationsList all Coolify applications.
listDatabasesList databases with optional pagination and filters.
listDeploymentsList currently running deployments.
listEnvironmentsList all environments for a project. Requires the project UUID.
listGithubAppsList all configured GitHub Apps. Used for private repository access.
listPrivateKeysList all SSH private keys. Keys are used for server authentication and deploy keys.
listProjectsList all Coolify projects. Returns project UUID, name, description, and environments.
listResourcesList Coolify resources with optional pagination, summary, and filters.
listServersList all Coolify servers. Returns server UUID, name, IP, user, port, and proxy type.
listServicesList all Coolify services (one-click apps like databases, caches, etc.).
redeployProjectTrigger a deployment for every application in a project (optionally a single environment). Asks for confirmation on clients that support elicitation.
restartApplicationRestart an application by UUID.
restartProjectAppsRestart every application in a project (optionally a single environment). Asks for confirmation on clients that support elicitation.
scheduledTasksManage scheduled tasks (cron jobs) for an application or service. Actions: list, create (name, command, frequency), update, delete, list_executions (all but list/create need task_uuid).
searchDocsFull-text search across the official Coolify documentation using a local index bundled with this server (no network). Returns page titles, canonical coolify.io/docs URLs, and snippets.
serviceEnvsManage environment variables for a service. Actions: list (secrets masked unless showSecrets), create, update, bulk_update (pass envs array), delete (needs env_uuid).
startApplicationStart an application by UUID. Optionally force rebuild.
stopAllApplicationsStop every running application, optionally restricted to one project. Asks for confirmation on clients that support elicitation, stating the blast radius.
stopApplicationStop an application by UUID.
storagesManage persistent volumes and file mounts for an application, database, or service. Actions: list, create, update, delete. create needs storage type ('persistent' or 'file') and mount_path; update targets storage_uuid; delete needs storage_uuid.
teamsRead Coolify teams. Actions: list, current, current_members, get (needs id), members (needs id).
updateApplicationUpdate an application's configuration by UUID. Common fields are exposed; any other Coolify application field (install/build/start commands, health checks, resource limits, static flags, ...) can go in extra and is validated against the OpenAPI schema.
updateDatabaseUpdate a database's configuration by UUID. Common fields are exposed; any other Coolify database field can go in extra.
updatePrivateKeyUpdate an SSH private key. The Coolify API identifies the key by its private_key content (required); name and description are optional.
updateProjectUpdate a project's name or description.
updateServerUpdate a server by UUID. Common fields are exposed; any other Coolify server field can go in extra.
updateServiceUpdate a service by UUID. Common fields are exposed; any other Coolify service field (docker_compose_raw, connect_to_docker_network, ...) can go in extra.
validateServerValidate server connection and configuration by UUID.
BEFORE YOU INSTALL
65 tools when we connected. Setting COOLIFY_ALLOW_WRITE=false disables about 35 write tools, including deploy and every create, update and delete. On clients that support elicitation, deletions pause for your confirmation, and tools such as applicationEnvs take an action argument covering several operations.
CONTEXT COST
Rated by the size of the 65 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npm install -g @fndchagas/coolify-mcpDownload coolify-mcp.mcpb from the project's latest GitHub release:
https://github.com/frndchagas/coolify-mcp/releases/latest/download/coolify-mcp.mcpbDrag the file into Settings → Extensions in Claude Desktop. It prompts for your Coolify URL and API token — no Node install, no JSON editing.
claude mcp add coolify \
--env COOLIFY_BASE_URL="<YOUR_COOLIFY_URL>/api/v1" \
--env COOLIFY_TOKEN="<YOUR_COOLIFY_TOKEN>" \
-- npx -y @fndchagas/coolify-mcp<YOUR_COOLIFY_URL>/api/v1 is your own Coolify instance's API URL (it ends in /api/v1), and <YOUR_COOLIFY_TOKEN> is an API token created under Settings > API in your Coolify dashboard.
[mcp_servers.coolify]
command = "npx"
args = ["-y", "@fndchagas/coolify-mcp"]
env = { COOLIFY_BASE_URL = "<YOUR_COOLIFY_URL>/api/v1", COOLIFY_TOKEN = "<YOUR_COOLIFY_TOKEN>" }<YOUR_COOLIFY_URL>/api/v1 is your own Coolify instance's API URL (it ends in /api/v1), and <YOUR_COOLIFY_TOKEN> is an API token created under Settings > API in your Coolify dashboard.
{
"mcpServers": {
"coolify": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@fndchagas/coolify-mcp"
],
"env": {
"COOLIFY_BASE_URL": "<YOUR_COOLIFY_URL>/api/v1",
"COOLIFY_TOKEN": "<YOUR_COOLIFY_TOKEN>",
"COOLIFY_ALLOW_WRITE": "true"
}
}
}
}<YOUR_COOLIFY_URL>/api/v1 is your own Coolify instance's API URL (it ends in /api/v1), and <YOUR_COOLIFY_TOKEN> is an API token created under Settings > API in your Coolify dashboard. Set COOLIFY_ALLOW_WRITE to "false" for a read-only install that disables all write operations.
new StdioClientTransport({ command: 'npx', args: ['-y', '@fndchagas/coolify-mcp'], env: { COOLIFY_BASE_URL: '<YOUR_COOLIFY_URL>/api/v1', COOLIFY_TOKEN: '<YOUR_COOLIFY_TOKEN>' } })<YOUR_COOLIFY_URL>/api/v1 is your own Coolify instance's API URL (it ends in /api/v1), and <YOUR_COOLIFY_TOKEN> is an API token created under Settings > API in your Coolify dashboard.