MCP Harbor

项目简介

MCP Harbor 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 应用提供与 Harbor 容器仓库交互的标准接口。它将 Harbor 的常用操作封装成 MCP 工具,使得 LLM 可以通过调用这些工具来管理 Harbor 中的项目、仓库、镜像和 Helm Chart。此外,MCP Harbor 还提供 REST API,方便用户直接进行 Harbor 操作。

主要功能点

  • MCP 服务器: 实现了 MCP 协议,对外提供标准化的工具调用接口,LLM 应用可以通过 JSON-RPC 协议调用这些工具。
  • Harbor 容器仓库管理: 提供了一系列 MCP 工具,用于管理 Harbor 容器仓库,包括:
    • 项目管理: 创建、删除、查询 Harbor 项目。
    • 仓库管理: 查询、删除 Harbor 仓库。
    • 镜像标签管理: 查询、删除 Harbor 镜像标签(Tags)。
    • Helm Chart 管理: 查询、删除 Harbor Helm Chart 及其版本。
  • REST API: 除了 MCP 服务器,还提供了 RESTful API,可以直接操作 Harbor 资源,方便传统应用或非 MCP 客户端使用。
  • 易于安装和配置: 通过 npm 包管理,安装简单,配置文件清晰,方便用户快速部署和使用。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/nomagicln/mcp-harbor.git
    cd mcp-harbor
  2. 安装依赖:

    npm install
  3. 配置环境变量: 在项目根目录下创建 '.env' 文件,并配置 Harbor 连接信息:

    HARBOR_URL=https://your-harbor-instance.com  # Harbor 实例的 URL
    HARBOR_USERNAME=your_username             # Harbor 用户名
    HARBOR_PASSWORD=your_password             # Harbor 密码

    注意: 请替换 'https://your-harbor-instance.com', 'your_username', 'your_password' 为您实际的 Harbor 实例地址、用户名和密码。

  4. 构建项目:

    npm run build
  5. 启动服务器:

    npm start

    或者,为了方便开发调试,可以使用开发模式启动:

    npm run dev

服务器配置

MCP 客户端需要配置以下信息以连接到 MCP Harbor 服务器:

{
  "serverName": "mcp-harbor",
  "transport": "stdio",
  "command": "node",
  "args": ["dist/app.js"]
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,可以自定义。
  • 'transport': 传输协议,这里使用 'stdio' (标准输入输出)。
  • 'command': 启动 MCP Harbor 服务器的命令,这里使用 'node'。
  • 'args': 启动命令的参数,这里指向编译后的 'app.js' 文件路径 'dist/app.js'。

环境变量配置 (服务器运行依赖):

MCP Harbor 服务器依赖以下环境变量进行 Harbor 连接配置,请确保在服务器运行环境中设置这些变量,或者在启动服务器前配置好 '.env' 文件:

  • 'HARBOR_URL': Harbor 实例的 API 地址,例如 'https://your-harbor-instance.com'。
  • 'HARBOR_USERNAME': 用于访问 Harbor API 的用户名。
  • 'HARBOR_PASSWORD': 用于访问 Harbor API 的密码。

基本使用方法

  1. 启动 MCP Harbor 服务器 (按照上述安装步骤和服务器配置启动)。
  2. 配置 MCP 客户端: 在您的 LLM 应用中,配置 MCP 客户端连接到 MCP Harbor 服务器,使用上面提供的服务器配置信息。
  3. 调用 MCP 工具: 通过 MCP 客户端,您可以调用 MCP Harbor 服务器提供的工具来管理 Harbor 资源。例如,调用 'list_projects' 工具可以获取 Harbor 项目列表,调用 'delete_repository' 工具可以删除指定的仓库。
  4. 查看工具列表: 您可以通过 MCP 客户端调用 'ListTools' 请求来获取 MCP Harbor 服务器支持的所有工具及其描述和参数信息。
  5. 查阅 API 文档: 如果需要使用 REST API,请查阅仓库 README.md 文件中的 "API Endpoints" 部分,了解可用的 REST API 接口和使用方法。

示例 MCP 工具调用 (假设使用 MCP 客户端 SDK):

// 假设 client 是已连接到 MCP Harbor 服务器的 MCP 客户端实例

async function listHarborProjects() {
  try {
    const response = await client.callTool("list_projects", {}); // 调用 list_projects 工具,无需参数
    if (response.status === 'ok') {
      const projects = JSON.parse(response.content[0].text);
      console.log("Harbor 项目列表:", projects);
    } else {
      console.error("调用 list_projects 工具失败:", response.error);
    }
  } catch (error) {
    console.error("调用 list_projects 工具发生异常:", error);
  }
}

listHarborProjects();

注意: 上述代码仅为示例,实际使用时请参考您所用 MCP 客户端 SDK 的文档进行调用。

服务器信息