Open-source Model Context Protocol server that lets Claude or ChatGPT operate the Dokploy panel you host yourself.
Ask for a deployment, a database, a domain or the reason a build failed, in your own words. The assistant works through Dokploy's own HTTP API, with the permissions you granted and nothing more.
Full documentation: docs.dokploy.rest.
Work in progress. The interfaces described here already run, but they may still change.
| Area | Tools |
|---|---|
| Projects | list, inspect, create and delete projects and environments |
| Applications | create, wire a GitHub, git or docker source, choose the build, set environment variables, deploy, restart |
| Compose | create stacks, replace the compose file, list services, deploy the one-click template catalog |
| Databases | provision postgres, mysql, mariadb, mongo, redis or libsql with generated credentials |
| Domains | attach hostnames with Let's Encrypt, validate DNS, generate a test domain, update or delete |
| Deployments | build history, build logs, the global queue, cancel or kill a build |
| Infrastructure | docker containers, docker inspect, remote servers |
| Storage | volume, bind and file mounts for data that survives a redeploy |
| Routing | raw TCP and UDP ports, redirects such as www to apex, HTTP basic auth |
| Automation | cron jobs inside a container, S3 destinations, scheduled database backups |
| Everything else | api_find searches all 554 Dokploy endpoints, dokploy_api calls any of them |
Five playbooks ship with the server (deploy, troubleshoot, database, template, domains)
so the assistant follows Dokploy's real rules instead of guessing: build logs are not runtime logs,
a domain points at the container's listen port, databases talk over dokploy-network, and so on.
Add https://mcp.dokploy.rest as a custom connector in Claude or ChatGPT. You are sent to
dokploy.rest, you enter the address of your panel, sign in, choose the
organizations and the permissions, and you are back in the assistant. The connector never keeps
your password: it exchanges it for one API key per selected organization, created on your own
instance.
Run the same server on your own infrastructure:
git clone https://github.com/danbenba/dokploy-mcp
cd dokploy-mcp
cp apps/api/.env.example apps/api/.env
APP_KEY=$(openssl rand -base64 32) \
TOKEN_SECRET=$(openssl rand -base64 48) \
PUBLIC_URL=https://mcp.example.com \
WEB_URL=https://mcp-ui.example.com \
docker compose up -dPoint DOKPLOY_LOCKED_URL at a single panel if you want to skip the server-address step, and every
user of that deployment will authenticate against that instance only.
For a local assistant that already has an API key, skip OAuth entirely with the
dokploy-rest package:
claude mcp add dokploy \
-e DOKPLOY_URL=https://panel.example.com \
-e DOKPLOY_API_KEY=your-key \
-- npx -y dokploy-restPass several keys separated by commas to reach several organizations. See apps/cli/README.md for Claude Desktop, scope narrowing and all flags.
The server is also listed in the MCP registry as
io.github.danbenba/dokploy-mcp (see server.json) and ships a smithery.yaml for Smithery.
Claude mcp.dokploy.rest dokploy.rest your panel
│ │ │ │
│─ POST /oauth/register ──▶│ │ │
│─ GET /oauth/authorize ─▶│─ redirect /login?flow=… ──▶│ │
│ │◀─ POST /flow/verify ───────│─ GET /api/health ─────▶│
│ │◀─ POST /flow/login ────────│─ sign-in ─────────────▶│
│ │◀─ POST /flow/consent ──────│─ one key per org ─────▶│
│◀── redirect ?code=… ─────│ │ │
│─ POST /oauth/token ─────▶│ │ │
│─ POST /mcp (Bearer) ────▶│──────── x-api-key ─────────────────────────────────▶│
The server is a full OAuth 2.1 authorization server: RFC 8414 and RFC 9728 discovery documents,
RFC 7591 dynamic client registration, mandatory PKCE with S256, and a WWW-Authenticate challenge
carrying the resource metadata URL so Claude discovers everything on its own.
There is no database. Every token is an encrypted JWE that carries the connection it stands for, so the panel URL and its API key never sit in a store the server operator can read at rest.
- Panel addresses are verified before any credential is sent: DNS resolution, a public-address guard against SSRF, then two probes that confirm the host really is a Dokploy panel.
- Passwords are relayed once to the panel you named, exchanged for one API key per organization you selected, and never stored.
- Permissions are enforced twice: tools outside the granted scopes are not even listed, and every handler re-checks before touching the API.
- Destructive tools require an explicit confirmation argument on top of the
deletescope. - Revoking access is a single click in your own panel: delete the API keys.
apps/api AdonisJS server: MCP endpoint, OAuth authorization server, login flow API
apps/web Vite + React: landing page, login and consent screens, shared design system
apps/docs docs.dokploy.rest, Markdown rendered with apps/web's components
apps/legal legal.dokploy.rest, generated from PRIVACY.md, LICENSE and NOTICE
apps/cli npm package published as dokploy-rest, stdio transport
packages/core Shared core: Dokploy client, panel verification, endpoint catalog, tool surface
apps/docs and apps/legal import apps/web/src directly, through an @ alias pointing at it,
so the three sites share one copy of the tokens, fonts and components rather than three that drift.
npm install
npm run build -w packages/core
cp apps/api/.env.example apps/api/.env # then fill APP_KEY and TOKEN_SECRET
npm run dev -w apps/api # http://localhost:3333
npm run dev -w apps/web # http://localhost:5173
npm run dev -w apps/docs # http://localhost:5174
npm run dev -w apps/legal # http://localhost:5175Tests:
npm run test -w apps/api # 97 unit and functional tests
npm run test -w apps/cli # cli option resolutionThe Dokploy endpoint catalog embedded in packages/core/src/mcp/catalog.json is generated from
Dokploy's own openapi.json. Regenerate it after a Dokploy upgrade with the script in
CONTRIBUTING.md.
The hosted service keeps no database: every token is an encrypted JWE held by your client, and passwords are relayed once to your own panel and never stored. The full policy is in PRIVACY.md, published at legal.dokploy.rest/privacy.
Apache 2.0. Not affiliated with Dokploy Technology, Inc. See NOTICE.