MCP server for managing Docker containers, images, networks, and volumes
The server defines 9 Docker management tools with basic schemas and descriptions, but has significant gaps in parameter descriptions, output schema documentation, and error handling guidance. Most tools follow a simple verb_noun naming pattern (good), but descriptions are minimal and parameter constraints are poorly documented. Output schemas are implicit (inferred from return types) rather than explicitly documented. Error handling is present but does not guide the LLM on recovery paths. The server would benefit from richer parameter descriptions, explicit output schema documentation, and actionable error messages.
Create a new container from a specified image and command.
Get real-time statistics for a container.
Check if the server is running and can connect to Docker.
Get detailed information about a container.
List all containers (running and stopped).
Remove a container.
Create and start a container in one step.
Output schemas are not documented. Tools return Dict[str, Any] or List[Dict[str, Any]] with no explicit schema declaration of what fields the LLM should expect. This forces the LLM to guess field names and types, increasing error-prone parsing and context waste.
Parameter descriptions are minimal or missing context. Example: 'ports' param in create_container and run_container is described only as 'Port mappings' with type 'object', but does not explain the expected structure (e.g., {'80/tcp': 8080} vs {'80': '8080'}), format, or examples of valid inputs.
Error handling does not guide recovery. Tools raise generic exceptions (e.g., 'Error listing containers: {e}') without categorizing errors as retryable, user-fixable, or fatal, and without providing actionable next steps for the LLM.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
Start a stopped container.
Stop a running container.
Destructive tool (remove_container) lacks confirmation or dry-run support. Agents can irreversibly delete containers without a confirmation step, risking data loss.
Parameter 'environment' and 'volumes' in create_container and run_container lack detailed format specifications. LLMs cannot infer whether volumes should be {'/host/path': {'bind': '/container/path', 'mode': 'ro'}} or a simpler format, leading to API call failures.
Tools do not document required permissions or scope declarations. No indication of what Docker permissions (e.g., read, write, admin) are needed for each tool.
get_container_stats 'stream' parameter documentation is unclear. States 'returns a generator that yields stats' but the tool is async, the LLM cannot consume a generator in a streaming context without explicit protocol support.