OCI注册表查询工具

一个基于MCP协议的服务器,提供查询OCI注册表和容器镜像信息的工具,适用于容器化应用开发和部署。

  • by StacklokLabs
  • Go
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 StacklokLabs/ocireg-mcp

使用说明

OCI 注册表 MCP 服务器

一个提供用于查询OCI(开放容器镜像)工具的MCP(模型上下文协议)服务器 注册表和镜像引用。

概述

这个项目实现了一个基于SSE的MCP服务器,该服务器支持由大型语言模型(LLM)驱动的功能 用于与OCI注册表进行交互的应用程序。它提供了用于检索的工具 有关容器镜像的信息,包括标签列表等。

特性/特点

  • 获取有关OCI镜像的信息
  • 为仓库列出标签
  • 获取镜像清单
  • 获取图像配置

MCP 工具

服务器提供以下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)

输出:

  • 图像配置

使用方法/用途

使用 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(Oracle Cloud Infrastructure) 图像信息的注册表。

使用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 注册表(按优先级顺序):

  1. HTTP 授权头 (最高优先级):在(请求/消息中)包含一个承载令牌 HTTP请求的 Authorization 头球

    • Authorization: Bearer <your-token>
    • 此方法优先于所有其他认证方法
    • 当存在时,忽略环境变量和Docker配置
  2. 承载令牌环境变量设置以下环境变量:

    • OCI_TOKEN用于注册表认证的承载令牌
  3. 用户名和密码设置以下环境变量:

    • OCI_USERNAME用于注册表认证的用户名
    • OCI_PASSWORD注册表认证的密码
  4. 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

端口配置

服务器可以配置为使用以下任一方式监听特定端口:

  1. 环境变量:

    • MCP_PORT监听的端口号(必须在0到65535之间)
    • 如果未设置或设置无效,则默认使用端口8080
  2. 命令行标志:

    • -port覆盖环境变量设置(必须在0到...之间) 和65535)
    • 如果提供的端口无效,则默认使用8080端口
    • 示例: ./ocireg-mcp -port 9090

测试

go test ./...

代码检查(或代码规范检查)

golangci-lint run

贡献

我们欢迎向这个MCP服务器贡献内容!如果您愿意贡献,请 审查/回顾 贡献指南 关于如何获取的详细信息 开始。

如果你遇到bug或有功能需求,请 提出一个问题 在……中 仓库或加入我们 #mcp-servers 在我们的(平台上/频道里) 社区Discord服务器。

许可证

此项目采用Apache v2许可证授权——有关详情,请参阅LICENSE文件 细节。