Coolify MCP
MCP server for Coolify API operations.
coolify-mcp
MCP server for Coolify API.
Pinned Coolify Version
Version is defined in src/coolify/constants.ts. To update:
- Edit
COOLIFY_VERSIONinsrc/coolify/constants.ts - Run
npm run update
Requirements
- Node 18+
- A Coolify API token
Install
npm install -g @fndchagas/coolify-mcp
# or
npx -y @fndchagas/coolify-mcp
Registry Listings
- MCP Registry (API): https://registry.modelcontextprotocol.io/v0.1/servers/io.github.frndchagas%2Fcoolify-mcp/versions/0.1.4
- MCP Registry Docs: https://registry.modelcontextprotocol.io/docs
Use with Claude Code CLI
claude mcp add coolify \
--env COOLIFY_BASE_URL="https://coolify.example.com" \
--env COOLIFY_TOKEN="<token>" \
-- npx -y @fndchagas/coolify-mcp
Disable write tools (deploy/env mutations):
--env COOLIFY_ALLOW_WRITE=false
Use with OpenAI Codex CLI
codex mcp add coolify \
--env COOLIFY_BASE_URL="https://coolify.example.com" \
--env COOLIFY_TOKEN="<token>" \
-- npx -y @fndchagas/coolify-mcp
Or edit ~/.codex/config.toml:
[mcp_servers.coolify]
command = "npx"
args = ["-y", "@fndchagas/coolify-mcp"]
env = { COOLIFY_BASE_URL = "https://coolify.example.com", COOLIFY_TOKEN = "<token>" }
Development
npm install
npm run dev
Scripts
npm run dev # Run in development mode
npm run build # Build TypeScript
npm run generate # Regenerate types from OpenAPI
npm run fetch:openapi # Fetch latest OpenAPI spec
npm run update # Fetch + regenerate
Environment Variables
| Variable | Default | Description |
|---|---|---|
COOLIFY_BASE_URL | required | Coolify API URL |
COOLIFY_TOKEN | required | API token |
COOLIFY_STRICT_VERSION | false | Fail on version mismatch |
COOLIFY_ALLOW_WRITE | true | Enable write operations |
COOLIFY_ALLOW_UNSAFE_LOGS | false | Allow raw logs without redaction |
MCP_TRANSPORT | stdio | Transport: stdio, http, both |
PORT | 7331 | HTTP port |
Tools
Tools are exposed under your MCP server name. Example: if you register the server as
coolify, the full tool name is coolify.listResources.
listResources(args:limit,offset,summary,type,status)listApplications(args:limit,offset,summary- defaults to true)getApplication(args:uuid,fields,showSecrets)getLogs(args:uuid,lines,logMode)listEnvs(args:uuid,showSecrets- secrets masked by default)createEnvupsertEnvupdateEnvdeploygetDeployment(args:uuid,includeLogs,logMode)listDeployments(args:limit,offset,includeLogs,logMode)listAppDeployments(args:uuid,skip,take,includeLogs,logMode)listDatabases(args:limit,offset,type,showSecrets,summary- defaults to true)getDatabase(args:uuid,showSecrets)
Notes:
listResources/listDatabasesreturn ametaobject with pagination info whenlimitoroffsetis provided.listEnvsmasks sensitive values by default. UseshowSecrets: trueonly when necessary.getApplicationmasks sensitive values by default. UseshowSecrets: trueonly when necessary.listDeployments/listAppDeploymentsomit inline logs by default. UseincludeLogs: trueto include them (logs are redacted line-by-line, best-effort).logModecontrols log sanitization:safe(default),strict(more aggressive),raw(requiresCOOLIFY_ALLOW_UNSAFE_LOGS=true).upsertEnvupdates by key; if the key exists for both preview and non-preview, passis_previewto disambiguate.upsertEnvdefaultsis_previewto false when omitted.- Delete env is not available via this MCP (Coolify API does not expose it in the OpenAPI spec used here).
MCP Usage Examples
HTTP Client
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);
const resources = await client.callTool({
name: 'coolify.listResources',
arguments: {},
});
console.log(resources.structuredContent);
await client.close();
Stdio Client
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: 'node',
args: ['dist/server.js'],
});
await client.connect(transport);
const result = await client.callTool({
name: 'coolify.getApplication',
arguments: { uuid: 'your-app-uuid' },
});
console.log(result.structuredContent);
await client.close();
Related Servers
Uyuni
A server to interact with the Uyuni Server API for infrastructure and configuration management.
Foreman
Integrate with Foreman to manage hosts and other infrastructure resources.
QuickBooks MCP Server
Query QuickBooks data using natural language.
AWS MCP Servers
A suite of MCP servers providing AI applications with access to AWS documentation, contextual guidance, and best practices.
Remote MCP Server (Authless)
A remote, auth-less MCP server deployable on Cloudflare Workers or locally via npm.
Remote MCP Server (Authless)
A template for deploying a remote, authentication-free MCP server on Cloudflare Workers.
Pierre MCP Server
A fitness data platform that aggregates data from providers like Strava and Fitbit, offering secure B2B API access.
CoinGecko Server
An MCP server for accessing real-time cryptocurrency data from the CoinGecko Pro API.
Aiven
Navigate your Aiven projects and interact with the PostgreSQL®, Apache Kafka®, ClickHouse® and OpenSearch® services
Google Ads
MCP server acting as an interface to the Google Ads, enabling programmatic access to Google Ads data and management features.