Skip to main content
Glama

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 Hub

  • batch_image_stats(images) — concurrent lookup for up to 100 images

  • get_publisher_images(publisher, limit) — catalog all images from a namespace (e.g. library, bitnami, grafana)

Related MCP server: mcp-github-server

Installation

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/

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 pip or uvx, no Node.js needed

  • Batch operationsbatch_image_stats is 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

Available Tools

4 tools
batch_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYesList of Docker image names (max 100).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesDocker image name: 'nginx', 'python', 'grafana/grafana', etc.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-500, default: 100).
publisherYesDocker Hub namespace/publisher (e.g. 'library', 'grafana', 'nginx').

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100, default: 50).
queryYesSearch keyword (e.g. 'nginx', 'postgres', 'python').

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv0.1.0
    • First observedbatch_image_stats
    • First observedget_image_stats
    • First observedget_publisher_images
    • First observedsearch_images

TDQS

A4.1/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Docker Helper MCP server that provides tools for automating Docker tasks such as generating Dockerfiles, parsing docker-compose files, and optimizing images.
    16
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    2
    Apache 2.0

Latest Blog Posts

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