skills/coolify/SKILL.md
Operate a Coolify self-hosted PaaS through the @masonator/coolify-mcp server. Use this skill whenever the user asks Claude to inspect, deploy, restart, debug, or manage anything on Coolify — including applications, databases, services, servers, projects, environments, deployments, environment variables, private keys, GitHub apps, teams, or cloud provider tokens. Trigger even when the user does not say the word "Coolify" but clearly refers to their self-hosted infra (e.g. "redeploy my-api", "why is my postgres down", "restart the staging app", "what's running on my Hetzner box"). Prefer this skill over generic shell or HTTP tools whenever Coolify MCP tools are available.
npx skillsauth add StuMason/coolify-mcp coolifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill teaches Claude how to use the Coolify MCP server (@masonator/coolify-mcp) effectively. The server exposes ~38 token-optimized tools that wrap the Coolify API for managing self-hosted apps, databases, services, and infrastructure.
Use it for any user request that touches a Coolify-managed resource, even when the user phrases the request in product terms ("redeploy the API", "restart postgres", "check why staging is unhealthy") rather than naming Coolify explicitly. If a Coolify MCP tool exists for the job, prefer it over curl, the Coolify HTTP API directly, SSH, or generic shell access — the MCP tools return summarized, token-cheap responses and include _actions hints for the natural next step.
If the Coolify MCP server is not configured in the current session, tell the user how to install it (see "Setup" below) instead of guessing.
Coolify resources form a hierarchy: Server → Project → Environment → (Application | Database | Service). Most "smart lookup" tools accept either a UUID or a human-friendly identifier (name, domain, IP), so you usually don't need to look up UUIDs first. Start broad (get_infrastructure_overview, find_issues) and narrow down with diagnose_app / diagnose_server before taking action.
The API splits "list" (cheap, summarized) from "get" (full detail). Always start with a list/overview call and only fetch full details for the specific resource you care about — this keeps responses small and fast.
get_infrastructure_overview (one call returns a summary of everything) or find_issues (scans for unhealthy resources). For a known target, jump straight to diagnose_app or diagnose_server.diagnose_app <name|domain|uuid> returns status, recent logs, env vars, and deployment history in one shot. Read it before restarting or redeploying — the cause is often visible there.control to start/stop/restart, deploy to trigger a build, application / database / service for CRUD, and env_vars for environment variables.deployment for status, then application_logs (or diagnose_app again) to confirm the resource came back healthy._actions that the user might want to do next.Tool names below are the MCP tool identifiers exposed by @masonator/coolify-mcp. Many are dispatchers that take an action argument (e.g. application with action: "create_github").
get_version — Coolify API version.get_mcp_version — Installed MCP server version.get_infrastructure_overview — One-shot summary of every resource. Start here when you don't know what's there.find_issues — Infra-wide scan for unhealthy resources. Use when the user says something vague like "what's broken".diagnose_app — Status + recent logs + env vars + deployment history for one app. Accepts UUID, name, or domain.diagnose_server — Health, resources, domains, validation for one server. Accepts UUID, name, or IP.list_servers, get_server, server_resources, server_domains, validate_server.
projects (list/get/create/update/delete), environments (list/get/create/delete).
list_applications, get_applicationapplication — dispatcher: create_public, create_github, create_key, create_dockerimage, update, deleteapplication_logs — fetch app stdout/stderrenv_vars — requires resource: "application" | "service". For application: list/create/update/delete. For service: list/create/delete (no update — service env update is not supported).control — start / stop / restartlist_databases, get_databasedatabase — create/delete. Supported type values: postgresql, mysql, mariadb, mongodb, redis, keydb, clickhouse, dragonfly.database_backups — schedule + execution trackingcontrol — start / stop / restartlist_services, get_service, service (create/update/delete), env_vars (with resource: "service" — list/create/delete only), control.
list_deployments — list deployments (summary)deploy — trigger a deploy by tag or UUIDdeployment — status, cancel, list-by-app, paginated logsprivate_keys — SSH key CRUDgithub_apps — GitHub integration CRUDteams — list / get / get_members / get_current / get_current_memberscloud_tokens — Hetzner / DigitalOcean credential CRUD + validatesearch_docs — full-text search across Coolify documentation. Use this before guessing about Coolify behavior.Coolify MCP responses include an _actions field suggesting the natural next operations and pagination metadata. When you finish a task, mention any _actions that look relevant so the user can decide whether to keep going. Reference resources by their human-readable name (and short UUID prefix in parentheses) rather than dumping full UUIDs — it's easier for the user to scan.
Keep responses focused on what changed, the current state, and any issues. Don't paste raw JSON unless the user asks for it.
diagnose_app with query: "my-api" → read status, last deployment, tail of logs, env vars.deployment (action get) with the failed deployment id and lines (optionally page) — logs are excluded by default unless lines is set.env_vars (resource: "application", action update) then deploy to redeploy.deployment with the new deployment id and lines to watch status/log output, then confirm with diagnose_app again.find_issues → returns unhealthy resources across all servers.diagnose_app or diagnose_server to get specifics.projects (action list) → find the staging project and record its project_uuid and associated server_uuid.environments (action list) → confirm the target environment name (for example, staging).database (action create, type postgresql, server_uuid: "<server_uuid>", project_uuid: "<project_uuid>", environment_name: "staging") → create the database in that project/environment.control (action start) if it doesn't auto-start, then get_database to return connection details to the user.Claude Code:
claude mcp add coolify \
-e COOLIFY_BASE_URL="https://your-coolify-instance.com" \
-e COOLIFY_ACCESS_TOKEN="your-api-token" \
-- npx @masonator/coolify-mcp@latest
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"coolify": {
"command": "npx",
"args": ["-y", "@masonator/coolify-mcp"],
"env": {
"COOLIFY_ACCESS_TOKEN": "your-api-token",
"COOLIFY_BASE_URL": "https://your-coolify-instance.com"
}
}
}
}
COOLIFY_ACCESS_TOKEN is required; COOLIFY_BASE_URL defaults to http://localhost:3000.
Destructive actions — delete on applications/databases/services/projects/environments, control stop on production resources, deleting private keys or cloud tokens — should be confirmed with the user before execution. When in doubt, describe what you're about to do and wait for a go-ahead. For routine reads, diagnostics, restarts of obviously broken resources, and redeploys of the user's own app on request, just do the work.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.