MCP server for managing Docker environments through Dockhand API, providing tools for containers, images, volumes, networks, stacks, and optional features like backups, users, registries, vulnerabilities, git deployments, and schedules.
Strong foundation with 43 well-named tools following verb_noun convention (list_, get_, deploy_, etc.). All tools have descriptions (avg ~120 chars, within baseline 34-392 range). Input schemas present and typed for all tools. Key gaps: parameter descriptions are minimal (often just 1-2 words like 'Environment ID'), output schemas not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification in metadata. Composition is sound, tools chain well (e.g., list_environments → list_containers → get_container). Security: credentials injected server-side via config, not exposed as parameters.
Cancel a running backup started by run_backup_config.
Cancel a running git stack deploy started by deploy_git_stack.
Cancel a running image pull started by pull_image.
Cancel a running stack deploy started by deploy_stack.
Cancel a running vulnerability scan started by scan_image_for_vulnerabilities.
Sync and redeploy a git-backed stack. Returns immediately with a jobId — call get_git_deploy_status with that jobId to check progress, and cancel_git_deploy to abort. Check the "success" field in the final result once done — a failed deploy is reported there, not as a tool error.
Parameter descriptions are minimal (1-2 words). 'Environment ID' and 'Container ID' lack context on format, constraints, or how to obtain them. LLMs cannot infer whether to pass a UUID, name, or opaque string.
Output schemas not documented. Tools return JSON but LLMs cannot see field names, types, or structure. Agents cannot plan downstream calls or extract required IDs for chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification in metadata (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 84 | 2026-07-28+ | v2 |
Deploy or update a Compose stack. Returns immediately with a jobId — call get_stack_deploy_status with that jobId to check progress, and cancel_stack_deploy to abort.
Check the status of a backup run started by run_backup_config.
Get full inspect details for a single container.
Get recent logs for a container.
Check the status of a git stack deploy started by deploy_git_stack.
Check the status of an image pull started by pull_image.
Get full details for a single stack, including its compose file.
Check the status of a stack deploy started by deploy_stack.
Get full inspect details for a single volume.
Check the status of a vulnerability scan started by scan_image_for_vulnerabilities.
List configured backups (stack or volume backup jobs) in Dockhand.
List containers in a Dockhand environment.
List all Dockhand environments (Docker hosts). Call this first to discover valid environmentId values for other tools.
List git-backed Compose stacks in Dockhand.
List images in a Dockhand environment.
List networks in a Dockhand environment.
List configured container registries in Dockhand. Credentials are never included — only a hasCredentials flag.
List all roles in Dockhand.
List all active Dockhand schedules (container auto-updates, git stack syncs, backups, and system jobs).
List backup snapshots, optionally scoped to a single backup config.
List Compose stacks in a Dockhand environment.
List all users in Dockhand.
List volumes in a Dockhand environment.
List vulnerability scan results, optionally filtered by image or environment.
Pull an image from a registry. Returns immediately with a jobId — call get_image_pull_status with that jobId to check progress, and cancel_image_pull to abort.
Remove (delete) a container.
Remove (delete) an image.
Remove (delete) a stack.
Remove (delete) a volume.
Restart a container.
Manually trigger a backup config to run now. Returns immediately with a jobId — call get_backup_run_status with that jobId to check progress, and cancel_backup_run to abort.
Manually trigger a schedule to run now.
Scan an image for vulnerabilities. Returns immediately with a jobId — call get_vulnerability_scan_status with that jobId to check progress, and cancel_vulnerability_scan to abort.
Start a stopped container.
Stop a running container.
Pull the latest commit for a git-backed stack from its remote, without redeploying.
Enable or disable a schedule. Flips its current enabled state — check the returned "enabled" field to see the new state.
Error handling in toErrorResult() returns generic messages ('Dockhand API error (status): message'). No recovery guidance, no actionable next steps for LLMs.
Pagination not visible in list tools (list_containers, list_images, list_volumes, list_stacks). No limit, offset, or cursor parameters. Large result sets risk context window exhaustion.