本项目是一个基于 Model Context Protocol (MCP) 构建的服务器实现,专为集成 Red Hat Quay 容器镜像仓库而设计。它允许大语言模型 (LLM) 客户端通过标准化的 JSON-RPC 接口调用 Quay 的 API 功能。

项目简介

Quay MCP Server 充当 LLM 客户端与 Quay 容器注册表之间的桥梁。它将 Quay 的核心管理操作封装为一系列可供 LLM 调用的“工具”。通过使用此服务器,LLM 应用程序可以智能地查询 Quay 仓库信息、管理组织和团队成员等。

主要功能点

  • 查询组织成员: 获取指定 Quay 组织的所有成员列表。
  • 查询团队成员: 获取指定组织内某个特定团队的成员列表。
  • 添加团队成员: 将用户添加为指定组织内某个特定团队的成员。
  • 列出仓库: 列出指定 Quay 组织下的所有容器仓库。
  • 创建仓库: 在指定组织下创建一个新的容器仓库,可设定可见性和描述。

这些功能都通过标准化的 MCP 工具接口暴露给 LLM 客户端。

安装步骤

本项目通常以容器镜像的形式运行。您需要安装 Podman 或 Docker 等容器运行时。

  1. 拉取容器镜像: 使用 Podman 或 Docker 命令从 Quay.io 拉取服务器镜像:

    podman pull quay.io/maorfr/quay-mcp
    # 或者
    docker pull quay.io/maorfr/quay-mcp
  2. 配置 Quay 访问: 服务器需要知道 Quay 实例的地址以及访问各组织的 API 令牌。这些信息通过环境变量提供:

    • 'QUAY_URL': Quay 注册表的基础 URL(例如:'https://quay.io' 或您的私有 Quay 实例地址)。
    • 'QUAY_TOKEN_<ORG_NAME>': 为每个需要访问的组织 '<ORG_NAME>' 提供一个具有必要权限的 Quay API 令牌。例如,要访问名为 'myorg' 的组织,需要设置 'QUAY_TOKEN_MYORG' 环境变量。

服务器配置(供 MCP 客户端使用)

MCP 客户端(如某些 LLM 应用)需要配置如何启动和连接到此 MCP 服务器。以下是典型的配置结构,客户端需要提供启动服务器的命令、参数和环境变量:

{
  "mcpServers": {
    "quay": {  // 服务器名称,客户端通过此名称引用
      "command": "podman", // 或 "docker" - 用于启动容器的命令
      "args": [ // 启动容器的参数
        "run",
        "-i", // 保持 stdin 开放,Stdio 传输需要
        "--rm", // 容器停止后自动移除
        "-e", "QUAY_URL", // 将宿主机的 QUAY_URL 环境变量传入容器
        "-e", "QUAY_TOKEN_YOUR_ORG_NAME_1", // 将宿主机的对应组织令牌环境变量传入容器
        "-e", "QUAY_TOKEN_YOUR_ORG_NAME_2", // 可以传入多个组织的令牌
        "quay.io/maorfr/quay-mcp" // MCP 服务器容器镜像名称
      ],
      "env": { // 也可以直接在这里指定需要传递给容器的环境变量及其值
        "QUAY_URL": "YOUR_QUAY_URL", // 替换为您的 Quay 实例地址
        "QUAY_TOKEN_YOUR_ORG_NAME_1": "YOUR_TOKEN_FOR_ORG_1", // 替换为您的组织名称和令牌
        "QUAY_TOKEN_YOUR_ORG_NAME_2": "YOUR_TOKEN_FOR_ORG_2"  // 根据需要添加更多组织
      }
    }
  }
}

请将上述配置中的占位符(如 'YOUR_QUAY_URL', 'YOUR_ORG_NAME_1', 'YOUR_TOKEN_FOR_ORG_1' 等)替换为您实际的 Quay URL、组织名称和 API 令牌。这些配置由 MCP 客户端读取并用于启动和管理 MCP 服务器进程。

基本使用方法

该 MCP 服务器并非独立使用的应用程序,而是作为 MCP 客户端(通常是集成了 MCP 协议的 LLM 应用程序)的后端服务。MCP 客户端会根据上述配置启动服务器,并通过 JSON-RPC 协议(此处配置为 Stdio 传输)与服务器通信,调用上面列出的各种工具功能。LLM 客户端会负责将用户的自然语言请求转化为对这些工具的调用。

您作为用户或开发者,主要是确保服务器已正确安装、配置了必要的环境变量,并将其配置信息提供给您的 MCP 客户端应用。

信息

分类

开发者工具