dokploy-api-mcp

Deploy and manage applications on Dokploy (self-hosted PaaS). Use when deploying apps, managing Docker Compose services, databases (PostgreSQL, MySQL, MariaDB, MongoDB, Redis), configuring domains, SSL, backups, notifications, rollbacks, scheduled tasks, environments, organizations, SSO, preview deployments, patches, Docker Swarm clusters, running migrations, or troubleshooting Dokploy deployments. Covers tRPC API (449 endpoints), CLI, MCP server (449 tools), and common pitfalls with Next.js, Docker, and Traefik.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dokploy-api-mcp" with this command: npx skills add sattva2020/skills/sattva2020-skills-dokploy-api-mcp

Dokploy Deployment

Deploy and manage applications on a self-hosted Dokploy instance (v0.28.4+). Dokploy is an open-source PaaS (alternative to Vercel/Heroku) using Docker + Traefik v3.

Quick Reference

ItemValue
Dashboardhttps://<DOKPLOY_HOST>/
API basehttps://<DOKPLOY_HOST>/api/
Swagger UIhttps://<DOKPLOY_HOST>/swagger (browser login required)
Auth headerx-api-key: <TOKEN>
CLI installnpm install -g @dokploy/cli
MCP server@sattva/dokploy-mcp (449 tools — full API coverage)
API versionOpenAPI 3.1.0, 449 endpoints
Docshttps://docs.dokploy.com

First Run — Setup

On first use, check if the Dokploy MCP server is configured. If not, run the interactive setup:

1. Check: does ~/.claude/mcp.json contain a "dokploy" server entry?
2. If NO → run: python3 skills/dokploy-api-mcp/scripts/setup.py
   (or the full path in the user's skill installation directory)
3. The script will:
   - Ask for Dokploy URL (e.g., https://dokploy.example.com)
   - Ask for API key (generated in Dashboard → Settings → Profile → API/CLI)
   - Validate the connection
   - Auto-configure ~/.claude/mcp.json with the MCP server
4. Tell the user: "Restart Claude Code to activate the Dokploy MCP server."

With CLI arguments (non-interactive):

python3 skills/dokploy-api-mcp/scripts/setup.py --url https://dokploy.example.com --key YOUR_API_KEY

After setup, the MCP server (@sattva/dokploy-mcp, 449 tools) will be available on next Claude Code restart. Prefer MCP tools over curl for all operations.

Environment Variables

Before using this skill, ensure these are available:

DOKPLOY_URL=https://dokploy.example.com
DOKPLOY_API_KEY=<generated-api-token>

Generate API token: Dashboard → Settings → Profile → API/CLI → Generate.

Deployment Workflow

Step 1: Check Current State

# Get application status
curl -s -X GET "${DOKPLOY_URL}/api/trpc/application.one?input=$(python3 -c "
import urllib.parse, json
print(urllib.parse.quote(json.dumps({'json':{'applicationId':'APP_ID'}})))
")" -H "x-api-key: ${DOKPLOY_API_KEY}"

Step 2: Trigger Deploy

# Deploy application (POST — mutation)
curl -s -X POST "${DOKPLOY_URL}/api/application.deploy" \
  -H "x-api-key: ${DOKPLOY_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"json":{"applicationId":"APP_ID"}}'

Step 3: Monitor Deploy Status

# Poll deployment status
curl -s -X GET "${DOKPLOY_URL}/api/trpc/deployment.all?input=$(python3 -c "
import urllib.parse, json
print(urllib.parse.quote(json.dumps({'json':{'applicationId':'APP_ID'}})))
")" -H "x-api-key: ${DOKPLOY_API_KEY}"

Step 4: Verify Health

curl -sk "https://<app-domain>/api/health"

API Reference

Dokploy uses tRPC internally. Two request formats:

Queries (read) — GET with encoded input

GET /api/trpc/<router>.<procedure>?input=URL_ENCODED({"json":{...}})
Header: x-api-key: <token>

Mutations (write) — POST with JSON body

POST /api/<router>.<procedure>
Header: x-api-key: <token>
Header: Content-Type: application/json
Body: {"json":{...}}

Key Endpoints

See references/API-REFERENCE.md for the full list (449 endpoints).

EndpointMethodPurpose
project.allGETList all projects
project.oneGETGet project by ID
application.oneGETGet app details + status
application.deployPOSTTrigger deployment
application.stopPOSTStop application
application.startPOSTStart application
application.updatePOSTUpdate app settings
application.saveBuildTypePOSTChange build type
application.saveEnvironmentPOSTSet environment variables
compose.oneGETGet compose service
compose.deployPOSTDeploy compose service
deployment.allGETList deployments for app
domain.byApplicationIdGETGet domains for app
domain.createPOSTAdd custom domain
postgres.oneGETGet PostgreSQL service
redis.oneGETGet Redis service
mariadb.oneGETGet MariaDB service
mongo.oneGETGet MongoDB service
environment.byProjectIdGETList environments
rollback.rollbackPOSTRollback deployment
schedule.createPOSTCreate scheduled task
backup.createPOSTCreate backup config
notification.createTelegramPOSTSetup Telegram notifications
docker.getContainersByAppNameMatchGETList Docker containers
application.readTraefikConfigGETRead Traefik config

CLI Usage

# Install
npm install -g @dokploy/cli

# Authenticate (creates ~/.config/dokploy/config.json)
dokploy authenticate

# Verify token
dokploy verify

# Application management
dokploy app create   # Create new application
dokploy app deploy   # Deploy application
dokploy app stop     # Stop application
dokploy app delete   # Delete application

# Database management
dokploy db create    # Create database service
dokploy db delete    # Delete database service

# Environment variables
dokploy env set      # Set env vars
dokploy env list     # List env vars

# Project management
dokploy project create
dokploy project list

MCP Server (449 tools — full API coverage)

When MCP is available, ALWAYS prefer MCP tools over curl. MCP handles tRPC URL encoding and response parsing automatically.

See references/MCP-TOOLS.md for the full 449-tool reference.

Setup

Automatic (recommended): Run the setup script from the "First Run" section above — it configures MCP automatically.

Manual (~/.claude/mcp.json):

{
  "mcpServers": {
    "dokploy": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@sattva/dokploy-mcp"],
      "env": {
        "DOKPLOY_URL": "https://dokploy.example.com/api",
        "DOKPLOY_API_KEY": "<your-api-token>"
      }
    }
  }
}

Note: On macOS/Linux use "command": "npx" directly instead of cmd /c. Local dev: use "command": "node", "args": ["e:/My/MCP/dokploy-mcp/dist/index.js"].

MCP Tools by Category (449 total)

CategoryToolsDescription
application_*29App lifecycle, deploy, config, git providers
compose_*28Docker Compose services
settings_*49Server settings, Traefik, cleanup, monitoring
notification_*38Slack/Telegram/Discord/Email/Webhook/Gotify/Ntfy/Pushover/Lark/Teams
user_*18User management, API keys, permissions
server_*16Remote server management
postgres_*14PostgreSQL management
redis_*14Redis management
mysql_*14MySQL management
mariadb_*14MariaDB management
mongo_*14MongoDB management
patch_*12File patches
backup_*11Database backups
organization_*10Organizations, invitations
sso_*10SSO/SAML enterprise auth
domain_*9Domain/SSL management
ai_*9AI-powered compose generator
deployment_*8Deployment history, queue
project_*8Project management
gitea_*8Gitea provider
docker_*7Container operations
bitbucket_*7Bitbucket provider
registry_*7Docker registries
gitlab_*7GitLab provider
stripe_*7Billing (cloud)
environment_*7Environments per project
github_*6GitHub provider
licenseKey_*6Enterprise licensing
sshKey_*6SSH key management
mounts_*6Volume mounts
destination_*6S3 backup destinations
schedule_*6Scheduled tasks/cron
volumeBackups_*6Volume backups
certificates_*4SSL certificates
cluster_*4Docker Swarm cluster
port_*4Port management
redirects_*4URL redirects
security_*4Security settings
previewDeployment_*4Preview deployments
swarm_*3Swarm node info
gitProvider_*2Git provider generic
rollback_*2Deployment rollbacks
admin_*1Admin setup

MCP Deployment Workflow

1. application_one                → check current status
2. application_saveEnvironment    → set/update env vars if needed
3. application_saveBuildType      → ensure Dockerfile build configured
4. application_deploy             → trigger deployment
5. application_one                → poll until applicationStatus = "done"
6. curl health endpoint           → verify app is working

MCP Limitations (use Dashboard only)

  • Build/container logs — WebSocket only, no MCP or REST endpoint
  • Docker exec into container — No API endpoint, use SSH to VPS

Everything else is available through MCP tools, including: Redis, MariaDB, MongoDB, Compose, Backups, Notifications, Schedules, Rollbacks, SSO, Patches, Organizations, and more.

Common Pitfalls

See references/PITFALLS.md for detailed solutions.

ProblemCauseFix
COPY /app/public failsGit ignores empty dirsRUN mkdir -p public in Dockerfile
DB connection errorNeon HTTP driver vs standard PGUse postgres (postgres.js) package
Clerk publishableKey missingSSG validates env at buildexport const dynamic = "force-dynamic" + skip provider in build phase
Container crash with migrate.mjsstandalone output lacks modulesRun migrations via in-app API endpoint
Build logs unavailable via APIWebSocket only, no RESTCheck Dashboard UI or poll deployment.all for status
Container logs unavailable via APIWebSocket onlyUse Dashboard UI
External DB port unreachableVPS firewall blocks portUse internal Docker network names
SSL certificate error from curlSelf-signed or Let's Encrypt delayUse curl -sk or wait for cert provisioning
404 on API routes after deployRoute not in standalone outputVerify route exists in .next/standalone
Traefik middleware broken after upgradeDokploy v0.25+ uses Traefik v3Update middleware config syntax

Build Types

Dokploy supports:

TypeWhen to use
DockerfileCustom builds, multi-stage, full control
NixpacksAuto-detect language, zero config
BuildpackHeroku/Paketo compatible apps
Docker ImagePre-built images from registry

Services (Databases)

Create via Dashboard → Project → Add Service:

  • PostgreSQL — internal hostname: <appName>:5432
  • MySQL/MariaDB — internal hostname: <appName>:3306
  • MongoDB — internal hostname: <appName>:27017
  • Redis — internal hostname: <appName>:6379

Internal hostnames use Docker network. External ports optional (may need firewall rules).

Domain & SSL

  1. Add domain via Dashboard or API (domain.create)
  2. Point DNS A-record to VPS IP
  3. Dokploy auto-provisions Let's Encrypt certificate via Traefik v3
  4. HTTPS works automatically after DNS propagation

Next.js Specific Guide

See references/NEXTJS-GUIDE.md for full details on deploying Next.js 14/15 to Dokploy.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

find-skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

Repository Source
10.3K565.2K
vercel-labs
Coding

frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.

Repository SourceNeeds Review
94.2K160.3K
anthropics
Coding

remotion-best-practices

Use this skills whenever you are dealing with Remotion code to obtain the domain-specific knowledge.

Repository Source
2.1K147.9K
remotion-dev