Skip to content

Available MCP Tools

Free Tier

ToolDescription
list_containersList containers with status, filterable by state
get_containerDetail for one container by name/ID
get_container_logsFetch recent log lines
list_imagesList container images
list_volumesList volumes
list_networksList networks
list_deploy_appsList Paste & Deploy apps + their last deploy status
list_git_deploy_appsList Git Deployment apps + their last deploy status
list_git_providersList connected Git providers (GitHub App, GitLab/Bitbucket/Gitea tokens) — connect new ones from Settings → Git Providers in the web UI, not via MCP
create_deploy_appCreate a new Git Deployment app; returns the SSH deploy key to add to the repo
trigger_deploy_appTrigger a deploy for an existing Git Deployment app by name
delete_deploy_appPermanently delete a Git Deployment app (stack, images, build history, deploy key)
add_domainPoint a custom domain at a Git Deployment app's service (Traefik + Let's Encrypt, or a local certificate for .test/.local)
get_system_infoHost CPU/RAM/disk info
list_databasesList provisioned databases (Postgres/MySQL/Redis/MongoDB/ClickHouse/DragonflyDB) with connection info
create_databaseProvision a new database container
start_databaseStart a stopped database container
stop_databaseStop a running database container (data on its volume is preserved)
delete_databasePermanently delete a database container
link_database_to_appConnect a provisioned database to a Git Deployment app over container networking and inject connection env vars
unlink_database_from_appDisconnect a database from a Git Deployment app and remove its injected env vars

None of the tools above are Pro-gated — they're capped by the same plan limits the web UI already enforces (2 deploy apps, 2 provisioned/linked databases on Free — see Pricing), not a separate MCP-specific counter or ceiling. add_domain doesn't add its own cap either — domains are bundled into the deploy-app limit.

add_domain auto-detects local-only domains (.test, .local, .localhost, .example, .invalid — IANA-reserved TLDs that can never resolve publicly) and issues them a certificate from DockPod's own local certificate authority instead of attempting Let's Encrypt, which would just fail (see Custom Domains for how this works and how to trust the CA). No ACME email is needed for these. Any other domain still needs an ACME email configured under Settings → General → Reverse Proxy first; without one it returns an error explaining that instead of creating a domain that could never get a certificate — unless skip_tls is set, which routes over plain HTTP with no certificate at all (local or otherwise).

create_deploy_app's branch has no default — it's a required parameter, so the AI is expected to ask which branch to deploy (e.g. main vs master) rather than silently guessing.

link_database_to_app/unlink_database_from_app exist because list_databases/create_database only return the host-facing 127.0.0.1:<port> connection string, which isn't reachable from inside a deployed app's own container. Linking connects the database's container to the app's dedicated network and injects <PREFIX>_HOST/_PORT/_NAME/_USER/_PASSWORD/_URL env vars using the database's container name instead — see Linking a Database.

Pro Tier — Actions

ToolDescription
start_containerStart a stopped container
stop_containerStop a running container
restart_containerRestart a container
pull_imagePull a container image by reference
trigger_deployTrigger a deploy for a named Paste & Deploy app
rollback_deploy_appRoll back a Git Deployment app to its previous successful build
scale_deploy_appSet the replica count (1-10) for an image-based Git Deployment app (Dockerfile/Nixpacks/Railpack — not compose)
set_deploy_app_resourcesSet the memory/CPU/pids limits for a Git Deployment app — image-based or compose, unlike scale_deploy_app
run_execRun a restricted command inside a container

scale_deploy_app only applies to image-based deploy modes — compose apps define their own service topology and aren't scaled this way. If the app is already running, replicas are added/removed live with no rebuild; otherwise the new count takes effect on the next deploy. Traefik round-robins across replicas automatically, no extra configuration needed.

set_deploy_app_resources works for both deploy modes. Pass memory_mb (required, 128–16384, or 0 to reset to the default 512MB), and optionally cpu_limit_m (millicores, 1000 = 1 vCPU, 100–16000, or 0/omitted to reset to the default 1 vCPU) and pids_limit (64–8192, or 0/omitted to reset to the default 512). For a compose app, one shared value applies to every service in the project, not a distinct value per service. If the app is running, the new limits are applied live via the Docker API — no rebuild or restart; otherwise they apply on the next deploy.

Calling a Pro tool without a valid license returns a clear error explaining the tool requires an upgrade — the conversion prompt happens right inside the AI conversation, no need to switch to the web UI. These are genuinely Pro-only (no Free-tier equivalent at any count), unlike the plan-limited tools above.

Auth

MCP requests authenticate via Authorization: Bearer dp_mcp_... — an API key generated under Settings → API Keys, not your login session. Keys are bcrypt-hashed at rest; only the prefix is ever shown again after creation, so treat the full key like a password and store it somewhere safe when you generate it.

Audit Trail

Every key can be assigned to a specific team member at creation time (the "Assign to" picker, shown once more than one user exists). Tool calls made with that key show up in Settings → Team → Audit Log attributed to that person by username — so on a shared install, you know who actually told the AI to do what, not just that "the MCP server" did something. Keys created before this existed (or with no owner picked) attribute their calls to "Unknown" rather than erroring.

Released under a commercial-friendly freemium license.