Copacetic MCP服务器使用说明

项目简介

Copacetic MCP是一个模型上下文协议(MCP)服务器,专门设计用于自动化容器镜像的漏洞扫描和补丁更新。它集成了Copacetic(一个容器镜像补丁工具)和Trivy(一个开源漏洞扫描器),通过一系列标准的MCP工具,让大型语言模型(LLM)或其他MCP客户端能够方便地查询容器安全状态、执行漏洞报告生成,并根据报告或指定策略对容器镜像进行补丁操作,从而提升容器的安全性与管理效率。

主要功能点

  • 工作流指南 ('workflow-guide'): 提供关于如何使用Copacetic工具应对不同容器补丁场景的策略指导。
  • 扫描容器 ('scan-container'): 使用Trivy扫描容器镜像,生成详细的漏洞报告。这是基于漏洞的补丁操作的基础。
  • 基于漏洞补丁 ('patch-vulnerabilities'): 根据之前生成的漏洞报告,精确地修补容器镜像中发现的漏洞。这是推荐的漏洞修复方式。
  • 平台特定补丁 ('patch-platforms'): 针对容器镜像的特定平台(如'linux/amd64'或'linux/arm64')执行补丁操作,不进行漏洞扫描。适用于已知需更新特定平台的情况。
  • 全面补丁 ('patch-comprehensive'): 对容器镜像所有可用平台进行全面的补丁更新,不进行漏洞扫描。适用于无需漏洞扫描,直接更新所有平台的情况。

安装步骤

在安装和运行Copacetic MCP服务器之前,请确保您的系统满足以下前提条件:

  • Go 语言环境: Go 1.20 或更高版本。
  • Copacetic CLI: 已安装 Copacetic 命令行工具 (GitHub项目地址)。
  • Trivy: 已安装 Trivy 漏洞扫描工具 (GitHub项目地址)。
  • Docker: 已安装 Docker,并支持虚拟化仿真(对于多平台容器操作是必需的)。

您可以选择下载预构建的二进制文件或从源代码构建。

下载预构建二进制文件 (推荐)

从项目的 GitHub Releases 页面 下载适用于您操作系统的最新版本。

例如,对于 Linux (AMD64) 系统:

curl -L https://github.com/duffney/copacetic-mcp/releases/latest/download/copacetic-mcp_linux_amd64.tar.gz | tar xz
./copacetic-mcp-server # 解压后,直接运行服务器二进制文件

从源代码构建

如果您希望从源代码构建,请遵循以下步骤:

git clone https://github.com/duffney/copacetic-mcp.git
cd copacetic-mcp
make build       # 这将构建服务器二进制文件
./bin/copacetic-mcp-server # 运行构建好的服务器二进制文件

服务器配置

Copacetic MCP服务器是为MCP客户端提供服务的后端。MCP客户端通常需要配置服务器的启动命令 (command) 及其参数 (args) 才能与服务器建立连接。以下是针对常见MCP客户端的配置示例,您需要将 '/path/to/copacetic-mcp-server' 替换为您实际的服务器二进制文件路径。

VSCode 'settings.json' 配置示例

将以下JSON配置添加到您的VSCode 'settings.json' 文件中:

{
  "mcp.servers": {
    "copacetic-mcp-local": {
      "command": "/path/to/copacetic-mcp-server", // 替换为copacetic-mcp-server二进制文件的实际路径
      "args": [],                                 // 服务器启动参数,目前为空
      "env": {}                                  // 环境变量配置,根据需要添加
    },
    "copacetic-mcp-docker": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount", "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock", // **重要提示**:挂载Docker socket允许容器访问宿主机Docker守护进程,这是Copacetic镜像操作所必需的,但有安全隐患。请只运行您信任的镜像。
        "--mount", "type=bind,source=${env:HOME}/.docker/config.json,target=/root/.docker/config.json", // 挂载Docker配置文件,允许容器使用您的注册表凭据进行镜像拉取/推送。
        "ghcr.io/duffney/copacetic-mcp:latest" // 使用官方Docker镜像运行MCP服务器。如果您本地构建了镜像,请替换为本地镜像标签(例如:'copacetic-mcp:latest')。
      ],
      "env": {
        "DOCKER_HOST": "unix:///var/run/docker.sock" // 设置DOCKER_HOST环境变量,指向Docker socket。
      }
    }
  }
}

Claude Desktop 配置示例

将以下内容添加到您的MCP配置文件中。该文件的路径通常为:

  • macOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
  • Windows: '%APPDATA%\Claude\claude_desktop_config.json'
{
  "mcpServers": {
    "copacetic-mcp": {
      "command": "/path/to/copacetic-mcp-server", // 替换为copacetic-mcp-server二进制文件的实际路径
      "args": []                                 // 服务器启动参数,目前为空
    }
  }
}

基本使用方法

一旦MCP客户端(例如VSCode MCP插件或Claude Desktop)配置并成功连接到Copacetic MCP服务器,您就可以通过客户端界面或编程方式调用其提供的工具。以下是常见的工具使用示例及其参数说明:

1. 获取工作流指南

调用 'workflow-guide' 工具,获取容器补丁策略建议。

  • 工具名称: 'workflow-guide'
  • 参数: 无
  • 示例:
    {
      "name": "workflow-guide",
      "arguments": {}
    }

2. 扫描容器漏洞 ('scan-container')

使用Trivy扫描指定容器镜像的漏洞。

  • 工具名称: 'scan-container'
  • 参数:
    • 'image' (字符串, 必填): 要扫描的容器镜像引用 (例如: '"alpine:3.17"')。
    • 'platform' (字符串数组, 可选): 目标扫描平台 (例如: '["linux/amd64", "linux/arm64"]')。如果未指定,将扫描宿主平台。
  • 示例:
    {
      "name": "scan-container",
      "arguments": {
        "image": "alpine:3.17",
        "platform": ["linux/amd64"]
      }
    }
    执行后,服务器将返回漏洞报告的存储路径。

3. 基于漏洞报告打补丁 ('patch-vulnerabilities')

根据 'scan-container' 工具生成的漏洞报告来修补容器镜像。这是推荐的漏洞修复工作流的第二步。

  • 工具名称: 'patch-vulnerabilities'
  • 参数:
    • 'image' (字符串, 必填): 要打补丁的容器镜像引用 (例如: '"alpine:3.17"')。
    • 'patchtag' (字符串, 必填): 新的已打补丁镜像的标签 (例如: '"alpine-patched-demo"')。
    • 'push' (布尔值, 必填): 是否将打补丁后的镜像推送到目标注册表 (例如: 'false')。
    • 'reportPath' (字符串, 必填): 由 'scan-container' 工具创建的漏洞报告目录的路径。
  • 示例:
    {
      "name": "patch-vulnerabilities",
      "arguments": {
        "image": "alpine:3.17",
        "patchtag": "alpine-patched-demo",
        "push": false,
        "reportPath": "/tmp/reports-xxxxxxxx" // 替换为scan-container工具返回的实际路径
      }
    }

4. 平台特定补丁 ('patch-platforms')

对容器镜像的特定平台进行补丁操作,不执行漏洞扫描。

  • 工具名称: 'patch-platforms'
  • 参数:
    • 'image' (字符串, 必填): 要打补丁的容器镜像引用。
    • 'patchtag' (字符串, 必填): 新的已打补丁镜像的标签。
    • 'push' (布尔值, 必填): 是否将打补丁后的镜像推送到目标注册表。
    • 'platform' (字符串数组, 必填): 目标补丁平台 (例如: '["linux/amd64"]')。
  • 示例:
    {
      "name": "patch-platforms",
      "arguments": {
        "image": "alpine:3.17",
        "patchtag": "alpine-amd64-patched",
        "push": false,
        "platform": ["linux/amd64"]
      }
    }

5. 全面补丁 ('patch-comprehensive')

对容器镜像所有可用平台进行全面的补丁更新,不执行漏洞扫描。

  • 工具名称: 'patch-comprehensive'
  • 参数:
    • 'image' (字符串, 必填): 要打补丁的容器镜像引用。
    • 'patchtag' (字符串, 必填): 新的已打补丁镜像的标签。
    • 'push' (布尔值, 必填): 是否将打补丁后的镜像推送到目标注册表。
  • 示例:
    {
      "name": "patch-comprehensive",
      "arguments": {
        "image": "nginx:latest",
        "patchtag": "nginx-all-patched",
        "push": false
      }
    }

信息

分类

开发者工具