Docker Hub MCP — wraps the Docker Hub v2 API (free, no auth required for public data)
Three tools with complete input schemas and clear descriptions. All tools follow verb_noun naming (search_images, get_image, get_tags). Descriptions are adequate (100-180 chars) and explain what each tool does. However, output schemas are not documented, LLMs cannot see what fields to expect from responses. Parameter descriptions are present but lack constraints (e.g., no min/max for limit, no enum for namespace). Error handling is minimal, no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only operations.
Get metadata for a Docker Hub repository: pull count, star count, description, last updated, and full description.
List available tags for a Docker Hub image, ordered by last pushed date. Returns tag name, digest, size, and last pushed timestamp.
Search Docker Hub for public images. Returns repository name, description, pull count, star count, and whether it is official or automated.
Output schemas not documented. LLMs cannot see what fields responses contain (e.g., searchImages returns {total, images[{name, description, stars, pulls, is_official, is_automated}]} but this is invisible to the agent). Forces LLMs to guess field names and risks extraction errors.
Parameter constraints missing. 'limit' accepts 1 - 100 but no min/max declared in schema. 'namespace' should hint that 'library' is the official namespace, but no enum or pattern provided. LLMs may pass invalid values (limit=999, namespace='invalid').
No tool annotations. All three tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. Agents cannot distinguish safe tools from destructive ones without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. hubGet() throws generic errors ('Image not found: /path', 'Docker Hub API error: 404 Not Found') with no actionable next steps. Should suggest 'Try search_images() to find the correct namespace/name' or list available alternatives.
Parameter descriptions lack format hints. 'namespace' description says 'use "library" for official images' but does not clarify whether arbitrary strings are valid or if there is a fixed set. 'name' description lacks guidance on case sensitivity or special characters.