Coolify MCP Server
Click on "Install 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 current applications and their 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.
Coolify MCP Server
A robust TypeScript MCP (Model Context Protocol) server for integrating with Coolify, the self-hostable alternative to Netlify and Vercel.
Features
Complete Coolify API Integration: Manage applications, databases, servers, projects, and services
Type-Safe: Full TypeScript support with comprehensive type definitions
MCP Protocol: Compatible with Claude and other MCP clients
Resource Access: Expose Coolify resources through MCP resource endpoints
Tool Support: Comprehensive set of tools for Coolify operations
Related MCP server: Coolify MCP Server
Installation
npm install
npm run buildConfiguration
Environment Variables
The server requires environment variables to connect to your Coolify instance:
export COOLIFY_API_URL="http://localhost:8000"
export COOLIFY_API_TOKEN="your-api-token-here"
export COOLIFY_TEAM_ID="optional-team-id" # OptionalOr create a .env file:
COOLIFY_API_URL=http://localhost:8000
COOLIFY_API_TOKEN=your-api-token-here
COOLIFY_TEAM_ID=optional-team-idMCP Client Configuration
Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"coolify": {
"command": "node",
"args": ["/path/to/coolify-mcp-server/dist/index.js"],
"env": {
"COOLIFY_API_URL": "http://localhost:8000",
"COOLIFY_API_TOKEN": "your-api-token-here",
"COOLIFY_TEAM_ID": "optional-team-id"
}
}
}
}Alternative: NPX Usage
If you publish to npm, users can run via npx:
{
"mcpServers": {
"coolify": {
"command": "npx",
"args": ["@joshuarileydev/coolify-mcp-server", "--yes"],
"env": {
"COOLIFY_API_URL": "http://localhost:8000",
"COOLIFY_API_TOKEN": "your-api-token-here",
"COOLIFY_TEAM_ID": "optional-team-id"
}
}
}
}Or use the executable name directly:
{
"mcpServers": {
"coolify": {
"command": "npx",
"args": ["coolify-mcp-server", "--yes"],
"env": {
"COOLIFY_API_URL": "http://localhost:8000",
"COOLIFY_API_TOKEN": "your-api-token-here",
"COOLIFY_TEAM_ID": "optional-team-id"
}
}
}
}Development Setup
For development, you can use the TypeScript source directly:
{
"mcpServers": {
"coolify": {
"command": "npx",
"args": ["tsx", "/path/to/coolify-mcp-server/src/index.ts"],
"env": {
"COOLIFY_API_URL": "http://localhost:8000",
"COOLIFY_API_TOKEN": "your-api-token-here",
"COOLIFY_TEAM_ID": "optional-team-id"
}
}
}
}Other MCP Clients
For other MCP clients that support environment variables, ensure the following variables are set:
COOLIFY_API_URL(required)COOLIFY_API_TOKEN(required)COOLIFY_TEAM_ID(optional)
Example shell script:
#!/bin/bash
export COOLIFY_API_URL="http://localhost:8000"
export COOLIFY_API_TOKEN="your-api-token-here"
export COOLIFY_TEAM_ID="your-team-id"
node /path/to/coolify-mcp-server/dist/index.jsAvailable Tools
Applications
list_applications- List all applicationsget_application- Get application detailscreate_application- Create new applicationstart_application- Start an applicationstop_application- Stop an applicationrestart_application- Restart an applicationdeploy_application- Deploy an application
Databases
list_databases- List all databasescreate_database- Create new database
Servers
list_servers- List all serverscreate_server- Create new servervalidate_server- Validate server connection
Projects
list_projects- List all projectscreate_project- Create new project
Services
list_services- List all servicesstart_service- Start a servicestop_service- Stop a service
System
get_version- Get Coolify version
Available Resources
The server exposes these MCP resources:
coolify://applications- All applicationscoolify://databases- All databasescoolify://servers- All serverscoolify://projects- All projectscoolify://services- All servicescoolify://teams- All teams
API Token Setup
Log into your Coolify instance
Navigate to "Keys & Tokens" > "API tokens"
Click "Create New Token"
Choose appropriate permissions:
read-only: Read data onlyread:sensitive: Read with sensitive data*: Full access (recommended for MCP server)
Copy the generated token
Security Note
When using the MCP server with Claude Desktop or other clients, your API token will be stored in the configuration file. Ensure this file has appropriate permissions:
# macOS/Linux
chmod 600 ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Or set environment variables in your shell profile instead
echo 'export COOLIFY_API_TOKEN="your-token-here"' >> ~/.bashrcDevelopment
# Install dependencies
npm install
# Run in development mode (requires env vars)
COOLIFY_API_URL=http://localhost:8000 COOLIFY_API_TOKEN=your-token npm run dev
# Build for production
npm run build
# Run built version
npm start
# Lint code
npm run lint
# Type check
npm run typecheckTroubleshooting
Common Issues
"COOLIFY_API_URL and COOLIFY_API_TOKEN environment variables are required"
Ensure environment variables are set before starting the server
Check that your
.envfile is in the correct locationVerify variable names are spelled correctly
"Tool execution failed: Request failed"
Verify your Coolify instance is running and accessible
Check that the API URL is correct (include protocol:
http://orhttps://)Ensure your API token has the necessary permissions
MCP server not appearing in Claude Desktop
Restart Claude Desktop after updating configuration
Check the configuration file path is correct for your OS
Verify JSON syntax in the configuration file
Debug Mode
To see detailed error messages, run the server with debug output:
DEBUG=* node dist/index.jsLicense
MIT
Available Tools
18 toolscreate_applicationC
Create a new application
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Application name | |
| git_branch | No | Git branch | |
| description | No | Application description | |
| git_repository | No | Git repository URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. 'Create a new application' only restates the obvious mutation implied by the tool name; it does not mention side effects, idempotency, required permissions, duplicate handling, or what happens after creation.
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?
The description is short and front-loaded, with no wasted words. However, it is so minimal that it reads more like a tautological restatement of the tool name than a deliberately structured, informative 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?
For a simple creation tool with a clearly documented schema and only one required parameter, the description is minimally viable. However, the absence of any usage context, behavioral details, or expected result makes it less complete than it could be, especially for an agent deciding between this and sibling lifecycle tools.
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?
The input schema has 100% parameter description coverage, so the schema already documents all four parameters. The description adds no parameter-level meaning, but the baseline of 3 is appropriate because the schema is doing the heavy lifting.
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?
The description clearly states the operation (create) and the resource (application), so an agent can understand the tool's basic function. It does not explicitly differentiate itself from related lifecycle tools like deploy_application or start_application, but the verb 'create' provides enough distinction to avoid confusion at a glance.
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?
The description gives no guidance on when to use this tool versus alternatives such as deploy_application, list_applications, or start_application. An agent must infer from the tool name alone that this is for creating a new application, with no stated exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_databaseC
Create a new database
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Database name | |
| type | Yes | Database type (postgresql, mysql, mongodb, redis, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the create action and does not describe side effects, whether the operation is idempotent, what happens on conflict, or what gets returned. For a tool that mutates state, this is a notable gap.
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?
The description is a single, front-loaded, waste-free sentence. It is concise and easy to scan, though it is so terse that it barely extends beyond the tool name.
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?
For a simple two-parameter create operation, the schema covers the necessary inputs and the description states the core action. However, with no output schema, no annotations, and no mention of return values, prerequisites, or postconditions, the description is only minimally sufficient for an agent to invoke the tool correctly.
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?
Schema description coverage is 100%, and both parameters (name and type) have descriptions plus an example of valid type values. The description itself adds no parameter semantics, but the baseline of 3 is appropriate because the schema already documents the inputs adequately.
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?
The description clearly states the action ('Create') and the resource ('a new database'), which is specific enough to distinguish it from sibling tools like list_databases or create_application. However, it does not mention any scope or context that might differentiate it from a more specific create-database-variant tool.
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?
The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It merely implies it should be used when a database needs to be created, but there is no explicit context or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
Create a new project
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name | |
| description | No | Project description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only repeats the action already implied by the name, with no information about idempotency, duplicate-name behavior, required permissions, or what happens after creation.
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?
The description is extremely short and front-loaded, making it easy to parse. The word 'new' is slightly redundant since 'create' already implies newness, but otherwise the phrasing is compact and unfussy.
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?
There is no output schema and no behavioral context. The description does not mention return values, failure modes, name constraints, or how this tool relates to list_projects and other siblings. For a creation tool, this is minimally adequate but leaves important operational details unspecified.
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?
The input schema already describes both parameters with 100% coverage, so the schema carries the semantic weight. The description adds no additional meaning about the parameters, which earns the baseline score of 3.
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?
The description states a clear verb and resource: 'Create a new project' tells the agent exactly what the tool does. However, it essentially restates the tool name and does not add scope or caveats that would differentiate it from sibling create_* tools beyond the resource type.
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?
Usage is implied by the verb 'create': the tool is for creating a project. There is no explicit guidance about when to prefer this over listing or using existing projects, nor any mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_serverC
Create a new server
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | Server IP address | |
| name | Yes | Server name | |
| port | No | SSH port (default: 22) | |
| user | No | SSH user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Create a new server' communicates a mutating action but does not disclose idempotency, duplicate handling, required permissions, side effects, or whether validation occurs.
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?
The description is very short and has no fluff, which is structurally clean. However, it mostly restates the tool name and does not earn its place by adding contextual value, so it is minimal rather than excellently concise.
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?
Given that there is no output schema and no annotations, the description should explain expected return values, side effects, or preconditions. None of that is present, so the context is incomplete for an agent deciding whether and how to invoke this tool.
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?
The input schema covers 100% of parameters with descriptions, so the schema already carries the parameter documentation. The tool description adds no extra meaning to the parameters, which keeps this at the baseline score.
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?
The description clearly states the verb 'Create' and the resource 'server', so an agent can tell this is the creation action as opposed to list_servers or validate_server. However, it adds no details about what kind of server this creates beyond the parameter names, so it is clear but not richly distinguishing.
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?
There is no guidance about when to use create_server versus sibling tools such as list_servers or validate_server. The description only restates the action and does not provide prerequisites, conditions, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_applicationC
Deploy an application
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Application ID | |
| tag | No | Optional tag to deploy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only restates the action without disclosing side effects, whether deployment is synchronous, whether it replaces an existing version, or what state changes occur.
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?
The description is extremely short, but this is under-specification rather than effective conciseness. It omits valuable context and does not earn its place as a standalone explanation.
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?
With no annotations, no output schema, and a consequential lifecycle action, the one-line description is inadequate. An agent cannot determine tag behavior, result format, error conditions, or the deployment's effect on the running application.
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?
Schema description coverage is 100%: 'id' is documented as Application ID and 'tag' as Optional tag to deploy. The description adds no parameter meaning beyond the schema, so the baseline of 3 is appropriate.
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?
'Deploy an application' states a clear verb and resource, so an agent can tell this is a deployment action. However, with sibling tools like start_application, stop_application, and restart_application, it does not explain how 'deploy' differs from those lifecycle actions.
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?
The description gives no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, the difference from start/restart, or scenarios where deployment is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_applicationA
Get details of a specific application
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get details', which implies a read operation, but it does not describe return format, failure behavior, authentication needs, or whether any state changes occur. For a no-annotation tool, this is minimal.
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?
The description is a single, focused sentence with no filler or redundant content. It front-loads the action and resource, and every word contributes to understanding the tool's purpose.
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?
The tool is simple with one required parameter and no output schema, so the description covers the basic purpose. However, it does not explain what 'details' means, how results are returned, or how to handle invalid or missing IDs, leaving some context gaps for an agent without annotations.
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?
Schema description coverage is 100%, and the lone parameter 'id' is already described as 'Application ID'. The description adds no additional semantic information about where to find the ID or how it should be formatted, so the baseline of 3 is appropriate.
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?
The description uses a specific verb ('Get') and resource ('details of a specific application'), which clearly distinguishes it from siblings like list_applications, create_application, and start_application. It is not a tautology of the tool name and tells the agent exactly what this tool does.
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?
The description implies usage when you need details for a single application, but it does not explicitly state when to choose this over list_applications or other application-related tools. No alternatives or exclusions are mentioned, leaving the agent to infer from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Get Coolify version information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read-only operation with no side effects, and the tool takes no parameters, so there is little to disclose. However, the description does not clarify what 'version information' includes or whether authentication is required, leaving some behavioral ambiguity.
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?
The description is a single, front-loaded sentence with no filler. Every word earns its place, and it communicates the tool's purpose completely without redundancy.
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?
For a simple, parameterless read tool, the description is largely sufficient. It identifies what the tool retrieves and is complete enough for an agent to know when to call it. A minor gap is that the return format or content of 'version information' is unspecified, but this is not critical given the low complexity.
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?
The tool accepts zero parameters, and schema coverage is effectively 100%. Per the rubric, zero parameters warrant a baseline of 4. The description does not need to explain any parameters and does not add parameter-specific value, but none is required.
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?
The description states a specific verb ('Get') and a clear resource ('Coolify version information'). It is immediately distinct from all sibling tools, which target applications, databases, servers, projects, and services, so an agent can tell this is the version utility without opening any schema.
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?
No explicit when-to-use or alternative routing is given, but the tool is self-evident as the only version-related sibling. Usage is implied by its name and description, so an agent can infer when to call it, though there is no explicit guidance about cases where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_applicationsA
List all applications in Coolify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The verb 'list' clearly implies read-only enumeration, but the description does not explicitly state safety, authentication needs, pagination, or scope limitations (e.g., whether all applications across all users are returned). It is adequate for a simple list operation but lacks depth.
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?
A single, front-loaded sentence with no filler. Every word contributes meaning, and the description is as concise as possible while being clear.
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?
For a zero-parameter, no-output-schema listing tool, this description is nearly complete: it names the operation and scope. However, it omits any indication of the return shape or potential limitations, and no annotations exist to fill that gap. Still, the simplicity of the tool keeps the gap small.
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?
The input schema has zero parameters, so there is no parameter detail to describe. The phrase 'all applications' establishes an unfiltered scope that aligns with the empty schema, meeting the baseline for a 0-parameter tool.
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?
The description uses the specific verb 'list' and names the resource 'applications', with 'all' clarifying the scope. It naturally distinguishes itself from siblings like get_application (single entity) and list_databases/list_servers/list_projects (different resource types).
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?
No guidance is given on when to use this tool versus alternatives such as get_application or list_services. There is no mention of use cases, prerequisites, exclusions, or when another tool would be more appropriate, leaving the agent to infer from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_databasesA
List all databases in Coolify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'List' clearly signals a read-only enumerative operation, and 'all databases in Coolify' defines the scope. However, with no annotations available, the description does not disclose pagination behavior, return format, or any access requirements. This is minimal but acceptable for a straightforward listing tool.
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?
The description is a single, front-loaded sentence containing only the essential information: the verb, the resource, and the scope. Every word earns its place with no redundancy.
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?
For a zero-parameter tool with no output schema, 'List all databases in Coolify' is almost fully sufficient for correct invocation. It does not describe the response shape or note whether results are paginated, but the listing purpose is clear enough for an agent to call it appropriately.
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?
The input schema has zero parameters and 100% schema description coverage, so there is nothing for the description to add. The 0-parameter baseline of 4 applies.
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?
The description states the verb 'List' and the resource 'all databases in Coolify', making the tool's purpose clear and distinct from sibling list tools like list_applications and list_servers. It does not explicitly contrast with those siblings, but the resource name is enough to disambiguate.
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?
The description implies this tool is used when one needs to enumerate all databases, but it offers no explicit guidance on when to prefer it over create_database or other sibling tools. For such a simple zero-parameter tool, the intended usage is reasonably inferable, though not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all projects in Coolify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of conveying that this is a read-only enumeration operation. It does convey that clearly, but it offers no details about return format, ordering, authentication, or potential pagination, which would add useful context.
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?
The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose.
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?
For a parameterless list tool with no output schema, the description is nearly sufficient: it tells the agent what resource is returned and that all instances are included. Some detail about the shape of a project object or response would improve completeness, but the complexity is low enough that this is a minor gap.
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?
The tool has zero parameters, so the empty schema is fully sufficient. The description needs to add no parameter-level meaning; this matches the baseline of 4 for parameterless tools.
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?
The description says exactly what the tool does: 'List all projects in Coolify'. The verb is specific, the resource is clear, and the object type distinguishes it from sibling tools like list_applications, list_databases, and list_servers.
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?
The intended use is implied by the name and description—use this tool when you need a full list of projects—but there is no explicit guidance about when to prefer it over alternatives, nor any exclusions. For a zero-parameter list tool this is acceptable but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_serversA
List all servers in Coolify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action without mentioning response format, pagination, or the fact that this is a read-only operation. An agent has no information about what the result looks like or any side effects, leaving a significant gap for a simple but essential tool.
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?
The description is a single, concise sentence that front-loads the core action and scope. It contains no filler or redundant information, making it highly efficient for an agent to parse.
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?
For a zero-parameter, read-only list operation, the description is minimally adequate. However, it omits any detail about the returned data structure, ordering, or pagination, which might be expected. While the simplicity of the tool lowers the bar, the absence of any output schema or behavioral note leaves some uncertainty for an agent calling it.
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?
The tool has zero parameters, so the schema already covers everything. Per the baseline rule for 0 parameters, the description need not add parameter detail; it would only be redundant. The description adds no parameter semantics, but none are required, so the baseline of 4 is appropriate.
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?
The description clearly states the verb 'List' and the resource 'servers', scoped to 'all servers in Coolify'. This distinguishes it from sibling list tools (list_applications, list_databases) by resource type, leaving no ambiguity about what the tool retrieves.
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?
The description implies its usage — to list servers — but provides no explicit guidance on when to choose this over alternatives or any exclusions. Since the tool name and description are self-explanatory and siblings handle other resources, the context is clear, but the lack of explicit direction keeps it from scoring higher.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesA
List all services in Coolify
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. The word 'List' suggests a read-only operation and 'all' defines scope, but there is no explicit statement about pagination, response shape, or absence of side effects. This is adequate for a simple list tool but minimal.
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?
The description is a single sentence that conveys the essential verb and resource without any filler or repetition. It is appropriately sized and front-loads the operation.
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?
For a zero-parameter, read-only listing tool, the description is nearly complete. It clearly states what is returned (all services) and requires no argument details. It could further define what a 'service' is in Coolify or describe the output structure, but neither is essential for correct invocation.
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?
The tool has zero parameters, and the schema coverage is 100% with an empty object. The description adds no parameter information, but none is needed since invocation requires no arguments.
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?
The description uses a specific verb ('List') and a specific resource ('services') within a defined context ('in Coolify'). This clearly distinguishes it from sibling tools like list_applications, list_databases, and list_servers by naming the exact resource type.
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?
The intended use is implied: call this when you need all services in Coolify. However, it does not explicitly explain when to prefer this over list_applications or list_databases, nor does it mention any exclusions or filtering conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_applicationC
Restart an application
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only repeats the action. It does not mention that the application will be stopped and started, potential downtime, whether state is preserved, or any side effects.
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?
The description is extremely short, but this is under-specification rather than effective conciseness. It essentially restates the tool name and provides no information that would help an agent use the tool correctly.
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?
For a tool with no annotations and no output schema, the description is too minimal. It fails to explain what happens during a restart, whether the call blocks or returns immediately, or what the expected outcome is.
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?
Schema description coverage is 100%, so the schema already documents the single 'id' parameter as the Application ID. The description adds no additional parameter meaning, but the baseline of 3 applies because the schema fully covers it.
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?
The description states a specific verb ('Restart') and a clear resource ('an application'), which distinguishes it from sibling tools like create, start, or stop. However, it adds no additional scope or context beyond the tool name.
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?
The description gives no guidance on when to use restart_application versus alternatives such as start_application or stop_application. There is no mention of prerequisites, typical scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_applicationC
Start an application
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior, but it only says 'Start an application'. It does not disclose side effects, state transitions, idempotency, failure modes, or whether starting requires an existing application, leaving the agent without critical behavioral context.
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?
The description is concise and front-loaded with no filler words, which is structurally clean. However, it is so sparse that it verges on under-specification rather than being an appropriately sized explanation of the tool.
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?
Given the lack of annotations and output schema, the description is incomplete for a state-changing operation. It omits when the action should be performed, what the result looks like, and what conditions must hold, leaving too much for the agent to infer from the sibling tool names alone.
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?
Schema description coverage is 100%, and the only parameter, 'id', is already described as 'Application ID'. The description adds no additional meaning beyond the schema, so the baseline score of 3 applies.
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?
The description states a clear action ('Start') and a clear resource ('an application'), which is sufficient to identify the tool's purpose. It also distinguishes this tool from siblings like stop_application, restart_application, and deploy_application, though it does not elaborate on what 'start' concretely entails.
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?
The description gives no guidance on when to use this tool versus siblings such as deploy_application or restart_application. It does not mention prerequisites like the application already existing or being in a stopped state, so the agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_serviceC
Start a service
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Start a service' only names the action; it does not indicate that this is a state-changing operation, whether it is reversible, if it has side effects (e.g., resource consumption), or what happens if the service is already running. No such detail is offered.
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?
The description is extremely short (two words), but this is under-specification rather than effective conciseness. It lacks necessary context that an agent would expect for a state-changing tool, such as effect, timing, or return value. The brevity here is a deficiency, not an asset.
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?
Given the simplicity of the schema (one param) and no output schema, the description still fails to explain the operational context: Is this synchronous? What does 'start' imply? Are there prerequisites? An agent calling this blindly would have no idea what to expect. The description is minimal and incomplete for reliable invocation.
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?
The schema fully documents the single parameter 'id' with a description of 'Service ID', so schema coverage is 100%. The tool description adds no further semantic meaning beyond the schema, so a baseline of 3 is appropriate. No compensation is needed given the schema's completeness.
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?
The description 'Start a service' uses a specific verb and resource, which is clearer than a tautology. However, it does not differentiate from sibling tools like 'start_application' or clarify whether it affects a single service or multiple. It states the core action but lacks scope or distinction.
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?
No guidance is given on when to use this tool versus alternatives like 'stop_service' or 'list_services'. There is no mention of prerequisites, conditions, or scenarios where this tool is appropriate or inappropriate. The description leaves the decision entirely to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_applicationC
Stop an application
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Application ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Stop an application' gives no information about side effects, reversibility, dependencies, or whether the operation is safe or destructive. The agent is left blind to the consequences of calling this tool.
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?
The description is short, but this is under-specification rather than effective conciseness. The sentence is a tautology and contains no information beyond the tool name, so it does not earn its place as a useful 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?
For a state-changing operation with no annotations and no output schema, the description should at least note reversibility, effect on the application, and relationship to start/restart. The one-parameter schema is well covered, but the description leaves significant gaps in operational context.
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?
The schema documents the only parameter, id, as 'Application ID' with 100% coverage. The description adds no parameter-level information, but the schema already provides sufficient meaning. Baseline 3 is appropriate because the structured schema handles the input documentation.
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?
The description 'Stop an application' is essentially a verbatim restatement of the tool name, adding no new information. It conveys the basic action but does not help distinguish this tool from siblings beyond what the name already implies. This falls into the tautology category.
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?
There is no guidance on when to use this tool instead of start_application, restart_application, or stop_service. No prerequisites, conditions, or exclusions are mentioned. An agent must infer the appropriate usage from sibling tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_serviceC
Stop a service
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure, but it only restates the action implied by the tool name. It does not mention side effects, idempotency, behavior when the service is already stopped, or whether the action is reversible.
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?
The description is extremely concise and front-loaded, but it borders on under-specification since it essentially restates the tool name. It is not wasteful, but it provides little structural value beyond the name.
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?
Although the tool is simple with one fully documented parameter, there is no output schema or annotation coverage. The description does not clarify expected return values, failure modes, or whether the stop operation is synchronous, leaving meaningful gaps for a mutating action.
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?
Schema description coverage is 100%: the only parameter 'id' is described in the schema as 'Service ID'. The description does not add further parameter meaning, but the schema already sufficiently documents the parameter.
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?
The description uses a specific verb ('Stop') and a specific resource ('service'), clearly distinguishing it from siblings like start_service and stop_application. However, it does not elaborate on scope such as whether this applies to one service instance or a named service.
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?
There is no guidance on when to use this tool versus alternatives such as start_service or stop_application. The description simply states the action without contextual cues or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_serverC
Validate server connection
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Validate server connection' but does not state whether the operation is read-only, whether it requires an existing server, what side effects it may have, or how success/failure is represented.
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?
The description is a single, short sentence with no filler or redundancy. It is front-loaded with the primary verb and resource, though it is arguably too terse to fully convey the tool's behavior.
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?
The tool has one parameter and no output schema, so the description needs to explain what validation entails and what result the agent can expect. It does neither, leaving the agent uncertain about the tool's actual function and outcome.
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?
Schema description coverage is 100% for the single parameter 'id', which is documented as 'Server ID'. The description adds no additional meaning beyond the schema, so the baseline score of 3 applies.
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?
The description states a specific action ('validate') and a resource ('server connection'), which distinguishes it from sibling tools like list_servers or create_server. However, it does not clarify what 'validate' means in practice, such as checking connectivity or configuration, so some ambiguity remains.
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?
No guidance is provided about when to use this tool versus alternatives, nor are there any prerequisites or conditions mentioned. The description simply states the action without explaining the intended context, such as after creating a server or before deploying.
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. Dates show when Glama detected each change.
18 tool updates
v1.0.6- First observed
create_application - First observed
create_database - First observed
create_project - First observed
create_server - First observed
deploy_application - First observed
get_application - First observed
get_version - First observed
list_applications - First observed
list_databases - First observed
list_projects - First observed
list_servers - First observed
list_services - First observed
restart_application - First observed
start_application - First observed
start_service - First observed
stop_application - First observed
stop_service - First observed
validate_server
TDQS
Most tools are clearly separated by resource type and action, such as list_applications vs list_databases. The only slight ambiguity is start_application vs deploy_application, which have related but not identical purposes.
All tools use a consistent verb_noun snake_case pattern, e.g., list_applications, create_database, validate_server, get_version. There are no mixed conventions or vague generic names.
18 tools is slightly above the typical sweet spot but reasonable given the server covers applications, databases, servers, projects, services, and version info. Each tool corresponds to a concrete operation, so the count feels justified rather than bloated.
Application lifecycle coverage is fairly strong with create, get, list, start, stop, restart, and deploy, but update and delete are missing. Other resources are much thinner: databases only support list/create, servers list/create/validate, projects list/create, and services list/start/stop, leaving obvious gaps for a management tool.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Deploy full-stack apps (Postgres, Redis, S3, workers, backups) from Claude or curl. 59 MCP tools.
- mcpOAuthnet.hepcloud
Manage HepCloud (Turkish cloud) servers and managed PostgreSQL from your AI assistant. OAuth 2.1.
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA powerful Model Context Protocol server that enables AI assistants to manage Coolify infrastructure through natural language, supporting application deployment, database management, resource monitoring, and DevOps automation.19-
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Coolify self-hosted instances for application deployment, management, and monitoring. Features 4 unified tools optimized for VS Code's limits, covering app management, environment configuration, system administration, and built-in documentation.41691MIT
- 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.18256MIT
- AlicenseBqualityCmaintenanceEnables 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.893228MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JoshuaRileyDev/coolify-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server