Docker Hub MCP Server(hub-mcp)是一个 Model Context Protocol(MCP)服务器,用于对接 Docker Hub API,使大语言模型(LLM)能够访问这些 API,从而实现智能的内容发现和仓库管理。它主要面向使用容器进行开发的开发者,尤其是在 AI 和 LLM 驱动的工作流中,解决因 Docker Hub 镜像数量庞大而导致的上下文不足问题,帮助 LLM 推荐正确的镜像,减少开发者手动搜索的时间。
主要能力
- AI 驱动的镜像推荐:LLM 可访问实时 Docker Hub 数据,提供准确的容器镜像建议。
- 增强的内容发现:AI 工具帮助开发者更快找到合适的镜像。
- 简化 Docker Hub 工作流:支持使用自然语言管理 Docker 仓库和镜像。
环境要求与运行方式
需要安装 Docker 和 Node.js(版本 22 及以上),可选提供一个具有相应权限的 Docker Personal Access Token(PAT)。构建与运行命令如下:
# 安装依赖
npm install
# 构建
npm run build
# 运行
npm start -- [--transport = http | stdio] [--port = 3000] [--host = 127.0.0.1]
默认参数:transport 可选 http 或 stdio(默认 stdio);port=3000;host=127.0.0.1(仅 HTTP 传输使用)。默认设置下启动的服务器只能访问公开的 Docker Hub 内容。
HTTP 传输默认绑定到 127.0.0.1(回环地址),并且要求认证。在暴露到网络之前,需要先阅读“保护 HTTP 传输”部分。
也可以使用 MCP Inspector 提供的 Web 界面来测试服务器(可选)。
保护 HTTP 传输
- 回环绑定:除非传入
--host=<addr>(例如--host=0.0.0.0以从容器中暴露),监听器默认绑定到 127.0.0.1。 - 强制认证(失败即关闭):在 http 模式下,除非提供 bearer token 或明确选择退出,否则服务器拒绝启动。可通过
MCP_AUTH_TOKEN环境变量设置 token,客户端必须在每个请求中发送Authorization: Bearer <token>。 - DNS 重绑定 / CSRF 保护:当 Host 头不在允许列表(回环地址加上
--host,可通过--allowed-hosts扩展)中,或请求带有未在--allowed-origins中列出的浏览器 Origin 头时,请求会被拒绝。非浏览器 MCP 客户端不受影响。
使用认证运行 HTTP 传输的示例如下:
# 根据文档,需设置 MCP_AUTH_TOKEN 并指定 transport http
如需超出回环地址暴露(例如在容器内),仍需认证。--allow-unauthenticated 会完全禁用认证,并将你的 Docker Hub PAT 暴露给任何能访问该端口的客户端。仅在可信的隔离网络中使用。
认证
默认情况下,该 MCP 服务器只能查询 Docker Hub 上的公开内容。要管理自己的仓库,需要提供认证。运行时可设置 Docker Hub 用户名和 PAT 令牌。
在 Docker Ask Gordon 中使用
可以将 Gordon 配置为与 Docker Hub MCP 服务器交互的宿主。Ask Gordon 是嵌入 Docker Desktop 和 Docker CLI 的个人 AI 助手。配置步骤包括:在工作目录创建 gordon-mcp.yml 文件,替换其中的环境变量为 Docker Hub 用户名和 PAT 令牌,然后运行 docker build -t hub .。
在其他 MCP 客户端中使用
与 Claude Desktop 配合使用
需先完成构建步骤,然后将 Docker Hub MCP Server 配置添加到 claude_desktop_config.json 中。配置时需注意:如果使用 nvm 管理 Node 版本,应在 command 属性中填写 node 二进制路径(可通过 which node 查找),以确保 MCP 服务器使用正确的 Node 版本。配置中需替换以下值:YOUR_DOCKER_HUB_USERNAME、YOUR_DOCKER_HUB_PERSONAL_ACCESS_TOKEN、/FULL/PATH/TO/YOUR/docker-hub-mcp-server。保存配置后需完全重启 Claude Desktop 使更改生效。
与 VS Code 配合使用
在 VS Code 的用户设置(JSON)中添加 Docker Hub MCP Server 配置(可通过命令面板输入 Preferences: Open User Settings (JSON) 打开)。然后打开命令面板,输入 MCP: List Servers,选择 docker-hub,再选择 Start Server。
主要工具与能力
仓库管理与镜像推送/拉取
以及 Docker Hardened Images 相关功能。
search(搜索)
使用 Search V4 API 搜索仓库和内容。支持参数:
query:搜索查询参数(字符串,必填)architectures:按架构过滤(字符串,可选)badges:按镜像内容类型徽章过滤(字符串,可选)categories:按类别过滤(字符串,可选)extension_reviewed:按已审核扩展过滤(布尔值,可选)from:分页时跳过的文档数量(数字,可选)images:按镜像名称过滤(字符串,可选)operating_systems:按操作系统过滤(字符串,可选)order:更改结果排序(字符串,可选)size:返回的最大结果数(数字,可选)sort:按搜索字段排序结果(字符串,可选)type:按仓库内容类型过滤(字符串,可选)
命名空间管理
get_namespaces:获取用户所属的命名空间列表。参数:page(字符串,可选)、page_size(字符串,可选)。list_repositories_by_namespace:列出指定命名空间下的所有仓库。参数:namespace(字符串,必填)、content_types(字符串,可选)、media_types(字符串,可选)、name(字符串,可选)、ordering(字符串,可选)、page(数字,可选)、page_size(数字,可选)。get_repository_info:获取仓库信息。参数:namespace(字符串,必填)、repository(字符串,必填)。check_repository:检查仓库是否存在。参数:namespace(字符串,必填)、repository(字符串,必填)。check_repository_tag:检查仓库中是否存在特定标签。参数:namespace(字符串,必填)、repository(字符串,必填)、tag(字符串,必填)。create_repository:在指定命名空间创建新仓库。参数:namespace(字符串,必填)、body(对象,可选)。update_repository_info:更新仓库信息。参数:namespace(字符串,必填)、repository(字符串,必填)、body(对象,可选)。list_repository_tags:列出仓库的所有标签。参数:namespace(字符串,必填)、repository(字符串,必填)、architecture(字符串,可选)、os(字符串,可选)、page(数字,可选)、page_size(数字,可选)。read_repository_tag:获取特定仓库标签的详情。参数:namespace(字符串,必填)、repository(字符串,必填)、tag(字符串,必填)。
Docker Hardened Images
docker_hardened_images:查询命名空间中镜像的 Docker Hardened Images(DHI)。参数:namespace(字符串,可选)。
适用场景
- 开发者在 AI/LLM 工作流中需要快速找到合适的容器镜像。
- 使用自然语言管理 Docker Hub 仓库、标签和命名空间。
- 将 Docker Hub 操作集成到 Claude Desktop、VS Code 或 Docker Ask Gordon 等 MCP 客户端中。
限制与说明
- 默认仅能访问公开 Docker Hub 内容;管理私有仓库需配置认证。
- HTTP 传输默认绑定回环地址并要求认证,暴露到网络时需注意安全配置,防止 PAT 泄露。
- 需要 Node.js 22+ 和 Docker 环境。
- 项目采用 Apache License 2.0 许可。
- 收费、价格、平台等信息暂未提供。