Skip to main content
Glama

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-desktop

Choose 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

  1. Download the ZIP from the latest release.

  2. Extract it into a permanent folder and open a terminal there.

  3. Run:

node install.mjs

Choose another client with an installer flag:

Client

Command from the extracted ZIP

Codex

node install.mjs

Claude Code

node install.mjs --client claude-code

Claude Desktop

node install.mjs --client 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 setup

For 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

%USERPROFILE%\.config\dokploy-mcp\config.env

macOS / Linux

~/.config/dokploy-mcp/config.env

DOKPLOY_URL=https://dokploy.example.com
DOKPLOY_API_KEY=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_ZONE_IDS=
DOKPLOY_READ_ONLY=false
  • Dokploy: 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

connection_status

Check local configuration without printing credentials

dokploy_catalog

Discover endpoints, methods and exact input schemas

dokploy_call

Call a validated endpoint; supports dry runs

application_env_patch

Preview and apply variable patches with a revision check

cloudflare_zones

List permitted zones with pagination

cloudflare_records

Inspect DNS records before a change

cloudflare_upsert

Preview or apply A/AAAA/CNAME changes

cloudflare_delete

Delete an explicitly selected record with confirmation

dns_check

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=true is only for trusted tunnels or networks; TLS validation is never disabled.

Development

npm ci
npm test
npm run package:plugin
npm run doctor

doctor 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 instructions

The 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 tools
application_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
setNo
removeNo
dry_runNo
revisionNo
application_idYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes
zone_idYes
record_idYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
zone_idYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameYes
typeYes
contentYes
dry_runNo
proxiedNo
zone_idYes
replace_idNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
dry_runNo
endpointYes
parametersYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
endpointNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 9 tool updatesv0.3.0
    • First observedapplication_env_patch
    • First observedcloudflare_delete
    • First observedcloudflare_records
    • First observedcloudflare_upsert
    • First observedcloudflare_zones
    • First observedconnection_status
    • First observeddns_check
    • First observeddokploy_call
    • First observeddokploy_catalog

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables deploying and managing infrastructure via natural language, including project/domain management, compute nodes, image deployment, and CI/CD integration.
    70
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language management of Cloudflare services including Workers, KV, R2, D1, Queues, and more via the Model Context Protocol.
    1,914 npm
    Apache 2.0