Runpod MCP server
OFFICIAL SERVERManage Runpod GPU Pods, Serverless endpoints, jobs, volumes and billing from an MCP client
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
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs COOLIFY_BASE_URL, COOLIFY_ACCESS_TOKEN. Replace each <NAME> with your value.
claude mcp add coolify -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> -- npx -y @masonator/coolify-mcp{
"mcpServers": {
"coolify": {
"command": "npx",
"args": [
"-y",
"@masonator/coolify-mcp"
],
"env": {
"COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
"COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"coolify": {
"command": "npx",
"args": [
"-y",
"@masonator/coolify-mcp"
],
"env": {
"COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
"COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
}
}
}
}{
"servers": {
"coolify": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@masonator/coolify-mcp"
],
"env": {
"COOLIFY_BASE_URL": "<COOLIFY_BASE_URL>",
"COOLIFY_ACCESS_TOKEN": "<COOLIFY_ACCESS_TOKEN>"
}
}
}
}[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 mcp add --scope user -e COOLIFY_BASE_URL=<COOLIFY_BASE_URL> -e COOLIFY_ACCESS_TOKEN=<COOLIFY_ACCESS_TOKEN> coolify npx -- -y @masonator/coolify-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs COOLIFY_BASE_URL, COOLIFY_ACCESS_TOKEN. Replace each <NAME> with your value.
git clone https://github.com/StuMason/coolify-mcp.git
cd coolify-mcp && npm install
npm run buildclaude 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'{
"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>"
}
}
}
}{
"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>"
}
}
}
}{
"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>"
}
}
}
}[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 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'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. |
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.
| Runtime | Node.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.
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.
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.
get_infrastructure_overviewget_mcp_versionget_versionsystemdiagnose_appdiagnose_serverfind_issuescoolify_urlrestart_project_appsbulk_env_updatestop_all_appsredeploy_projectlist_serversget_servervalidate_serverserver_resourcesserver_domainslist_destinationsprojectsenvironmentslist_applicationsget_applicationapplicationlist_databasesget_databasedatabasedatabase_backupslist_servicesget_serviceservicecontrollogsapplication_logstagsenv_varsstoragesscheduled_taskslist_deploymentsdeploydeploymentprivate_keysgithub_appsteamscloud_tokenshetznersearch_docslist_instances