Coolify MCP Server
The Coolify MCP Server provides comprehensive management of Coolify deployments with 100% API coverage, offering both MCP integration for AI editors and CLI commands for terminal usage.
Core Capabilities:
Applications (21 operations): Full lifecycle management including listing, creating (6 deployment types: public repos, private GitHub/GitLab, Dockerfile, Docker image, Docker Compose), updating, deleting, and control operations (start, stop, restart, logs). Includes environment variable management (list, create, update bulk/single, delete).
Services (14 operations): Deploy and manage 70+ one-click services (WordPress, Ghost, MinIO, etc.) with full lifecycle control, environment variable management, and service type queries.
Databases (13 operations): Create and manage 8 database types (PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB, ClickHouse, Dragonfly) with complete lifecycle control.
Projects & Infrastructure: Manage projects (list, create, update, delete) and their environments/resources. Server management includes creation, validation, domain management, and resource monitoring.
Deployments: List all or application-specific deployments, view deployment details, and trigger new deployments with custom parameters.
Private Keys: Full management for secure repository access (list, create, update, delete).
System Administration: Monitor system health and version, enable/disable API access, view system resources, and check configuration status.
Utilities: Connectivity testing (ping) and configuration validation.
Key Features: Identical functionality through both MCP tools and CLI commands, automated API updates to stay current with Coolify.
Supports creating and managing ClickHouse databases within Coolify deployments
Enables one-click deployment and management of Ghost CMS instances through Coolify
Supports application deployment from GitHub repositories via Coolify
Provides tools for creating and managing MariaDB databases in Coolify environments
Enables deployment and management of MinIO object storage services through Coolify
Supports creation and management of MongoDB databases within Coolify deployments
Provides tools for creating and managing MySQL databases in Coolify environments
Enables creation and management of PostgreSQL databases through Coolify
Supports creation and management of Redis databases in Coolify deployments
Enables one-click deployment and management of WordPress instances through Coolify
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Coolify MCP Serverlist my applications and show their current status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DEPERECATED USE THE SKILL NOW: https://github.com/FelixAllistar/coolify-manager
Coolify MCP Server
A Model Context Protocol (MCP) server for managing Coolify deployments, providing both programmatic MCP tools and comprehensive CLI commands.
Quick Start
Option 1: MCP Integration (Recommended)
MCP (Model Control Protocol) lets you manage Coolify directly from your AI editor.
1. Add to your MCP configuration
For Cursor:
Add to ~/.cursor/mcp.json or <project_folder>/.cursor/mcp.json:
{
"mcpServers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}For VS Code:
Add to <project_folder>/.vscode/mcp.json:
{
"servers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
},
"type": "stdio"
}
}
}🔑 Replace
your-coolify-instance.comwith your actual Coolify URL andyour-coolify-api-tokenwith your API token from Coolify Settings > API.
2. (Cursor only) Enable Coolify MCP
Open Cursor Settings (Ctrl+Shift+J) ➡ Click on MCP tab ➡ Enable coolify-mcp with the toggle
3. Start managing Coolify
In your AI chat, try commands like:
List my Coolify applications
Create a new WordPress service called "my-blog"
Deploy my app with ID "app-123"
Show me all available database typesOption 2: CLI Usage
Installation
# Install globally for CLI usage
npm install -g @felixallistar/coolify-mcp
# Test the installation
coolify-mcp --helpConfiguration
Create a .env file in your project directory:
# Required: Your Coolify instance URL (include port if needed)
COOLIFY_API_URL=https://your-coolify-instance.com
# Required: Your Coolify API token (generate in Coolify Settings > API)
COOLIFY_API_TOKEN=your-coolify-api-tokenCommon Commands
# Application management
coolify-mcp apps list
coolify-mcp apps create-public --name "my-app" --repository "https://github.com/user/repo" --project "project-id"
coolify-mcp apps start app-id
# Service management (70+ one-click services)
coolify-mcp services types
coolify-mcp services create --name "my-blog" --type "wordpress-with-mysql" --project "project-id"
# Database management (8 database types)
coolify-mcp databases create-postgresql --name "main-db" --project "project-id"
coolify-mcp databases create-redis --name "cache" --project "project-id"
# Project management
coolify-mcp projects list
coolify-mcp projects create --name "My Project"
# Test connectivity
coolify-mcp system healthRelated MCP server: Coolify MCP Server
Features
🔄 Applications (21 Operations)
Complete application lifecycle management with 6 deployment types, environment variables, logs, and control operations.
🔧 Services (14 Operations)
70+ one-click services including WordPress, Ghost, MinIO, and more with full environment management.
🗄️ Databases (13 Operations)
8 database types: PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB, ClickHouse, Dragonfly.
📂 Projects, Servers, Deployments
Complete infrastructure management including private keys, system administration, and deployment monitoring.
MCP Tools vs CLI Commands
This package provides two interaction methods with complete feature parity:
🤖 MCP Tools: For AI agents and Cursor integration (recommended)
💻 CLI Commands: For direct terminal usage
Both interfaces provide identical functionality - choose based on your workflow.
Development
Automated API Updates
Stay in sync with Coolify's latest API:
npm run refresh # Download latest API spec and rebuild
npm run check-updates # Check for API changesManual Development
git clone https://github.com/FelixAllistar/coolify-mcp.git
cd coolify-mcp
npm install
npm run refresh
npm run devAPI Coverage
✅ 100% Coolify API Coverage - Applications, Services, Databases, Projects, Servers, Deployments, Private Keys, System Administration
License
GLWTPL (Good Luck With That Public License) - see LICENSE file for details.
This software might just work or not, there is no third option. Good luck and Godspeed.
MCP Configuration
Option 1: Using npx (Recommended - Simple!)
{
"mcpServers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}Option 2: Direct node execution
{
"mcpServers": {
"coolify-mcp": {
"command": "node",
"args": ["node_modules/@felixallistar/coolify-mcp/dist/index.js", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}Option 3: Global installation
npm install -g @felixallistar/coolify-mcpThen use the MCP server binary:
{
"mcpServers": {
"coolify-mcp": {
"command": "coolify-mcp",
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}CLI Usage
For CLI commands, simply add arguments to the coolify-mcp command:
# Using npx (no installation needed)
npx @felixallistar/coolify-mcp --help
npx @felixallistar/coolify-mcp apps list
# Or install globally for easier CLI usage
npm install -g @felixallistar/coolify-mcp
coolify-mcp --help
coolify-mcp apps listAvailable Tools
10 toolsapplicationsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Application UUID | |
| env_id | No | Environment variable ID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config-statusD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
databasesD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Database UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploymentsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Deployment UUID | |
| applicationUuid | No | Application UUID (for list_by_app operation) | |
| query | No | JSON query parameters for deploy operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingD
| Name | Required | Description | Default |
|---|---|---|---|
| random_string | No | Dummy parameter for no-parameter tools |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
private-keysD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Private Key UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Project UUID | |
| environmentNameOrUuid | No | Environment name or UUID (for environment operation) | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serversD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Server UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
servicesD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Service UUID | |
| env_id | No | Environment variable UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
systemD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
applications - First observed
config-status - First observed
databases - First observed
deployments - First observed
ping - First observed
private-keys - First observed
projects - First observed
servers - First observed
services - First observed
system
TDQS
Scored across 10 tools
The tool names identify broad resource areas, but several overlap conceptually, such as services vs. applications and system vs. config-status. With no descriptions, agents have little basis to determine which tool is appropriate for a given task.
Most tool names follow a simple lowercase-hyphenated plural noun pattern, but there is no consistent verb-noun structure and there are outliers like ping, system, and config-status. The naming is readable but not a strong unified convention.
Ten tools is a reasonable count for a server focused on managing infrastructure resources. However, the lack of descriptions makes it difficult to confirm that each tool earns its place in the set.
The surface appears to be read-oriented resource access rather than full lifecycle coverage, with no obvious create, update, or delete operations. Tools like private-keys and config-status hint at configuration management, but the set likely leaves agents unable to perform common management workflows.
Maintenance
Related MCP Connectors
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Deploy and manage applications, databases, domains, and git repos
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Deploy and manage Jade Hosting projects from AI clients. Jade account and OAuth required.
Related MCP Servers
- FlicenseAqualityFmaintenanceEnables interaction with Coolify applications and resources through the Coolify API via a standardized interface, supporting application management operations such as listing, starting, stopping, restarting, and deploying.1113-
- AlicenseBqualityFmaintenanceEnables AI assistants to interact with Coolify for complete infrastructure management including applications, databases, servers, deployments, and team operations. Provides 100% API coverage with 64 tools for managing the entire Coolify ecosystem through natural language.187 npm6MIT
- AlicenseBqualityBmaintenanceEnables control and management of Coolify self-hosted PaaS instances, allowing you to deploy applications, manage databases, monitor servers, and execute operations directly from AI assistants.898 npm29MIT
- AlicenseBqualityDmaintenanceEnables management of Coolify instances to control applications, databases, and servers through the Model Context Protocol. It provides a comprehensive set of tools for deploying services and monitoring self-hosted infrastructure using natural language.188 npm3MIT