docker-hub-mcp
This server provides four tools to query Docker Hub, requiring no authentication:
get_image_stats: Fetch metadata (pull count, stars, description, official/verified status, last updated) for a single image.
search_images: Search by keyword and get ranked results; limit output (default 50, max 100).
batch_image_stats: Concurrently look up stats for up to 100 images, returning a summary table.
get_publisher_images: List all images from a given publisher namespace (e.g.,
library,bitnami), up to 500 results.
Provides tools for querying Docker Hub image statistics, including pulls, stars, descriptions, official/verified status, and publisher catalogs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@docker-hub-mcpCompare pull counts for nginx, httpd, and caddy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Docker Hub MCP Server
A Model Context Protocol (MCP) server for querying Docker Hub image statistics. Provides pull counts, star counts, descriptions, official/verified status, and publisher catalogs through the public Docker Hub API — no API key required.
Features
get_image_stats(image)— single image metadata (pulls, stars, last_updated, description, is_official, is_verified)search_images(query, limit)— keyword search across Docker Hubbatch_image_stats(images)— concurrent lookup for up to 100 imagesget_publisher_images(publisher, limit)— catalog all images from a namespace (e.g.library,bitnami,grafana)
Related MCP server: mcp-github-server
Installation
uv (recommended)
uvx docker-hub-mcppip
pip install docker-hub-mcp
docker-hub-mcpConfiguration
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"docker-hub-mcp": {
"command": "uvx",
"args": ["docker-hub-mcp"]
}
}
}Cursor / VS Code
Add to your MCP configuration:
{
"mcpServers": {
"docker-hub-mcp": {
"command": "uvx",
"args": ["docker-hub-mcp"]
}
}
}Hermes Agent (MCP Gateway)
Add to ~/.hermes/gateway.yaml:
docker-hub-mcp:
command: uvx docker-hub-mcp
lazy_spawn: true
timeout: 30s
env: {}Tools
Tool | Description | Key Params |
| Pull count, star count, last updated, description, official/verified status |
|
| Keyword search, ranked results |
|
| Concurrent lookup of up to 100 images |
|
| All images in a namespace |
|
Examples
# Get stats for nginx
get_image_stats({"image": "nginx"})
# → pull_count: 13.2B, star_count: 21K, is_official: true
# Search for postgres
search_images({"query": "postgres", "limit": 5})
# → ranked results with pulls, stars, official flags
# Batch compare web servers
batch_image_stats({"images": ["nginx", "httpd", "caddy", "traefik"]})
# Catalog a publisher
get_publisher_images({"publisher": "bitnami", "limit": 25})Data Source
Uses the Docker Hub API (/v2/repositories and /v2/search).
Auth: None required for public data
Rate limit: ~4,400 requests per 6 hours (unauthenticated)
Development
git clone https://github.com/GeniusTechnoMystic/docker-hub-mcp.git
cd docker-hub-mcp
uv sync
uv run docker-hub-mcpRun tests:
uv run pytest tests/Related Projects
Other Docker Hub MCP servers in the ecosystem:
Project | Language | Tools | Auth | Tests | Install |
docker/hub-mcp (official) | TypeScript | 13 | PAT (optional) | Yes |
|
TypeScript | 49 (dynamic) | PAT | None |
| |
TypeScript | 8 | PAT (required) | None |
| |
This one (ours) | Python | 4 | None | 46 tests |
|
Our differentiators
Zero auth — no API key, no PAT, no Docker account needed. Just
uvx docker-hub-mcpPython ecosystem — only Python implementation. Install via
piporuvx, no Node.js neededBatch operations —
batch_image_statsis unique — no competitor offers concurrent multi-image lookupTest coverage — 46 tests with mocked HTTP (pytest-httpx), the most thorough test suite of any Docker Hub MCP server
MIT license — permissive, easy to embed
When to use the alternatives
docker/hub-mcp — if you need repository management (create, update, delete), tag listing, or Docker Hardened Images. Requires PAT for write operations.
lucadruda/docker-hub-mcp-server — if you need full Docker Hub API coverage (collaborators, webhooks, stars, namespaces). Requires PAT.
RSVINEETHA/DockerHub-MCP-Server — minimal alternative, requires PAT.
License
MIT
Available Tools
4 toolsbatch_image_statsA
Batch lookup metadata for up to 100 Docker Hub images in parallel. Pass a list of image names (e.g. ['nginx', 'python', 'grafana/grafana']). Returns a summary table with pulls, stars, and status for each.
| Name | Required | Description | Default |
|---|---|---|---|
| images | Yes | List of Docker image names (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: parallel execution, a maximum of 100 images, and the output format (a summary table with pulls, stars, and status). It does not mention auth or error handling, but for a metadata lookup these are not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then includes input format and output details. Every sentence earns its place, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers operation, constraints, input format, and return summary. It omits error behavior, but that is not essential for a batch lookup. It is sufficiently complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter at 100%, so the baseline is 3. The description adds value with concrete examples (['nginx', 'python', 'grafana/grafana']) and clarifies the expected list format, which goes beyond the schema's basic 'List of Docker image names (max 100)'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('batch lookup metadata') on a specific resource (Docker Hub images), with a scope limit ('up to 100') and parallel execution. This distinguishes it from sibling tools like get_image_stats (single image) and search_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it explains to pass a list of image names and gives an example. It does not explicitly name alternatives or exclusion criteria, but the batch nature and sibling tool names imply when to use this tool. It lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_statsA
Fetch metadata for a single Docker Hub image. Accepts both 'library/nginx' and 'nginx' (auto-prepends 'library/') formats. Returns pulls, stars, description, official/verified status, last updated.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Docker image name: 'nginx', 'python', 'grafana/grafana', etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses useful behavior: it accepts both 'library/nginx' and 'nginx' formats with auto-prepending, and lists return fields. However, it does not explicitly mention read-only status or error conditions, though these are minor for a metadata fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and add only essential details (format handling and return fields). No waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description fully covers input formats and return fields, making it complete for the agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the parameter with examples, but the description adds the key behavior of auto-prepending 'library/' and the two accepted formats, providing meaningful semantic context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches metadata for a single Docker Hub image, with a specific verb and resource. It distinguishes from siblings like batch_image_stats by emphasizing 'single' and listing specific return fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context (single image metadata) and implies batch use for multiple images, but does not explicitly name alternatives or state when not to use this tool. It is effective but lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publisher_imagesA
List all images for a given publisher/namespace on Docker Hub. Useful for auditing an organisation's image catalog. Defaults to 100 results, max 500.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1-500, default: 100). | |
| publisher | Yes | Docker Hub namespace/publisher (e.g. 'library', 'grafana', 'nginx'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses default and max result limits, but the phrase 'List all images' is misleading given the 500 max. It does not mention read-only nature, pagination, or rate limits, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every sentence earns its place. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description would benefit from explaining the return structure or how to handle more than 500 results. The 'all images' claim conflicts with the explicit limit, leaving a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully describes both parameters. The description adds no extra parameter detail; it only restates the default and max already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List all images') on a specific resource ('publisher/namespace on Docker Hub'), which distinguishes it from sibling tools like search_images. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear use-case context ('auditing an organisation's image catalog'), but does not explicitly exclude alternatives or mention when to prefer a sibling tool. This is clear context without full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_imagesA
Search Docker Hub images by keyword. Returns results with name, namespace, description, pull_count, star_count, is_official, is_automated, and last_updated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1-100, default: 50). | |
| query | Yes | Search keyword (e.g. 'nginx', 'postgres', 'python'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the return fields, which gives insight into the output. However, it does not mention potential side effects, authentication requirements, rate limits, or behavior for empty results. For a read-only search tool, safety is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary fluff. It effectively communicates the action and expected output in a compact format, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no output schema), and the description covers the core purpose and the return fields, which is essential since no output schema exists. It lacks some guidance on limits or error behavior, but for a basic search tool, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema: 'query' is described similarly, and 'limit' is already well-documented in the schema. The description adds no extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Search Docker Hub images by keyword.' This clearly distinguishes it from sibling tools like get_image_stats and batch_image_stats, which focus on statistics rather than search. The list of return fields (name, namespace, etc.) further clarifies the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for keyword-based searches but does not explicitly mention alternatives or when not to use. For instance, it does not say 'use get_image_stats for statistics rather than search.' The context is clear enough to infer, but no exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
batch_image_stats - First observed
get_image_stats - First observed
get_publisher_images - First observed
search_images
TDQS
Each tool serves a clearly distinct purpose: search by keyword, fetch metadata for a single image, fetch metadata for multiple images in batch, and list images by publisher. There is no practical overlap that would confuse an agent.
Three tools follow a verb_noun pattern (search_images, get_image_stats, get_publisher_images), but batch_image_stats deviates by starting with an adjective rather than a verb. The naming is mostly consistent and readable, with one minor irregularity.
With 4 tools covering search, single lookup, batch lookup, and publisher listing, the count falls well within the ideal 3-15 range. Each tool serves a practical need without redundancy.
The tool set covers core image read operations, but lacks common features like listing image tags or getting detailed manifest information. Agents can work around these gaps, but they are notable for a Docker Hub service.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Docker Hub MCP — wraps the Docker Hub v2 API (free, no auth required for public data)
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Public MCP server for discovering open jobs. Search, filter, and get application links.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceDocker Helper MCP server that provides tools for automating Docker tasks such as generating Dockerfiles, parsing docker-compose files, and optimizing images.16MIT
- FlicenseNot gradedqualityDmaintenanceA simple MCP server that provides repository information (list repos, get repo details) using GitHub's public REST API, without needing any API keys or tokens.-
- AlicenseNot gradedqualityDmaintenanceA production-ready Model Context Protocol (MCP) server that provides comprehensive DockerHub integration for AI assistants. This server enables AI assistants to search, analyze, and manage Docker images through standardized MCP tools.MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for querying OCI container registries. Provides tools and prompts for interacting with registries like Docker Hub, GHCR, and other OCI-compatible registries.2Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GeniusTechnoMystic/docker-hub-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server