Model Context Protocol (MCP) server for container runtimes (Podman and Docker)
The server defines 15 tools with consistent verb_noun naming (container_list, image_inspect, etc.) and all have brief descriptions. However, most descriptions are extremely short (8 - 25 chars), leaving LLMs with minimal context about WHEN to use each tool or WHAT it returns. Input schemas are present and mostly well-typed, but output schemas are not documented in the provided source. Parameter descriptions are present but terse. Error handling, recovery guidance, and composition support are not evident from the code. The server covers a focused domain (Podman container/image/network/volume operations) competently but with gaps in description depth and output documentation that prevent higher scoring.
Inspect a container
List all containers
Get container logs
Remove a container
Restart a container
Start a container
Get container statistics
Stop a container
Inspect an image
Tool descriptions are uniformly minimal (8 - 25 characters). LLMs cannot determine WHEN to use each tool, what it returns, or how it differs from similar tools. Baseline for A-grade tools: 50 - 200 chars with actionable context.
Output schemas are not documented in the provided source code. LLMs cannot reason about what fields will be returned or plan downstream tool calls. All tools must document their response structure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List all images
Remove an image
Inspect a network
List all networks
Inspect a volume
List all volumes
No error handling or recovery guidance visible in tool definitions. LLMs have no way to know if a failure is retryable, fixable by the user, or fatal. Examples: 'Container not found. Use container_list to see available containers.' or 'Force removal failed due to running processes. Stop the container first or use force=true.'
Container and image removal tools (container_remove, image_remove) are destructive but lack confirmation or dry-run capability. LLMs could accidentally delete critical resources. Recommendation: Add an optional 'dry_run' parameter or require explicit confirmation.
List tools (container_list, image_list, network_list, volume_list) lack pagination parameters (limit, offset, page) and result count documentation. If a user has 100+ containers, the LLM will receive the full list, exhausting context and degrading reasoning.
Parameter descriptions are present but minimal. Baselines require 50 - 150 chars per parameter. Example: 'Include stdout logs' tells LLMs nothing about what happens if both stdout and stderr are false, or if follow=true, does it block? Stream results?