项目简介

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 的文档进行调用。

信息

分类

开发者工具