Dokploy MCP
Manages Cloudflare DNS by listing permitted zones, inspecting DNS records, previewing and applying A/AAAA/CNAME record changes, deleting explicitly selected records with confirmation, and detecting DNS conflicts.
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., "@Dokploy MCPdeploy my web app and show me the build logs"
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.
What you can do
Deploy your stack | Configure your apps | Connect your domains |
Create applications and Compose services | Patch environment variables | Manage A, AAAA and CNAME records |
Start deployments and inspect results | Configure projects and environments | Preview DNS changes and detect conflicts |
Inspect logs, databases and backups | Read server information through Dokploy | Configure Dokploy domains and HTTPS |
9 MCP tools · 232 catalogued Dokploy operations · Local execution · MIT licensed
The bundled skill discovers the exact API schema as needed, instead of exposing hundreds of individual tools. Operations depend on the API supported by your installed Dokploy version.
Related MCP server: PlugLayer MCP Server
Quick start
You need Node.js 22+ and your preferred client: Codex, Claude Code, or Claude Desktop. Codex and Claude Code plugin installation requires their respective CLI. The MCP runs on your computer and does not require a separate model-provider API key.
One command with npm
npm publication is being prepared. Until the first npm version is available, use the ZIP or source installation below.
# Codex
npx -y mcp-dokploy@latest install codex
# Claude Code ("claude" is also accepted)
npx -y mcp-dokploy@latest install claude-code
# Claude Desktop
npx -y mcp-dokploy@latest install claude-desktopChoose one command for your client. The installer downloads the runtime to a permanent user directory, registers the connector and prints where to configure your credentials. You do not need to clone the repository or build TypeScript. npm installs use the mcp-dokploy marketplace; ZIP/source installations use dokploy-tools.
The name on npm is mcp-dokploy. To update, rerun the same command with @latest and restart your client. If you previously installed the ZIP/source plugin, uninstall dokploy-cloudflare@dokploy-tools in that client before switching to npm to avoid duplicate tools. Your credentials file is shared and preserved.
Option 1 — Download the plugin
Download the ZIP from the latest release.
Extract it into a permanent folder and open a terminal there.
Run:
node install.mjsChoose another client with an installer flag:
Client | Command from the extracted ZIP |
Codex |
|
Claude Code |
|
Claude Desktop |
|
Claude Code receives the MCP and skill. Claude Desktop receives the MCP and a dokploy_workflow prompt. Its existing configuration is preserved and backed up. See the Claude guide.
Option 2 — Install from source
git clone https://github.com/HaroldXd/Mcp_Dokploy.git
cd Mcp_Dokploy
npm ci
npm run setupFor Claude, replace the last command with npm run setup:claude-code or npm run setup:claude-desktop.
The Codex and Claude Code installers register the local dokploy-tools marketplace and install the MCP with the dokploy-control skill. Desktop writes one MCP entry using absolute paths. Avoid installing duplicate server entries in the same client.
Add your credentials
Edit the configuration file printed by the installer:
System | Configuration path |
Windows |
|
macOS / Linux |
|
DOKPLOY_URL=https://dokploy.example.com
DOKPLOY_API_KEY=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_ZONE_IDS=
DOKPLOY_READ_ONLY=falseDokploy: generate a token under Settings → Profile → API/CLI. Use the panel URL, without
/api.Cloudflare: use an API Token with DNS Edit and Zone Read, restricted to the zones you want to manage. Cloudflare is optional for Dokploy operations.
Zone IDs: optional comma-separated allowlist. Without it, accessible zones are determined by your Cloudflare token.
Keep credentials on your own computer. They are not included in the repository or release. The configuration is a local plaintext file: protect it with your user permissions. Environment variables override the file; DOKPLOY_MCP_CONFIG selects a different path.
Restart your client after installation or credential changes. In Claude Desktop, fully quit and reopen the application.
Try a conversation
Use dokploy-control to list my projects and applications.Deploy this repository to staging and inspect the deployment result.Connect app.example.com to this application with Cloudflare DNS and HTTPS.Preview these environment variable changes while preserving the other keys.Start with read-only discovery. Set DOKPLOY_READ_ONLY=true to block writes through both API clients.
How it connects
flowchart LR
A[Codex or Claude] -->|Local stdio| B[Dokploy MCP]
B -->|API key · HTTPS| C[Dokploy]
B -->|Scoped API Token · HTTPS| D[Cloudflare DNS]
C --> E[Applications · Compose · Databases]
D --> F[A · AAAA · CNAME]Tools at a glance
Tool | Purpose |
| Check local configuration without printing credentials |
| Discover endpoints, methods and exact input schemas |
| Call a validated endpoint; supports dry runs |
| Preview and apply variable patches with a revision check |
| List permitted zones with pagination |
| Inspect DNS records before a change |
| Preview or apply A/AAAA/CNAME changes |
| Delete an explicitly selected record with confirmation |
| Resolve records through the system resolver |
Verification and current limits
Fifteen automated tests cover API validation, mocked HTTP requests, variable preservation, redaction, DNS conflicts, Claude Desktop configuration merging, npm catalogs, CLI dispatch, the workflow prompt and a real MCP stdio handshake. Codex and Claude Code manifests are packaged separately for their hosts. Read-only authentication to Dokploy and Cloudflare has been checked against a configured instance; production deployments and restores have not been certified.
The API catalog is a versioned snapshot. A dry run validates parameters, not compatibility with your server.
Multi-step workflows are guided by the skill. There is no distributed transaction, automatic rollback or durable operation journal.
Environment patches preserve other keys and build settings, but use an optimistic revision check rather than an atomic lock. Complex multiline documents are refused.
VPS operations use Dokploy APIs. This plugin does not provide SSH or an arbitrary host shell.
DNS supports existing Cloudflare zones and A/AAAA/CNAME records. It does not buy domains, change nameservers, modify MX/TXT or change zone-wide SSL settings.
Local DNS resolution does not establish global propagation or HTTPS health. Verify those separately.
Known secret fields and configured tokens are redacted. Application logs may contain other sensitive data.
Dokploy authorization follows the supplied token; there is no additional project allowlist. Destructive confirmation parameters guard against mistakes and do not replace user authorization.
Mutations are not automatically retried. Inspect current state after a timeout before trying again.
HTTPS is required.
DOKPLOY_ALLOW_HTTP=trueis only for trusted tunnels or networks; TLS validation is never disabled.
Development
npm ci
npm test
npm run package:plugin
npm run doctordoctor checks local configuration presence; it does not validate credentials. Ask Codex to list projects and zones to check read access.
src/ MCP server, API clients and validation
schemas/ Dokploy OpenAPI snapshot and upstream license
skills/ Codex operating procedures
scripts/ Installers, packaging and smoke checks
tests/ API behavior and MCP protocol tests
docs/ Spanish guide, roadmap and publishing instructionsThe generated bundle lives in plugins/dokploy-cloudflare/ and includes JavaScript dependencies. Node.js must be installed on the destination computer.
Community and license
Contributions are welcome — read CONTRIBUTING.md. Report vulnerabilities through SECURITY.md. The project is available under the MIT License; bundled dependencies retain their own licenses.
This is an independent community integration, not an official product of Dokploy, Cloudflare or OpenAI. GitHub distribution is separate from acceptance into the official plugin directory; see publishing.
Built on the official Dokploy API, Dokploy OpenAPI specification, Cloudflare API and MCP SDK.
Available Tools
9 toolsapplication_env_patchA
Patch runtime variables preserving other keys and build settings. First dry_run=true, then supply returned revision with dry_run=false. Complex multiline documents are refused. Not an atomic concurrency lock.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | ||
| remove | No | ||
| dry_run | No | ||
| revision | No | ||
| application_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real value: it discloses merge-not-replace semantics, a mandatory two-phase dry-run/revision workflow, a hard refusal case ('Complex multiline documents are refused'), and a concurrency limitation. It omits auth/permission requirements and whether changes are 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?
Three dense sentences with the operation stated first, the workflow second, and the two constraints last. No filler, every clause carries actionable information.
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 the description covers the key return dependency ('returned revision'), so an agent can complete the typical workflow. Minor incompleteness: no statement of what the response contains beyond revision or what error states look like.
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 coverage is 0%, so the description must compensate. It explains the semantics of dry_run and revision well (dry-run gating and revision round-trip), but says nothing about application_id, nor about the set/remove shape and whether removal is key-name based. Partial compensation for an undocumented schema.
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?
States a specific verb and resource ('Patch runtime variables') plus the merge scope ('preserving other keys and build settings'), so the agent knows exactly what is modified and what is left intact. No sibling tool overlaps this operation, so no sibling differentiation is required.
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?
Gives a concrete operating procedure ('First dry_run=true, then supply returned revision with dry_run=false') and a when-not caveat ('Not an atomic concurrency lock'). It does not name an alternative tool to use for atomic/concurrent updates, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_deleteA
Delete an explicitly authorized A/AAAA/CNAME record. confirm must equal record_id.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | ||
| zone_id | Yes | ||
| record_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses a safety gate ('confirm must equal record_id'), giving real context beyond the schema's bare string type, but omits permission requirements, reversibility, and error/failure behavior expected of a destructive operation.
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?
Two compact sentences, front-loaded with the action and immediately followed by the one constraint that matters. No filler.
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 destructive tool with no annotations and no output schema, the confirmation protocol is the key missing piece the description supplies. Still, permission/auth requirements and what a successful deletion returns are absent, so an agent lacks a full operational picture.
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 0%, so the description must compensate for all three parameters. It explains the semantics of 'confirm' (must equal record_id) but says nothing about zone_id or record_id beyond their self-evident names, so coverage is partial.
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?
States a specific verb ('Delete') and resource ('A/AAAA/CNAME record'), which distinguishes it from cloudflare_upsert and cloudflare_records at a glance. It does not explicitly name a sibling, but the destructive scope is unambiguous.
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?
'Explicitly authorized' implies a precondition for use, hinting the agent must confirm the record is sanctioned before deleting. However, it never states when to prefer this over cloudflare_upsert or how authorization is established, leaving usage largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_recordsB
Inspect DNS records before changes; supports page and exact name filter.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| page | No | ||
| zone_id | Yes |
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. It implies a read operation and notes pagination/filter support, but says nothing about return shape, permissions, rate limits, or what happens at page boundaries.
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 compact sentence with the action front-loaded and the capability details trailing. Nothing is wasted, though the brevity borders on under-specification for a 3-parameter 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?
With no annotations, no output schema, and 0% schema description coverage, the description would need to do more. It omits the required zone_id, pagination limits, and any indication of what record fields are returned.
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 coverage is 0%, so the description must compensate. It clarifies that 'name' is an exact-match filter and that 'page' controls pagination, but the required zone_id parameter is never explained, leaving a third of the schema undocumented.
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?
Clear verb+resource: 'Inspect DNS records' with an added timing hint ('before changes'). It is distinguishable from cloudflare_upsert and cloudflare_delete by the read-oriented verb, though it never names a sibling to sharpen the boundary.
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?
'before changes' implies the use case (pre-flight verification before mutating records), but there is no explicit when-not guidance and no named alternative among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_upsertB
Create or update A/AAAA/CNAME. Defaults to dry run and DNS-only. Existing differing record needs replace_id. Does not alter zone SSL configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | ||
| name | Yes | ||
| type | Yes | ||
| content | Yes | ||
| dry_run | No | ||
| proxied | No | ||
| zone_id | Yes | ||
| replace_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful behavior: dry_run defaults on (so calls are non-mutating by default), DNS-only/proxied-off by default, and the replace_id requirement for conflicting records. It omits auth/permission needs, idempotency, and what a dry-run response contains.
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?
Four tight sentences, front-loaded with purpose and immediately followed by defaults and the key edge case. No filler; every sentence carries signal, though the trailing SSL note could be folded into the boundary statement.
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 mutation tool with no annotations, no output schema, and 0% parameter coverage, the description should do more: return shape, permission requirements, and the undocumented ttl/name/content semantics are all missing. It covers the critical safety defaults but not the full operational picture.
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 0% across 8 parameters, so the description must compensate. It explains the meaning of dry_run, proxied, replace_id, and type, but leaves ttl, name, content, and zone_id undefined — roughly half the parameters remain unexplained.
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?
States a specific verb pair (create/update) and the exact resource (A/AAAA/CNAME records), which an agent can distinguish from cloudflare_delete and cloudflare_records. However, it never names which sibling to prefer when a record may or may not already exist.
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?
Gives two concrete usage conditions: dry-run is the default, and replacing a differing existing record requires replace_id. It stops short of explicit when-to-use vs cloudflare_records/cloudflare_delete routing or when proxied should be turned on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_zonesC
List permitted Cloudflare zones; paginate using page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No |
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. It discloses only the 'permitted' scope, implying an access restriction, but says nothing about rate limits, pagination termination, ordering, or what a page contains — all relevant for a paginated 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?
A single tight sentence with the verb, resource, and scope front-loaded and no filler. The semicolon clause about pagination is useful, though the phrasing is slightly clipped.
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 optional-parameter listing tool with no output schema, the description covers the core purpose but leaves the agent guessing about default paging behavior and whether pagination metadata is returned. It is the minimum viable level of completeness rather than fully adequate.
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?
With one parameter and 0% schema description coverage, the description must compensate; it does identify that 'page' is the pagination control, which the schema (integer, min 1) does not state. However, it omits the default page and page size semantics, so the compensation is only partial.
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?
States a specific verb and resource ('List permitted Cloudflare zones') plus the access scope ('permitted'), which is enough to distinguish it from mutation siblings like cloudflare_upsert and cloudflare_delete. It stops short of naming how it differs from cloudflare_records, so it is clear but not sibling-differentiated.
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 explicit when-to-use or when-not-to-use guidance. The description never mentions the alternative cloudflare_records (for DNS records within zones) or any prerequisite for listing zones, leaving the agent to infer selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connection_statusA
Local configuration status without exposing credentials. Does not contact APIs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does disclose two meaningful traits: it is local-only and does not contact APIs (so no side effects, no network latency, no auth requirements), and its output does not expose credentials. It does not describe the shape or content of the returned status.
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?
Two short sentences, front-loaded with what the tool returns and followed by the key behavioral constraint. No filler, though the extreme brevity borders on under-specification for a tool with no output schema.
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-param, no-annotation, no-output-schema tool the description is adequate on safety and scope, but it never says what the status actually contains (e.g. whether it reports connectivity, credential presence, or config validity). Without an output schema, some indication of the return content would be expected.
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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The 'additionalProperties: false' empty schema is self-explanatory and needs no prose support.
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?
States a specific resource and scope: local configuration status, with the qualifier that it reads local config rather than contacting services. An agent can tell it apart from the API-calling siblings (cloudflare_call, dokploy_call) by the explicit 'local' framing. It is slightly less clear about which connection/component the status pertains to, which keeps it from a 5.
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 line 'Does not contact APIs' implicitly routes the agent here when it wants status without network calls, but there is no explicit when-to-use statement and no sibling named as an alternative. Usage must be inferred from the exclusion rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dns_checkA
Resolve A/AAAA/CNAME using the local system resolver. Does not prove global propagation or HTTPS health.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the resolver being local and the diagnostic limitation, but says nothing about timeout/error behavior on NXDOMAIN, which record types are queried, or whether results reflect caching.
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?
Two tight sentences, front-loaded with the core action and followed by a scoping caveat. No filler or repetition.
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 one-parameter read tool the description covers purpose and one limitation, but with no annotations and no output schema it leaves unaddressed what a successful or failed lookup returns and how errors surface. Adequate, not complete.
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?
Single required 'name' parameter with 0% schema description coverage, so the description must compensate. 'Resolve A/AAAA/CNAME' implies 'name' is a domain name, but the description never states the expected format (hostname, FQDN, trailing dot) or whether it can be a URL.
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?
States a specific verb (Resolve) with concrete record types (A/AAAA/CNAME) and scopes it to the local system resolver. The 'local system resolver' phrasing implicitly differentiates it from the cloudflare_records/cloudflare_zones siblings without naming them.
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 second sentence ('Does not prove global propagation or HTTPS health') sets scope boundaries, which is useful, but it never states when to prefer this tool over cloudflare_records or another DNS sibling. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dokploy_callA
Call a catalogued Dokploy endpoint with validated parameters. Supports projects, environments, applications, deployments, Compose, domains, databases, backups and servers. dry_run previews mutations. Destructive actions require explicit user authorization and confirm equal to endpoint. Results redact secret fields; logs may still contain application-generated sensitive text.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| dry_run | No | ||
| endpoint | Yes | ||
| parameters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses mutation-preview behavior, the authorization/confirmation gate for destructive actions, and that results redact secret fields while logs may still leak application-generated text. What is missing is auth/permission requirements and rate-limit or pagination behavior for an umbrella dispatcher.
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?
Four dense sentences, front-loaded with the core action, each carrying distinct information (scope, preview, confirmation gate, redaction caveat). The domain enumeration is mildly list-heavy but earns its place by signaling coverage.
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 generic multi-domain dispatcher with no annotations, no output schema, and a nested opaque parameters object, the description covers safety and result handling but not how to construct valid parameters or discover endpoints. Adequate for a cautious agent, but incomplete 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?
Schema coverage is 0%, so the description must compensate. It explains dry_run's preview semantics and gives the non-obvious rule that confirm must equal the endpoint value, but the central `parameters` object stays completely opaque and `endpoint` is only alluded to as 'catalogued' with no naming or format guidance.
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?
States a specific verb and resource ('Call a catalogued Dokploy endpoint with validated parameters') and enumerates the resource domains it covers, which lets an agent place it against dokploy_catalog. It never explicitly contrasts itself with the catalog/discovery sibling, so it is clear but not fully differentiated.
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?
Gives concrete usage conditions: dry_run previews mutations, and destructive actions require explicit user authorization plus confirm equal to the endpoint. It stops short of stating that dokploy_catalog should be consulted first to obtain a valid endpoint name, so one routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dokploy_catalogB
Discover supported Dokploy endpoints and exact JSON parameter schemas. Use before dokploy_call. Snapshot compatibility must be checked against installed version.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| search | No | ||
| endpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does add one real behavioral caveat: the snapshot may not match the installed version. However, it says nothing about pagination behavior despite limit/offset, no return shape, and no rate or caching characteristics, which is thin for a discovery tool with zero annotation coverage.
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?
Three short sentences, front-loaded with purpose and then the sequencing instruction; nothing is padded. It is slightly clipped to the point of being terse — the compatibility sentence is cryptic without context — but there is no waste.
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 0% parameter coverage, the description leaves the agent without return format, pagination, or per-parameter meaning. The version-compatibility warning is genuinely useful but does not compensate for the rest of the missing 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?
Schema description coverage is 0% across four parameters (limit, offset, search, endpoint), and the description explains none of them. It never clarifies that 'endpoint' filters to one entry or that limit/offset paginate results, so it adds nothing beyond the bare schema names.
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?
States a specific verb and resource: 'Discover supported Dokploy endpoints and exact JSON parameter schemas.' It also names the sibling it precedes (dokploy_call), so an agent can place it in the workflow. It stops short of 5 because it doesn't make clear whether it returns a full catalog or a single endpoint lookup, which the 'endpoint' parameter implies.
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?
'Use before dokploy_call' gives explicit, actionable sequencing guidance that no sibling tool states. There is no when-not guidance and no statement of what happens if you skip it or call dokploy_call directly, which keeps it below a 5.
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.
9 tool updates
v0.3.0- First observed
application_env_patch - First observed
cloudflare_delete - First observed
cloudflare_records - First observed
cloudflare_upsert - First observed
cloudflare_zones - First observed
connection_status - First observed
dns_check - First observed
dokploy_call - First observed
dokploy_catalog
TDQS
Scored across 9 tools
Most tools target distinct resource+action pairs (cloudflare_records vs cloudflare_zones, upsert vs delete, catalog vs call). Minor overlap exists between dns_check and cloudflare_records (both inspect DNS) and between application_env_patch and the generic dokploy_call, but descriptions clarify the boundaries.
A clear cloudflare_* prefix group exists, but conventions are mixed: some names are noun-first (cloudflare_records, dokploy_catalog) while others are verb-first (cloudflare_upsert, cloudflare_delete, dns_check), and standalone tools lack a prefix. Readable but not a single predictable pattern.
Nine tools is well-scoped for a server spanning Dokploy orchestration and Cloudflare DNS. The catalog/call gateway collapses many potential endpoints into two tools, keeping the surface lean.
Cloudflare DNS covers list zones, list records, upsert, delete, and a resolver check, and Dokploy is broadly covered via the catalog+call passthrough plus a targeted env patch. Only minor gaps (e.g. zone creation or richer Dokploy shortcuts) remain.
Maintenance
Related MCP Connectors
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Deploy local apps, add managed Postgres, and inspect logs from your AI coding agent.
Deploy websites, apps, agents and MCP servers from Claude Code or Codex. OAuth, runs in Taiwan.
Deploy apps from GitHub, read build/runtime logs, and manage your app's users from your AI agent.
Related MCP Servers
- AlicenseDqualityFmaintenanceProvides programmatic and CLI tools for managing Coolify deployments, allowing users to control applications, services, databases, and infrastructure through natural language or command line.1044 npm7Good Luck With That Public

PlugLayer MCP Serverofficial
AlicenseCqualityBmaintenanceEnables deploying and managing infrastructure via natural language, including project/domain management, compute nodes, image deployment, and CI/CD integration.70MIT- AlicenseBqualityDmaintenanceManages Coolify self-hosted PaaS infrastructure through AI assistants, enabling deployment, database management, and server operations via natural language.79MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language management of Cloudflare services including Workers, KV, R2, D1, Queues, and more via the Model Context Protocol.1,914 npmApache 2.0