Coolify MCP

io.github.frndchagas由 GitHub 账号 frndchagas 发布v2.3.1更新于 Oct 24, 2026

MCP server for Coolify API operations.

概览

AI 生成的概览

一个 MCP 服务器,让助手管理 Coolify 实例:项目、服务器、应用、数据库、服务、部署和环境变量。

可以做什么
列出、创建、更新和删除项目、环境、服务器、SSH 密钥和 GitHub App,并查看团队、服务器资源与域名。创建、配置、启动、停止、重启和删除应用,支持公开 git、GitHub App、部署密钥、Dockerfile 和 Docker 镜像来源。管理八种引擎的数据库及其备份和环境变量,以及服务、Docker Compose 部署、存储、定时任务和预览环境。触发、取消和查看部署,诊断应用与服务器,并一次性获取基础设施概览。管理带掩码的环境变量,并离线搜索内置的 Coolify 文档。
适用场景
适合运行 Coolify 并希望助手在对话中处理部署工作的场景:从零搭建项目、排查应用失败原因、重启或重新部署服务,或调整环境变量和备份,而无需在控制台中逐项操作。
运行要求
通过 npm 包以 stdio 在本地运行,需要 Node 18+。需要在 COOLIFY_BASE_URL 中提供 Coolify API 地址,并在 COOLIFY_TOKEN 中提供 Coolify 控制台生成的 API 令牌。需要能访问 Coolify 实例的网络。另有可选的 HTTP 传输,带独立的端口和 Bearer 令牌设置。
安装前请注意
该令牌可控制整个 Coolify 实例,且写操作默认开启(COOLIFY_ALLOW_WRITE 默认为 true),助手可创建、修改、部署和删除资源,包括连同卷一起删除项目、数据库和服务器。破坏性删除仅在支持 elicitation 的客户端上请求确认。可通过 showSecrets 绕过密钥掩码,COOLIFY_ALLOW_UNSAFE_LOGS 可暴露未脱敏日志。将 HTTP 传输暴露到回环地址之外时,任何能访问该端口的人都能控制 Coolify。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Coolify MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

coolify-mcp

[npm version] [npm downloads] [license] [node version] [typescript] [CI] [Glama score]

MCP server for Coolify API - enables full deployment workflows from zero to production.

[coolify-mcp demo]

Targets the Coolify v4.3.10 API. Types and schemas are generated directly from Coolify's official OpenAPI spec, so tool inputs always match what the API actually accepts.

Features

  • Full Deployment Workflow: Create projects, environments, servers, and applications from scratch
  • 5 Application Types: one createApplication tool covers public git, GitHub App, Deploy Key, Dockerfile, and Docker Image sources — plus Docker Compose deployments via createService (since Coolify v4.1, compose deployments are services)
  • Environment Management: Full CRUD for environment variables with secret masking
  • Deployment Control: Deploy (optionally waiting for the terminal status, with a log tail on failure), start, stop, restart applications
  • Diagnostics: diagnoseApp finds an app by UUID, name, or domain and aggregates status, recent deployments, failure log tails, runtime logs, and suggested next actions
  • Docs Search: searchDocs runs full-text search across the official Coolify documentation from a bundled local index — no network needed
  • Security: Write protection, secret redaction, and MCP annotations (readOnlyHint/destructiveHint) so clients can auto-approve reads and gate destructive calls
  • Near-full API coverage: databases (8 engines, backups, envs), services, storages, scheduled tasks, teams, previews, servers, SSH keys, and GitHub Apps
  • Token-efficient: 65 tools whose definitions cost ~9k tokens of context, with strict runtime validation against schemas generated from Coolify's OpenAPI spec

Requirements

  • Node 18+
  • A Coolify API token (Settings > API in your Coolify dashboard)

Install

Claude Desktop, one-click: download coolify-mcp.mcpb from the latest release and drag it into Settings → Extensions. You'll be prompted for your Coolify URL and token — no Node install, no JSON editing.

Via npm:

bash
npm install -g @fndchagas/coolify-mcp# ornpx -y @fndchagas/coolify-mcp

Quick Start

Claude Code CLI

bash
claude mcp add coolify \  --env COOLIFY_BASE_URL="https://coolify.example.com/api/v1" \  --env COOLIFY_TOKEN="<token>" \  -- npx -y @fndchagas/coolify-mcp

OpenAI Codex CLI

bash
codex mcp add coolify \  --env COOLIFY_BASE_URL="https://coolify.example.com/api/v1" \  --env COOLIFY_TOKEN="<token>" \  -- npx -y @fndchagas/coolify-mcp

Or edit ~/.codex/config.toml:

toml
[mcp_servers.coolify]command = "npx"args = ["-y", "@fndchagas/coolify-mcp"]env = { COOLIFY_BASE_URL = "https://coolify.example.com/api/v1", COOLIFY_TOKEN = "<token>" }

Manual Configuration (~/.mcp.json)

json
{  "mcpServers": {    "coolify": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@fndchagas/coolify-mcp"],      "env": {        "COOLIFY_BASE_URL": "https://coolify.example.com/api/v1",        "COOLIFY_TOKEN": "<token>",        "COOLIFY_ALLOW_WRITE": "true"      }    }  }}

Environment Variables

VariableDefaultDescription
COOLIFY_BASE_URLrequiredCoolify API URL (e.g., https://coolify.example.com/api/v1)
COOLIFY_TOKENrequiredAPI token from Coolify Settings > API
COOLIFY_ALLOW_WRITEtrueEnable write operations (create, update, delete, deploy)
COOLIFY_STRICT_VERSIONfalseFail on API version mismatch
COOLIFY_MCP_ELICITATIONonSet to off to skip human confirmation on destructive deletes (escape hatch for clients that advertise elicitation but do not implement it)
MCP_TRANSPORTstdioTransport: stdio, http, both
PORT7331HTTP port (when using http transport)
MCP_HTTP_TOKENunsetBearer token required on /mcp requests (HTTP transport). Setting it also switches the default bind to 0.0.0.0
MCP_HTTP_HOST127.0.0.1 (0.0.0.0 with token)Interface the HTTP transport binds to. Binding beyond loopback without a token logs a loud warning

Deploy from Zero

With this MCP, you can deploy an application from scratch:

1. listProjects / createProject       → Get or create a project2. listEnvironments / createEnvironment → Get or create an environment3. listServers / createServer         → Get or create a server4. listPrivateKeys / createPrivateKey → Get or create SSH keys (if needed)5. createApplication (type: public)   → Create the application6. applicationEnvs (action: upsert)   → Configure environment variables7. deploy                             → Trigger deployment

Tools Reference

Projects & Environments

ToolDescriptionWrite
listProjectsList all projects
createProjectCreate a new project✓
updateProjectUpdate project name/description✓
deleteProjectDelete a project and all its resources✓
listEnvironmentsList environments in a project
createEnvironmentCreate a new environment✓

Servers & Infrastructure

ToolDescriptionWrite
listServersList all servers
getServerGet server details
createServerCreate a new server✓
validateServerValidate server connection
listPrivateKeysList SSH private keys
createPrivateKeyCreate a new SSH key✓
listGithubAppsList configured GitHub Apps

Applications - Read

ToolDescription
listApplicationsList all applications (summarized by default)
getApplicationGet application details (secrets masked by default)
getLogsGet application runtime logs

Applications - Create

ToolDescriptionWrite
createApplicationCreate an application; type selects the source: public, private-github-app, private-deploy-key, dockerfile, or dockerimage. Long-tail fields go in extra and are validated per type.✓

Docker Compose deployments are created with createService passing docker_compose_raw — since Coolify v4.1 they are services, not applications.

Applications - Manage

ToolDescriptionWrite
updateApplicationUpdate application configuration✓
deleteApplicationDelete an application✓
startApplicationStart an application✓
stopApplicationStop an application✓
restartApplicationRestart an application✓

Environment Variables

ToolDescriptionWrite
applicationEnvsManage application env vars: list (masked by default), create, update, upsert by key, bulk_update, delete✓

Database and service env vars have their own tools: databaseEnvs and serviceEnvs.

Deployments

ToolDescriptionWrite
deployTrigger a deployment; wait: true polls to the terminal status and returns a log tail on failure✓
diagnoseAppDiagnose an app by UUID, name, or domain: status, recent deployments, failure log tail, runtime logs, hints
diagnoseServerDiagnose a server by UUID, name, or IP: resource status breakdown, domains, hints
listDeploymentsList running deployments
getDeploymentGet deployment status and logs
listAppDeploymentsList deployments for an application
cancelDeploymentCancel a running deployment✓

Databases

ToolDescriptionWrite
listDatabasesList all databases
getDatabaseGet database details
createDatabaseCreate a database; type selects the engine: postgresql, mysql, mariadb, mongodb, redis, keydb, dragonfly, clickhouse✓
updateDatabaseUpdate database configuration✓
deleteDatabaseDelete a database (volumes/configs deleted by default)✓
controlDatabaseStart, stop, or restart a database✓
databaseBackupsManage backup schedules and executions (list/create/update/delete/list_executions/delete_execution)✓
databaseEnvsManage database env vars (list/create/update/bulk_update/delete)✓

Services

ToolDescriptionWrite
listServicesList services
getServiceGet service details (secrets masked by default)
createServiceCreate a one-click service or Docker Compose deployment✓
updateServiceUpdate a service✓
deleteServiceDelete a service✓
controlServiceStart, stop, or restart a service✓
serviceEnvsManage service env vars (list/create/update/bulk_update/delete)✓

Storages, Scheduled Tasks & Previews

ToolDescriptionWrite
storagesManage persistent volumes and file mounts for applications, databases, and services✓
scheduledTasksManage cron tasks for applications and services, including execution history✓
deletePreviewDelete a preview deployment by pull request id✓

Teams, Servers & Git

ToolDescriptionWrite
teamsList teams, get current team, and list members
updateServerUpdate server configuration✓
deleteServerDelete a server✓
getServerResourcesList resources running on a server
getServerDomainsList domains configured on a server
getPrivateKeyGet SSH key metadata (key material masked by default)
updatePrivateKeyUpdate an SSH private key✓
deletePrivateKeyDelete an SSH private key✓
getGithubAppRepositoriesList repositories accessible to a GitHub App
getGithubAppBranchesList branches of a repository

Batch Operations

ToolDescriptionWrite
getInfrastructureOverviewOne-call summary of servers, projects, applications (status breakdown), databases, services, and running deployments
restartProjectAppsRestart every application in a project or environment (asks for confirmation)✓
redeployProjectTrigger a deployment for every application in a project or environment (asks for confirmation)✓
stopAllApplicationsEmergency stop of all running applications, optionally per project (asks for confirmation, stating the blast radius)✓

Other

ToolDescription
listResourcesList all resources with filtering
searchDocsFull-text search across the official Coolify docs (bundled index, no network)
getHealthCheck that the Coolify API is up

Security Features

Write Protection

Disable all write operations:

bash
COOLIFY_ALLOW_WRITE=false

Secret Masking

  • Environment variable values are masked by default
  • Database credentials are redacted
  • Use showSecrets: true only when necessary

HTTP Transport Hardening

The HTTP transport binds to 127.0.0.1 by default. To expose it beyond loopback, set MCP_HTTP_TOKEN — every request to /mcp must then carry Authorization: Bearer <token> (checked in constant time) — and the bind switches to 0.0.0.0 (override with MCP_HTTP_HOST). Binding to a non-loopback host without a token logs a loud warning: anyone who can reach the port controls your Coolify instance.

Human Confirmation on Destructive Deletes

On MCP clients that support elicitation (Claude Code, VS Code Copilot), deleting a project, application, database, service, server, or private key asks you to confirm first, stating what will be lost. Clients without elicitation behave exactly as before. A decline, cancel, or timeout aborts the call; set COOLIFY_MCP_ELICITATION=off to disable the prompts entirely.

Development

bash
git clone https://github.com/frndchagas/coolify-mcp.gitcd coolify-mcpnpm installnpm run dev

Scripts

bash
npm run dev            # Run in development modenpm run build          # Build TypeScriptnpm run generate       # Fetch the pinned OpenAPI spec and regenerate types

Pinned Coolify Version

Version is defined in src/coolify/constants.ts. To update:

  1. Edit COOLIFY_VERSION in src/coolify/constants.ts
  2. Run npm run generate

Registry Listings

MCP Client Examples

HTTP Client

ts
import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({ name: 'coolify-client', version: '1.0.0' });const transport = new StreamableHTTPClientTransport(  new URL('http://localhost:7331/mcp'));
await client.connect(transport);
// List all applicationsconst apps = await client.callTool({  name: 'listApplications',  arguments: {},});console.log(apps.structuredContent);
// Deploy an applicationconst deploy = await client.callTool({  name: 'deploy',  arguments: { uuid: 'your-app-uuid' },});console.log(deploy.structuredContent);
await client.close();

Stdio Client

ts
import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const client = new Client({ name: 'coolify-client', version: '1.0.0' });const transport = new StdioClientTransport({  command: 'npx',  args: ['-y', '@fndchagas/coolify-mcp'],  env: {    COOLIFY_BASE_URL: 'https://coolify.example.com/api/v1',    COOLIFY_TOKEN: '<token>',  },});
await client.connect(transport);
const result = await client.callTool({  name: 'getApplication',  arguments: { uuid: 'your-app-uuid' },});console.log(result.structuredContent);
await client.close();

License

MIT

来源:README.md,提交 c06fd15

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v2.3.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分