MCP server for Dokploy — dynamically generates 420+ tools from the Dokploy OpenAPI spec. Deploy, manage, and monitor your self-hosted infrastructure through AI assistants.
| Feature | @sattva/dokploy-mcp | Community alternatives |
|---|---|---|
| Auth method | x-api-key header (correct) |
Often missing or incorrect |
| API coverage | 420+ tools (full OpenAPI) | Manual subset (~30-50 tools) |
| Dependencies | 2 (@modelcontextprotocol/sdk, zod) |
Often pulls in OpenAI SDK, axios, etc. |
| Update strategy | Auto-generates from live spec | Manual maintenance required |
| Safety annotations | readOnlyHint / destructiveHint |
Usually missing |
| Package size | ~25 KB (dist only) | Varies |
- Dynamic OpenAPI discovery — fetches the spec from your Dokploy instance at startup, so new API endpoints are available immediately after a Dokploy upgrade
- 420+ tools — every Dokploy API endpoint becomes an MCP tool automatically
- Correct
x-api-keyauthentication — uses the proper header that Dokploy expects - Zod input validation — OpenAPI schemas are converted to Zod for runtime type checking
- Safety annotations — read-only operations are marked with
readOnlyHint, destructive ones withdestructiveHint - Zero-config updates — upgrade Dokploy, restart the MCP server, get new tools
- Minimal dependencies — only
@modelcontextprotocol/sdkandzod
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@latestAdd 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/mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
| Windsurf | ~/.windsurf/mcp.json |
DOKPLOY_URL=https://dokploy.example.com \
DOKPLOY_API_KEY=your-api-key-here \
npx @sattva/dokploy-mcp@latest| Variable | Required | Description |
|---|---|---|
DOKPLOY_URL |
Yes | Base URL of your Dokploy instance (e.g. https://dokploy.example.com). Do not append /api — the server adds it automatically. |
DOKPLOY_API_KEY |
Yes | API key for authentication |
- Log in to your Dokploy dashboard
- Go to Settings → Profile
- Under API / Tokens, click Generate Token
- Copy the generated key
OpenAPI paths are converted to tool names:
| OpenAPI Path | Tool Name |
|---|---|
/api/application.one |
application_one |
/api/project.all |
project_all |
/api/server.create |
server_create |
/api/docker.getContainers |
docker_getContainers |
/api/domain.update |
domain_update |
The tools are organized by Dokploy's API structure:
| Category | Examples | Description |
|---|---|---|
| Application | application_one, application_create, application_deploy |
Manage applications |
| Project | project_all, project_create, project_one |
Manage projects |
| Server | server_all, server_create, server_one |
Manage servers |
| Docker | docker_getContainers, docker_getConfig |
Docker operations |
| Domain | domain_create, domain_update, domain_all |
Domain management |
| Deployment | deployment_all, deployment_allByApplication |
Deployment history |
| Database | mysql_*, postgres_*, mariadb_*, mongo_*, redis_* |
Database services |
| Compose | compose_* |
Docker Compose services |
| Registry | registry_all, registry_create, registry_one |
Container registries |
| Certificate | certificates_* |
SSL certificates |
| User | user_all, user_one, user_update |
User management |
| Settings | settings_* |
Instance settings |
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.
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
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_modules- 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
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+.
git clone https://github.com/sattva2020/dokploy-mcp.git
cd dokploy-mcp
npm install
npm run build# 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"
}
}
}
}┌────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ 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 SDK
Pipeline:
- Startup — reads
DOKPLOY_URLandDOKPLOY_API_KEYfrom environment - Spec fetch — calls
GET /api/settings.getOpenApiDocumenton the Dokploy instance - Tool 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
MIT — Copyright (c) 2025-2026 Sattva