MCP server for Docker Hub Image Stats — pulls, stars, search, batch lookup, publisher catalogs
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docker_hub_mcp-0.2.1.tar.gz.
File metadata
- Download URL: docker_hub_mcp-0.2.1.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a309cb30049a0e1ae4c908de65866f0fcbf45f29884a87e0a692e51ea5f0337
|
|
| MD5 |
449a65d4aac13127dd6983fd0abd4301
|
|
| BLAKE2b-256 |
5ebaae1bbf0d23aa5ee457071bf4226682484d1b1b7e4bdbc3dcfcc1726ec077
|
File details
Details for the file docker_hub_mcp-0.2.1-py3-none-any.whl.
File metadata
- Download URL: docker_hub_mcp-0.2.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bd6df31fa7a9d4df3f122181b0bf3bc5b3aecbfe4dd43bf30ccc59e0911c1d3
|
|
| MD5 |
930505d101e73357949f4a9032e1dcad
|
|
| BLAKE2b-256 |
8e55cb655c7c81456c8ba95f97b97c5289411c9dac41af2f74b0371cf037993a
|