Manage containers through MCP protocol with Podman. Supports container lifecycle management, image operations, and container inspection via MCP tools.
12 tools with clear verb-noun naming (list_, get_, start_, stop_, etc.) and basic descriptions. All tools have input schemas with type definitions and parameter descriptions. However, descriptions are terse (avg ~40 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit guidance on state modification. Output schemas are undocumented, LLMs cannot predict what fields to expect. Error handling is minimal: tools return raw stderr or generic 'Error:' messages without recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Parameter descriptions lack format constraints (e.g., 'container' accepts name or ID but doesn't explain the distinction). Missing idempotency guarantees and confirmation patterns for destructive ops (remove_container, exec_container).
Inspect a container by name or ID.
Get logs from a container.
Get resource usage statistics for containers.
Execute a command inside a container.
List containers (running by default, all if requested).
List container images.
Pull a container image from a registry.
Descriptions are terse (avg 40 chars vs 194-char baseline) and lack WHEN/WHY context. E.g., 'List containers' doesn't explain when to call it vs container_info or container_stats. LLMs cannot disambiguate similar tools.
Output schemas are completely undocumented. Tools return raw JSON or error strings, but LLMs have no schema to parse results or plan downstream calls. E.g., list_containers returns JSON but no field documentation.
No tool annotations despite clear risk levels. remove_container is DESTRUCTIVE but lacks destructiveHint. start_container, stop_container are state-modifying but lack idempotentHint. LLMs cannot reason about retry safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Remove a container.
Restart a container.
Run a new container.
Start a stopped container.
Stop a running container.
Error handling is minimal. Tools return raw stderr or generic 'Error: <message>' without recovery guidance. E.g., 'Error: container not found' doesn't suggest calling list_containers or checking the name.
Parameter 'container' accepts name or ID but description doesn't clarify the distinction or explain resolution logic. LLMs may pass ambiguous values. Similarly, 'ports' and 'volumes' in run_container lack format examples or constraints.