HTTP-based Model Context Protocol server for Docker operations with enhanced authentication and security
This server defines 20 Docker tools with basic schemas visible in tools.yaml. However, critical gaps emerge across naming, descriptions, and parameter documentation. Tool names follow verb-noun convention (good), but descriptions are extremely brief (3-8 words), well below the 194-char baseline for production tools. Parameter descriptions exist but lack constraints, ranges, and format guidance. Output schemas are not documented anywhere in the visible code. Error handling and recovery guidance are absent. The codebase shows sophisticated filtering logic (tool_gating.py) but this is not exposed as tool metadata or descriptions. Overall, the server is functional but falls short of production-grade tool design, descriptions do not meet LLM optimization standards, and no schema documentation is visible for outputs.
Create a new Docker container
Create Docker network
Create Docker volume
Deploy Docker Compose stack
Get Docker container logs
Get Docker system information
List all Docker containers
List Docker networks
Descriptions are critically brief (3 - 8 words). Examples: 'Verify Docker daemon connectivity', 'Get Docker system information', 'List all Docker containers'. Production baseline is 194 chars; these are 10 - 40 chars. LLMs cannot determine when/why to select these tools vs. alternatives.
No output schemas documented anywhere. LLMs cannot infer what fields each tool returns, breaking downstream tool chaining and result parsing. For example, list-containers should document it returns array of {id, name, status, ...} so agents know what IDs to extract.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 39 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 29 | 2024-11-05+ | v1 |
List Docker Swarm services
List Docker Compose stacks
List Docker volumes
Verify Docker daemon connectivity
Remove Docker Compose stack
Remove a Docker container
Remove Docker network
Remove Docker Swarm service
Remove Docker volume
Scale Docker Swarm service
Start a Docker container
Stop a Docker container
Parameter descriptions lack constraints and guidance. Example: 'filters' on list-containers has no description of valid filter keys or format. 'env' on create-container has no format guidance. 'timeout' on stop-container has no range (is it 1 - 300 seconds?). LLMs cannot validate inputs without explicit constraints.
No error handling or recovery guidance. Tools have no documented error cases or what to do if a container is not found, a compose YAML is invalid, or a service scale operation fails. Errors should guide the LLM toward recovery (e.g. 'Container not found. Try list-containers to find the correct ID').
Destructive operations (remove-container, remove-compose, remove-service, remove-network, remove-volume) lack confirmation or dry-run patterns. Agents can delete resources irreversibly without a safety gate. These high-risk tools should require explicit confirmation or offer a preview mode.
No permission declarations or scope metadata. Tools do not declare what permissions they require (e.g., 'read:containers', 'write:services', 'delete:volumes'). This prevents least-privilege agent configuration and audit trail clarity per pattern:scope-declaration.
Parameter names lack disambiguation. 'container_id' could be an opaque Docker ID or a human-readable name; tools should accept both or clarify in the description which is expected. Same issue with 'service_name', 'network_name', 'volume_name', no guidance on whether names or IDs are required.
Result limits not documented. List operations (list-containers, list-services, list-networks, list-volumes, list-stacks) do not mention pagination, max result count, or how to fetch paginated results. Returning all 500 containers would overwhelm context; a documented limit and cursor/offset pattern is required.