Docker Hub MCP Server

Docker Hub MCP Server

Enables LLMs to search Docker Hub repositories, discover container images, and manage Docker Hub repositories and tags through natural language queries. Supports both public content access and authenticated operations with Docker Personal Access Tokens.

Category
访问服务器

README

Docker Hub MCP Server

Trust Score

The Docker Hub MCP Server is a Model Context Protocol (MCP) server that interfaces with Docker Hub APIs to make them accessible to LLMs, enabling intelligent content discovery and repository management.

Developers building with containers, especially in AI and LLM-powered workflows, often face inadequate context across the vast landscape of Docker Hub images. As a result, LLMs struggle to recommend the right images, and developers lose time manually searching instead of building.

<p align="center"> <img src="hubmcp.gif" alt="Demo" width="50%" style="border: 1px solid #ccc; border-radius: 8px;" /> </p>

Use Cases

  • AI-powered image recommendations - LLMs access real-time Docker Hub data for accurate container image suggestions.
  • Enhanced content discovery - AI tools help developers find the right images faster.
  • Simplified Hub workflows - Manage Docker repositories and images using natural language.

Prerequisites

Setup

  1. Build

    npm install
    npm run build
    
  2. Run

     npm start -- [--transport=http|stdio] [--port=3000]
    
  • Default args:
    • transport: Choose between http or stdio (default: stdio)
    • port=3000 This starts the server with default settings and can only access public Docker Hub content.

Run in inspector [Optional]

The MCP Inspector provides a web interface to test your server:

npx @modelcontextprotocol/inspector node dist/index.js [--transport=http|stdio] [--port=3000]

Authenticate with docker

By default this MCP server can only query public content on Docker Hub. In order to manage your repositories you need to provide authentication.

Run with authentication

HUB_PAT_TOKEN=<a_pat_token> npm start -- [--username=<the_hub_username_for_the_pat>]

Run in inspector [Optional]

HUB_PAT_TOKEN=<a_pat_token> npx @modelcontextprotocol/inspector node dist/index.js[--username=<the_hub_username_for_the_pat>]

Usage in Docker Ask Gordon

You can configure Gordon to be a host that can interact with the Docker Hub MCP server.

Gordon Setup

Ask Gordon is your personal AI assistant embedded in Docker Desktop and the Docker CLI. It's designed to streamline your workflow and help you make the most of the Docker ecosystem.

You can configure Gordon to be a client that can interact with the Docker Hub MCP server.

  1. Create the gordon-mcp.yml file file in your working directory.
  2. Replace environment variables in the gordon-mcp.yml with your Docker Hub username and a PAT token.
services:
  hub:
    image: hub
    environment:
      - HUB_PAT_TOKEN=<your_pat_token>
    command:
      - --username=<your_hub_username>
  1. Run docker build -t hub .
  2. Run docker ai

Usage in other MCP Clients

Usage with Claude Desktop

NOTE: Make sure you have already built the application as mentioned in Step 1.

  1. Add the Docker Hub MCP Server configuration to your claude_desktop_config.json:

NOTE: if you are using nvm to manage node versions, you should put the node binary path in the command property. This ensure MCP server runs with the right node version. You can find your binary path by running which node in your shell

For public repositories only:

  • /FULL/PATH/TO/YOUR/docker-hub-mcp-server - The complete path to where you cloned this repository
{
    "mcpServers": {
        "docker-hub": {
            "command": "node", // or absoulute binary path
            "args": ["/FULL/PATH/TO/YOUR/docker-hub-mcp-server/dist/index.js", "--transport=stdio"]
        }
    }
}

For authenticated access (recommended):

Replace the following values:

  • YOUR_DOCKER_HUB_USERNAME - Your Docker Hub username
  • YOUR_DOCKER_HUB_PERSONAL_ACCESS_TOKEN - Your Docker Hub Personal Access Token
  • /FULL/PATH/TO/YOUR/docker-hub-mcp-server - The complete path to where you cloned this
{
    "mcpServers": {
        "docker-hub": {
            "command": "node",
            "args": [
                "/FULL/PATH/TO/YOUR/docker-hub-mcp-server/dist/index.js",
                "--transport=stdio",
                "--username=YOUR_DOCKER_HUB_USERNAME"
            ],
            "env": {
                "HUB_PAT_TOKEN": "YOUR_DOCKER_HUB_PERSONAL_ACCESS_TOKEN"
            }
        }
    }
}
  1. Save the configuration file and completely restart Claude Desktop for the changes to take effect.

Usage with VS Code

  1. Add the Docker Hub MCP Server configuration to your User Settings (JSON) file in VS Code. You can do this by opening the Command Palette and typing Preferences: Open User Settings (JSON).

For public repositories only:

  • /FULL/PATH/TO/YOUR/docker-hub-mcp-server - The complete path to where you cloned this repository
{
    "mcpServers": {
        "docker-hub": {
            "command": "node",
            "args": ["/FULL/PATH/TO/YOUR/docker-hub-mcp-server/dist/index.js", "--transport=stdio"]
        }
    }
}

For authenticated access (recommended):

Replace the following values:

  • YOUR_DOCKER_HUB_USERNAME - Your Docker Hub username
  • YOUR_DOCKER_HUB_PERSONAL_ACCESS_TOKEN - Your Docker Hub Personal Access Token
  • /FULL/PATH/TO/YOUR/docker-hub-mcp-server - The complete path to where you cloned this
{
    "mcpServers": {
        "docker-hub": {
            "command": "node",
            "args": [
                "/FULL/PATH/TO/YOUR/docker-hub-mcp-server/dist/index.js",
                "--transport=stdio",
                "--username=YOUR_DOCKER_HUB_USERNAME"
            ],
            "env": {
                "HUB_PAT_TOKEN": "YOUR_DOCKER_HUB_PERSONAL_ACCESS_TOKEN"
            }
        }
    }
}
  1. Open the Command Palette and type MCP: List Servers.
  2. Select docker-hub and select Start Server.

Task Examples

Finding images

# Search for official images
$ docker ai "Search for official nginx images on Docker Hub"

# Search for lightweight images to reduce deployment size and improve performance
$ docker ai "Search for minimal Node.js images with small footprint"

# Get the most recent tag of a base image
$ docker ai "Show me the latest tag details for go"

# Find a production-ready database with enterprise features and reliability
$ docker ai "Search for production ready database images"

# Compare Ubuntu versions to choose the right one for my project
$ docker ai "Help me find the right Ubuntu version for my project"

Repository Management

# Create a repository
$ docker ai "Create a repository in my namespace"

# List all repositories in my namespace
$ docker ai "List all repositories in my namespace"

# Find the largest repository in my namespace
$ docker ai "Which of my repositories takes up the most space?"

# Find repositories that haven't been updated recently
$ docker ai "Which of my repositories haven't had any pushes in the last 60 days?"

# Find which repositories are currently active and being used
$ docker ai "Show me my most recently updated repositories"

# Get details about a repository
$ docker ai "Show me information about my '<repository-name>' repository"

Pull/Push Images

# Pull latest PostgreSQL version
$ docker ai "Pull the latest postgres image"

# Push image to your Docker Hub repository
$ docker ai "Push my <image-name> to my <repository-name> repository"

Tag Management

# List all tags for a repository
$ $ docker ai "Show me all tags for my '<repository-name>' repository"

# Find the most recently pushed tag
$ docker ai "What's the most recent tag pushed to my '<repository-name>' repository?"

# List tags with architecture filtering
$ docker ai "List tags for in the '<repository-name>' repository that support amd64 architecture"

# Get detailed information about a specific tag
$ docker ai "Show me details about the '<tag-name>' tag in the '<repository-name>' repository"

# Check if a specific tag exists
$ docker ai "Check if version 'v1.2.0' exists for my 'my-web-app' repository"

Docker Hardened Images

# List available hardened images
$ docker ai "What is the most secure image I can use to run a node.js application?"

# Convert Dockerfile to use a hardened image
$ docker ai "Can you help me update my Dockerfile to use a docker hardened image instead of the current one"

Tools

Search

  • search - Search repositories and content using Search V4 API
    • query: Search query parameter (string, required)
    • architectures: Filter on architectures (string, optional)
    • badges: Filter by image content type badges (string, optional)
    • categories: Filter on categories (string, optional)
    • extension_reviewed: Filter on reviewed extensions (boolean, optional)
    • from: Number of documents to skip for pagination (number, optional)
    • images: Filter on image names (string, optional)
    • operating_systems: Filter on operating systems (string, optional)
    • order: Change the ordering of results (string, optional)
    • size: Maximum number of results to return (number, optional)
    • sort: Sort results by search field (string, optional)
    • type: Filter on repository content type (string, optional)

Namespace Management

  • get_namespaces - Get list of namespaces the user is a member of
    • page: Page number for pagination (string, optional)
    • page_size: Number of items per page (string, optional)

Repository Management

  • list_repositories_by_namespace - List all repositories under the provided namespace

    • namespace: Repository namespace (string, required)
    • content_types: Comma-delimited list of content types (string, optional)
    • media_types: Comma-delimited list of media types (string, optional)
    • name: Search by repository name (string, optional)
    • ordering: Sort order (string, optional)
    • page: Page number (number, optional)
    • page_size: Number of items per page (number, optional)
  • get_repository_info - Get information about a repository

    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
  • check_repository - Check if a repository exists

    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
  • check_repository_tag - Check if a specific tag exists in a repository

    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
    • tag: Tag name (string, required)
  • create_repository - Create a new repository in the provided namespace

    • namespace: Repository namespace (string, required)
    • body: Request body data (object, optional)
  • update_repository_info - Update repository information

    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
    • body: Request body data (object, optional)

Tag Management

  • list_repository_tags - List all tags for a repository
    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
    • architecture: Filter by architecture (string, optional)
    • os: Filter by operating system (string, optional)
    • page: Page number (number, optional)
    • page_size: Number of items per page (number, optional)
  • read_repository_tag - Get details of a specific repository tag
    • namespace: Repository namespace (string, required)
    • repository: Repository name (string, required)
    • tag: Tag name (string, required)

Hardened Images

  • docker_hardened_images - Query for mirrored Docker Hardened Images (DHI) in the namespace
    • namespace: The namespace to query for mirrored hardened repositories (string, optional)

Licensing

docker/hub-mcp is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选