使用说明
项目简介
本项目 'MCP SBOM Server' 是一个实现了 Model Context Protocol (MCP) 的服务器,专注于提供软件物料清单 (SBOM) 服务。它利用 Trivy 扫描器分析容器镜像,并将扫描结果以 CycloneDX 格式的 SBOM 返回。通过 MCP 协议,LLM 应用可以调用此服务器提供的工具,方便地获取容器镜像的安全和组件信息。
主要功能点
- SBOM生成: 使用 Trivy 扫描容器镜像,生成符合 CycloneDX 格式的 SBOM。
- 容器镜像扫描: 支持扫描各种容器镜像,提供镜像的组件和依赖信息。
- MCP工具集成: 作为一个 MCP 服务器,通过标准化的 MCP 协议与 LLM 客户端交互,提供 'scan' 工具供 LLM 调用。
- 易于调试: 兼容 MCP Inspector,方便开发者调试和测试 MCP 服务器功能。
- 标准输出: 使用 stdio 作为默认传输协议,易于集成和部署。
安装步骤
- 安装 Node.js: 访问 Node.js官网 下载并安装 Node.js。
- 安装 trivy: 根据 trivy 官方文档 安装 trivy 扫描器。确保 'trivy' 命令在您的系统 PATH 环境变量中可用。
- 安装 uv: 根据 uv 官方文档 安装 uv 包管理器。
- 克隆仓库: 将 'mcp-sbom-server' 仓库克隆到本地。
git clone https://github.com/gkhays/mcp-sbom-server.git cd mcp-sbom-server - 同步依赖: 在项目根目录下运行 'uv sync' 命令,安装项目依赖。
uv sync
服务器配置
MCP 客户端需要配置以下 JSON 信息才能连接到 'MCP SBOM Server':
{ "serverName": "mcp-sbom", "command": "uv", "args": ["run", "mcp-sbom"] }
配置参数说明:
- 'serverName': 服务器名称,这里设置为 "mcp-sbom",与代码中 'FastMCP("mcp-sbom")' 保持一致。
- 'command': 启动服务器的命令,这里使用 'uv',因为项目使用了 'uv' 进行依赖管理和运行。
- 'args': 传递给 'command' 的参数,'["run", "mcp-sbom"]' 表示使用 'uv run' 命令来运行名为 'mcp-sbom' 的脚本或包。'uv run mcp-sbom' 会执行项目中的入口点,即 'src/mcp_sbom/init.py' 中的 'main' 函数,从而启动 MCP 服务器。
注意: MCP 客户端需要能够执行 'uv' 命令,并确保项目目录在客户端可访问的路径下。 如果客户端和服务器在同一台机器上,并且客户端的环境变量配置正确,则可以直接使用上述配置。
基本使用方法
-
启动 MCP SBOM 服务器: MCP 客户端根据上述配置启动 'MCP SBOM Server'。服务器启动后,将监听来自客户端的 MCP 请求。
-
LLM 客户端调用 'scan' 工具: 在 LLM 客户端中,可以调用 'mcp-sbom' 服务器提供的 'scan' 工具,并传递容器镜像名称作为参数。例如,使用 MCP Inspector 工具,可以发送如下请求(非标准JSON-RPC请求,仅为示例):
{ "method": "scan", "params": { "image": "nginx:latest" } } -
获取 SBOM 结果: 服务器收到 'scan' 请求后,会执行 Trivy 扫描指定的容器镜像,并将生成的 CycloneDX 格式 SBOM 作为 JSON-RPC 响应返回给客户端。客户端可以解析 JSON 响应,获取 SBOM 数据。
示例流程:
- 用户在 LLM 应用中需要查询 'nginx:latest' 镜像的 SBOM 信息。
- LLM 应用通过 MCP 客户端向 'MCP SBOM Server' 发送调用 'scan' 工具的请求,参数为 '"image": "nginx:latest"'。
- 'MCP SBOM Server' 接收到请求,执行 'trivy image --format cyclonedx --output sbom.json nginx:latest' 命令。
- Trivy 扫描完成后,'MCP SBOM Server' 读取 'sbom.json' 文件内容(SBOM 数据)。
- 'MCP SBOM Server' 将 SBOM 数据封装成 JSON-RPC 响应返回给 MCP 客户端。
- LLM 应用接收到响应,解析 SBOM 数据并呈现给用户或进行后续处理。
信息
分类
开发者工具