ocireg MCP Server
官方一个基于SSE的MCP服务器,允许LLM驱动的应用程序与OCI注册表交互。它提供用于检索容器镜像信息、列出标签等功能的工具。
文档
OCI Registry MCP 服务器
一个 MCP(模型上下文协议)服务器,提供用于查询 OCI
注册表和镜像引用的工具。
概述
本项目实现了一个基于 SSE 的 MCP 服务器,允许由 LLM 驱动的 应用程序与 OCI 注册表进行交互。它提供了用于获取 容器镜像信息、列出标签等功能的工具。
特性
- 获取 OCI 镜像信息
- 列出仓库的标签
- 获取镜像清单
- 获取镜像配置
MCP 工具
该服务器提供以下 MCP 工具:
get_image_info
获取 OCI 镜像的信息。
输入:
image_ref:镜像引用(例如 docker.io/library/alpine:latest)
输出:
- 镜像信息,包括摘要、大小、架构、操作系统、创建日期和 层数
list_tags
列出仓库的标签。
输入:
repository:仓库名称(例如 docker.io/library/alpine)
输出:
- 仓库的标签列表
get_image_manifest
获取 OCI 镜像的清单。
输入:
image_ref:镜像引用(例如 docker.io/library/alpine:latest)
输出:
- 镜像清单
get_image_config
获取 OCI 镜像的配置。
输入:
image_ref:镜像引用(例如 docker.io/library/alpine:latest)
输出:
- 镜像配置
用法
使用 ToolHive 运行(推荐)
运行 OCI Registry MCP 服务器最简单的方法是使用 ToolHive,它提供了安全、 容器化的 MCP 服务器部署:
# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install
# Register a supported client so ToolHive can auto-configure your environment
thv client setup
# Run the OCI Registry MCP server (packaged as 'oci-registry' in ToolHive)
thv run oci-registry
# List running servers
thv list
# Get detailed information about the server
thv registry info oci-registry
该服务器将对您的 MCP 兼容客户端可用,并可以查询 OCI 注册表以获取镜像信息。
使用 ToolHive 进行身份验证
如果您需要访问私有注册表,可以使用 ToolHive 的密钥管理功能提供身份验证 凭据:
# For bearer token authentication
thv secret set oci-token
# Enter your bearer token when prompted
thv run --secret oci-token,target=OCI_TOKEN oci-registry
# For username/password authentication
thv secret set oci-username
thv secret set oci-password
# Enter your credentials when prompted
thv run --secret oci-username,target=OCI_USERNAME --secret oci-password,target=OCI_PASSWORD oci-registry
开发
先决条件
- Go 1.21 或更高版本
- 访问 OCI 注册表
身份验证
服务器支持以下用于访问私有 OCI 注册表的身份验证方法(按优先级排序):
-
HTTP Authorization 标头(最高优先级):在 HTTP 请求的
Authorization标头中包含一个持有者令牌:Authorization: Bearer <your-token>- 此方法优先于所有其他身份验证方法
- 当存在时,环境变量和 Docker 配置将被忽略
-
持有者令牌环境变量:设置以下环境变量:
OCI_TOKEN:用于注册表身份验证的持有者令牌
-
用户名和密码:设置以下环境变量:
OCI_USERNAME:用于注册表身份验证的用户名OCI_PASSWORD:用于注册表身份验证的密码
-
Docker 配置(最低优先级):如果未提供其他身份验证, 服务器将使用默认的 Docker 密钥链,该密钥链从
~/.docker/config.json读取凭据。
示例:
# HTTP Authorization header (for per-request authentication)
# This is handled automatically by the MCP client when making requests
# Example: curl -H "Authorization: Bearer mytoken" http://localhost:8080/...
# Bearer token authentication via environment variable
export OCI_TOKEN=mytoken
# Username/password authentication via environment variables
export OCI_USERNAME=myuser
export OCI_PASSWORD=mypassword
端口配置
可以使用以下任一方式将服务器配置为在特定端口上监听:
-
环境变量:
MCP_PORT:要监听的端口号(必须在 0 到 65535 之间)- 如果未设置或无效,则默认为端口 8080
-
命令行标志:
-port:覆盖环境变量设置(必须在 0 到 65535 之间)- 如果提供的端口无效,则默认为端口 8080
- 示例:
./ocireg-mcp -port 9090
测试
go test ./...
代码检查
golangci-lint run
贡献
我们欢迎对此 MCP 服务器的贡献!如果您想贡献,请 查看 CONTRIBUTING 指南 以了解如何 开始的详细信息。
如果您遇到错误或有功能请求,请
在仓库中 提交问题
或加入我们 社区 Discord 服务器 上的 #mcp-servers 频道。
许可证
本项目根据 Apache v2 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。