用途
ocireg-mcp 是一个 MCP(Model Context Protocol)服务器,用于查询 OCI 注册表和镜像引用。它实现了基于 SSE 的 MCP 服务器,使 LLM 驱动的应用能够与 OCI 注册表交互。
主要能力
该服务器提供以下 MCP 工具:
- 获取 OCI 镜像信息:参数 image_ref(镜像引用,如 docker.io/library/alpine:latest),返回镜像的 digest、大小、架构、操作系统、创建日期和层数等信息。
- 列出仓库标签:参数 repository(仓库名称,如 docker.io/library/alpine),返回该仓库的标签列表。
- get_image_manifest:获取 OCI 镜像的清单。
- get_image_config:获取 OCI 镜像的配置。
使用方式
推荐使用 ToolHive 运行,ToolHive 提供安全的容器化 MCP 服务器部署方式。服务器启动后可供兼容 MCP 的客户端使用,并查询 OCI 注册表以获取镜像信息。
如需访问私有注册表,可通过 ToolHive 的密钥管理提供认证凭据。
访问私有 OCI 注册表的认证方式(按优先级)
- HTTP Authorization 头(最高优先级):在 HTTP 请求的 Authorization 头中包含 bearer token:
Authorization: Bearer <your-token>。此方法优先于所有其他认证方式;存在时环境变量和 Docker 配置将被忽略。 - Bearer Token 环境变量:设置
OCI_TOKEN:注册表认证的 bearer token。 - 用户名和密码:设置
OCI_USERNAME(注册表认证用户名)和OCI_PASSWORD(注册表认证密码)。 - Docker 配置(最低优先级):如果未提供其他认证,服务器将使用默认 Docker keychain,从 ~/.docker/config.json 读取凭据。
端口配置
可通过以下方式配置服务器监听端口:
- 环境变量
MCP_PORT:要监听的端口号(必须在 0 到 65535 之间)。如果未设置或无效,默认为端口 8080。 - 命令行标志
-port:覆盖环境变量设置(必须在 0 到 65535 之间)。如果提供无效端口则默认为端口 8080。示例:./ocireg-mcp -port 9090。
适用场景
适用于需要让 LLM 驱动应用与 OCI 注册表交互的场景,例如获取容器镜像信息、查询仓库标签、检查镜像清单和配置等。
限制与要求
- 需要 Go 1.21 或更高版本。
- 需要能够访问 OCI 注册表。
其他信息
欢迎贡献代码,贡献前请查看 CONTRIBUTING 指南。如遇 bug 或功能请求,可在仓库中提交 issue 或加入社区 Discord 服务器的 #mcp-servers 频道。项目采用 Apache v2 许可证,详见 LICENSE 文件。