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)
Installation
uv (recommended)
uvx docker-hub-mcp
pip
pip install docker-hub-mcp
docker-hub-mcp
Configuration
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 |
|---|---|---|
get_image_stats |
Pull count, star count, last updated, description, official/verified status | image (required) — "nginx" or "grafana/grafana" |
search_images |
Keyword search, ranked results | query (required), limit (default 50) |
batch_image_stats |
Concurrent lookup of up to 100 images | images (required, list) |
get_publisher_images |
All images in a namespace | publisher (required), limit (default 100) |
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-mcp
Run 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 | npm install |
| lucadruda/docker-hub-mcp-server | TypeScript | 49 (dynamic) | PAT | None | npm install |
| RSVINEETHA/DockerHub-MCP-Server | TypeScript | 8 | PAT (required) | None | npm install |
| This one (ours) | Python | 4 | None | 46 tests | uvx / pip install |
Our differentiators
- Zero auth — no API key, no PAT, no Docker account needed. Just
uvx docker-hub-mcp - Python ecosystem — only Python implementation. Install via
piporuvx, no Node.js needed - Batch operations —
batch_image_statsis unique — no competitor offers concurrent multi-image lookup - Test 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
Release files for docker-hub-mcp 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| docker_hub_mcp-0.2.2.tar.gz | 14.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| docker_hub_mcp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:24.4 kB
Release files / docker_hub_mcp-0.2.2.tar.gz
| Download URL | docker_hub_mcp-0.2.2.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
664850eedd0345d09db15889df52d23e61542007f0caf615ed74d5a72d820c87
|
|
BLAKE2b-256 checksum How to use checksums |
64888986e400107f1e62963b7c9c3b1e1bf70ef5655bc9268854dcebc260b6a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / docker_hub_mcp-0.2.2-py3-none-any.whl
| Download URL | docker_hub_mcp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2bb3a5d7724e516ea7304223ce98615c48979e538433c8eca2ef7bf79f925919
|
|
BLAKE2b-256 checksum How to use checksums |
fd39aef31c0aaa11a5408e06355d1ea3550ed55dbbe4eb746f7611328524ad29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|