这是一个基于 Model Context Protocol (MCP) 的服务器,提供查询 OCI 注册表和镜像引用的工具。
该项目实现了一个基于 SSE 的 MCP 服务器,允许由 LLM 驱动的应用程序与 OCI 注册表进行交互。它提供了检索容器镜像信息、列出标签等功能。
该服务器提供了以下 MCP 工具:
获取 OCI 镜像的信息。
输入:
image_ref: 镜像引用(例如,docker.io/library/alpine:latest)输出:
列出存储库的标签。
输入:
repository: 存储库名称(例如,docker.io/library/alpine)输出:
获取 OCI 镜像的清单。
输入:
image_ref: 镜像引用(例如,docker.io/library/alpine:latest)输出:
获取 OCI 镜像的配置。
输入:
image_ref: 镜像引用(例如,docker.io/library/alpine:latest)输出:
运行 OCI 注册表 MCP 服务器最简单的方法是使用 ToolHive,它提供了 MCP 服务器的安全容器化部署:
# 安装 ToolHive(如果尚未安装)
# 参见:https://docs.stacklok.com/toolhive/guides-cli/install
# 注册一个受支持的客户端,以便 ToolHive 自动配置您的环境
thv client setup
# 运行 OCI 注册表 MCP 服务器(在 ToolHive 中打包为 'oci-registry')
thv run oci-registry
# 列出正在运行的服务器
thv list
# 获取有关服务器的详细信息
thv registry info oci-registry
该服务器将对您的 MCP 兼容客户端可用,并可以查询 OCI 注册表以获取镜像信息。
如果您需要访问私有注册表,可以通过 ToolHive 的密钥管理提供身份验证凭据:
# 对于 Bearer Token 身份验证
thv secret set oci-token
# 在提示时输入您的 Bearer Token
thv run --secret oci-token,target=OCI_TOKEN oci-registry
# 对于用户名/密码身份验证
thv secret set oci-username
thv secret set oci-password
# 在提示时输入您的凭据
thv run --secret oci-username,target=OCI_USERNAME --secret oci-password,target=_OCI_PASSWORD oci-registry
该服务器支持以下用于访问私有 OCI 注册表的身份验证方法(按优先级顺序):
HTTP 授权头(最高优先级):在 HTTP 请求的 Authorization 头中包含 Bearer Token:
Authorization: Bearer <your-token>Bearer Token 环境变量:设置以下环境变量:
OCI_TOKEN: 注册表身份验证的 Bearer Token用户名和密码:设置以下环境变量:
OCI_USERNAME: 注册表身份验证的用户名OCI_PASSWORD: 注册表身份验证的密码Docker 配置(最低优先级):如果没有提供其他身份验证,则服务器将使用默认的 Docker 密钥链,从 ~/.docker/config.json 读取凭据。
示例:
# HTTP 授权头(用于每次请求的身份验证)
# 这是由 MCP 客户端在发送请求时自动处理的
# 示例:curl -H "Authorization: Bearer mytoken" http://localhost:8080/...
# 通过环境变量进行 Bearer Token 身份验证
export OCI_TOKEN=mytoken
# 通过环境变量进行用户名/密码身份验证
export OCI_USERNAME=myuser
export OCI_PASSWORD=mypassword
该服务器可以通过以下方式配置监听特定端口:
环境变量:
MCP_PORT: 监听的端口号(必须在 0 和 65535 之间)命令行标志:
-port: 覆盖环境变量设置(必须在 0 和 65535 之间)./ocireg-mcp -port 9090go test ./...
golangci-lint run
我们欢迎对此 MCP 服务器的贡献!如果您想贡献,请查看 CONTRIBUTING 指南了解如何开始。
如果您遇到错误或有功能需求,请在仓库中 打开一个问题 或加入我们的社区 Discord 服务器中的 #mcp-servers 频道。
本项目根据 Apache v2 许可证发布 - 详情请参阅 LICENSE 文件。