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 } }
信息
分类
开发者工具