@sattva/dokploy-mcp
Provides tools to manage Docker containers, configurations, and related operations through the Dokploy platform.
Provides tools to manage MariaDB database services, including creation, updates, and monitoring via Dokploy's API.
Provides tools to manage MySQL database services, including creation, updates, and monitoring via Dokploy's API.
Provides tools to manage Redis database services, including creation, updates, and monitoring via Dokploy's API.
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., "@@sattva/dokploy-mcplist all my applications"
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.
@sattva/dokploy-mcp
MCP server for Dokploy — full API coverage generated from your instance's OpenAPI spec, either as one tool per endpoint (500+) or through 4 gateway tools that cost ~1% of the context. Deploy, manage, and monitor your self-hosted infrastructure through AI assistants.
Why This Package?
Feature | @sattva/dokploy-mcp | Community alternatives |
Auth method |
| Often missing or incorrect |
API coverage | Every endpoint in the spec (546 on Dokploy v0.29.8) | Manual subset (~30-50 tools) |
Context cost | 2.7 KB in gateway mode — full API, ~1% of the payload | Whatever the tool list weighs |
Dependencies | 2 ( | Often pulls in OpenAI SDK, axios, etc. |
Update strategy | Auto-generates from live spec | Manual maintenance required |
Safety annotations |
| Usually missing |
Package size | ~25 KB (dist only) | Varies |
Related MCP server: Dokploy MCP Server
Key Features
Dynamic OpenAPI discovery — fetches the spec from your Dokploy instance at startup, so new API endpoints are available immediately after a Dokploy upgrade
Complete coverage — every endpoint in your instance's spec becomes callable (546 on Dokploy v0.29.8)
Correct
x-api-keyauthentication — uses the proper header that Dokploy expectsZod input validation — OpenAPI schemas are converted to Zod for runtime type checking
Safety annotations — read-only operations are marked with
readOnlyHint, destructive ones withdestructiveHintGateway mode —
DOKPLOY_MODE=gatewayexposes the entire API through 4 tools instead of 500+, cutting thetools/listpayload by ~99% (239 KB → 2.7 KB) with no loss of coverageTool filtering —
DOKPLOY_TOOLSpatterns andDOKPLOY_READONLY=1trim 500+ tools down to the profile you actually use (much smaller context for the AI)Curated descriptions — 130+ most-used tools ship hand-written descriptions instead of bare
METHOD /pathResilient startup — the OpenAPI spec is cached on disk, so a temporarily unreachable Dokploy doesn't take the MCP server down
Bounded responses — compact JSON, oversized responses truncated with an explicit marker; 30s request timeout, GET retried on 5xx/429
Zero-config updates — upgrade Dokploy, restart the MCP server, get new tools
Minimal dependencies — only
@modelcontextprotocol/sdkandzod
Quick Start
Claude Code (CLI)
claude mcp add --transport stdio \
--env DOKPLOY_URL=https://dokploy.example.com \
--env DOKPLOY_API_KEY=your-api-key-here \
dokploy -- npx -y @sattva/dokploy-mcp@latestManual configuration
Add the following to your MCP client config file:
{
"mcpServers": {
"dokploy": {
"command": "npx",
"args": ["-y", "@sattva/dokploy-mcp@latest"],
"env": {
"DOKPLOY_URL": "https://dokploy.example.com",
"DOKPLOY_API_KEY": "your-api-key-here"
}
}
}
}Client | Config file |
Claude Code |
|
Claude Desktop |
|
Cursor |
|
Windsurf |
|
Run directly from the command line
DOKPLOY_URL=https://dokploy.example.com \
DOKPLOY_API_KEY=your-api-key-here \
npx @sattva/dokploy-mcp@latestConfiguration
Variable | Required | Description |
| Yes | Base URL of your Dokploy instance (e.g. |
| Yes | API key for authentication |
| No |
|
| No | Comma-separated tool name patterns with |
| No |
|
| No | Request timeout in milliseconds (default |
| No | Truncate tool responses above this size (default |
Why filter? The full tool list is ~540 tools / ~230 KB of tools/list payload (~60k tokens). A typical profile like DOKPLOY_TOOLS=project_*,application_*,compose_*,deployment_*,docker_*,domain_* cuts that by ~70%.
Spec cache: after each successful start the OpenAPI spec is saved to the OS temp dir. If Dokploy is unreachable on the next start, the server boots from the cached spec instead of dying (tool calls will still fail until Dokploy is back).
Gateway Mode
500+ tools cost ~60k tokens of context before the assistant answers a single question. Gateway mode replaces them with 4 tools that reach the same endpoints through discovery:
"env": {
"DOKPLOY_URL": "https://dokploy.example.com",
"DOKPLOY_API_KEY": "your-api-key-here",
"DOKPLOY_MODE": "gateway"
}Tool | Annotation | Purpose |
|
| Find endpoints by keyword — returns names, kind, and required params |
|
| Full parameter schema for one endpoint |
|
| Invoke a read-only (GET) endpoint |
|
| Invoke a writing endpoint (create/update/deploy/delete) |
Typical flow: dokploy_search("deploy application") → dokploy_describe("application_deploy") → dokploy_mutate("application_deploy", {applicationId}).
Why four tools and not three? A single do-everything call tool would erase the read/write distinction — the client could no longer tell a listing from a deletion, and destructiveHint would be meaningless. Splitting them keeps the annotation honest: a client can allow dokploy_call freely and gate dokploy_mutate behind confirmation. Each tool refuses endpoints of the wrong kind before any network request, and DOKPLOY_READONLY=1 drops dokploy_mutate entirely.
Measured (Dokploy v0.29.8, 546 endpoints):
Mode | Tools |
|
| 546 | 239.3 KB (~61k tokens) |
| 4 | 2.7 KB (~0.7k tokens) — 98.9% smaller |
| 550 | 242.0 KB |
A full discover-and-invoke cycle (tools/list + search + describe) costs ~0.8k tokens — less than the old tool list spent on a single letter of the alphabet.
Trade-off: gateway mode adds two round-trips before the first call, and the assistant no longer sees every operation up front — it has to search. Prefer tools mode (or a DOKPLOY_TOOLS profile) when you always work with the same handful of endpoints; prefer gateway for broad, exploratory access at minimal context cost. DOKPLOY_TOOLS and DOKPLOY_READONLY constrain both surfaces, so a filtered-out endpoint stays unreachable through the gateway too.
Getting Your API Key
Log in to your Dokploy dashboard
Go to Settings → Profile
Under API / Tokens, click Generate Token
Copy the generated key
Tool Naming Convention
OpenAPI paths are converted to tool names:
OpenAPI Path | Tool Name |
|
|
|
|
|
|
|
|
|
|
Tool Categories
The tools are organized by Dokploy's API structure:
Category | Examples | Description |
Application |
| Manage applications |
Project |
| Manage projects |
Server |
| Manage servers |
Docker |
| Docker operations |
Domain |
| Domain management |
Deployment |
| Deployment history |
Database |
| Database services |
Compose |
| Docker Compose services |
Registry |
| Container registries |
Certificate |
| SSL certificates |
User |
| User management |
Settings |
| Instance settings |
Safety Annotations
Every tool is annotated based on its HTTP method and operation:
readOnlyHint: true— GET requests (safe to call, no side effects)destructiveHint: true— operations that deploy, delete, stop, restart, or otherwise modify state
This helps AI assistants make safer decisions about which tools to call without confirmation.
Troubleshooting
DOKPLOY_URL must not end with /api
The MCP server appends /api to the base URL automatically. If you set DOKPLOY_URL=https://dokploy.example.com/api, requests will go to /api/api/... and fail.
Correct: https://dokploy.example.com
Wrong: https://dokploy.example.com/api
Windows: npx does not pass environment variables
On Windows, npx launched via cmd /c may not forward env variables correctly. Use node with the full path to dist/index.js instead:
{
"mcpServers": {
"dokploy": {
"command": "node",
"args": ["C:\\Users\\<you>\\AppData\\Roaming\\npm\\node_modules\\@sattva\\dokploy-mcp\\dist\\index.js"],
"env": {
"DOKPLOY_URL": "https://dokploy.example.com",
"DOKPLOY_API_KEY": "your-api-key-here"
}
}
}
}To find the path after a global install:
npm install -g @sattva/dokploy-mcp
npm root -g
# → C:\Users\<you>\AppData\Roaming\npm\node_modulesConnection refused / timeout
Verify
DOKPLOY_URLis reachable:curl https://dokploy.example.com/api/settings.getOpenApiDocument -H "x-api-key: YOUR_KEY"Check that port 443 (or your custom port) is open
Ensure the API key is valid and has not been revoked
0 tools registered
If the server starts but registers 0 tools, the OpenAPI spec may be empty or in an unexpected format. Check your Dokploy version — the OpenAPI endpoint was introduced in Dokploy v0.9+.
Development
git clone https://github.com/sattva2020/dokploy-mcp.git
cd dokploy-mcp
npm install
npm run buildTest locally
# Watch mode
npm run dev
# Point your MCP client to the local build:{
"mcpServers": {
"dokploy": {
"command": "node",
"args": ["/path/to/dokploy-mcp/dist/index.js"],
"env": {
"DOKPLOY_URL": "https://dokploy.example.com",
"DOKPLOY_API_KEY": "your-api-key"
}
}
}
}Architecture
┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ MCP Client │────▶│ MCP Server │────▶│ Dokploy API │
│ (Claude, etc) │◀────│ (this pkg) │◀────│ (your instance) │
└────────────────┘ └──────────────┘ └──────────────────┘
stdio At startup:
1. Fetch OpenAPI spec
2. Parse paths → tools
3. Build Zod schemas
4. Register with MCP SDKPipeline:
Startup — reads
DOKPLOY_URLandDOKPLOY_API_KEYfrom environmentSpec fetch — calls
GET /api/settings.getOpenApiDocumenton the Dokploy instanceTool generation — iterates over every path+method in the OpenAPI spec, builds Zod input schemas from parameters and request bodies
Registration — registers each tool with the MCP SDK, including descriptions and safety annotations
Runtime — when a tool is called, the server makes the corresponding HTTP request to Dokploy with
x-api-keyauth and returns the JSON response
License
MIT — Copyright (c) 2025-2026 Sattva
This server cannot be installed
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 Servers
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.Last updated53
- Alicense-qualityDmaintenanceComprehensive, type-safe MCP server providing 380 tools to manage Dokploy deployments, applications, and infrastructure via natural language.Last updated295MIT
- Alicense-qualityDmaintenanceAn MCP server that enables AI assistants to manage Dokploy infrastructure (Docker, projects, applications, databases, etc.) through natural language, acting as a universal translator between AI and cloud systems.Last updated29MIT
- AlicenseAqualityBmaintenanceA comprehensive MCP server for Dokploy that provides 14 action-based tools covering the full DevOps lifecycle with minimal token usage. It enables AI assistants to manage projects, applications, databases, domains, servers, and more through a unified interface.Last updated17802MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
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/sattva2020/dokploy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server