使用说明

项目简介

本项目 '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 作为默认传输协议,易于集成和部署。

安装步骤

  1. 安装 Node.js: 访问 Node.js官网 下载并安装 Node.js。
  2. 安装 trivy: 根据 trivy 官方文档 安装 trivy 扫描器。确保 'trivy' 命令在您的系统 PATH 环境变量中可用。
  3. 安装 uv: 根据 uv 官方文档 安装 uv 包管理器。
  4. 克隆仓库: 将 'mcp-sbom-server' 仓库克隆到本地。
    git clone https://github.com/gkhays/mcp-sbom-server.git
    cd mcp-sbom-server
  5. 同步依赖: 在项目根目录下运行 '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' 命令,并确保项目目录在客户端可访问的路径下。 如果客户端和服务器在同一台机器上,并且客户端的环境变量配置正确,则可以直接使用上述配置。

基本使用方法

  1. 启动 MCP SBOM 服务器: MCP 客户端根据上述配置启动 'MCP SBOM Server'。服务器启动后,将监听来自客户端的 MCP 请求。

  2. LLM 客户端调用 'scan' 工具: 在 LLM 客户端中,可以调用 'mcp-sbom' 服务器提供的 'scan' 工具,并传递容器镜像名称作为参数。例如,使用 MCP Inspector 工具,可以发送如下请求(非标准JSON-RPC请求,仅为示例):

    {
      "method": "scan",
      "params": {
        "image": "nginx:latest"
      }
    }
  3. 获取 SBOM 结果: 服务器收到 'scan' 请求后,会执行 Trivy 扫描指定的容器镜像,并将生成的 CycloneDX 格式 SBOM 作为 JSON-RPC 响应返回给客户端。客户端可以解析 JSON 响应,获取 SBOM 数据。

示例流程:

  1. 用户在 LLM 应用中需要查询 'nginx:latest' 镜像的 SBOM 信息。
  2. LLM 应用通过 MCP 客户端向 'MCP SBOM Server' 发送调用 'scan' 工具的请求,参数为 '"image": "nginx:latest"'。
  3. 'MCP SBOM Server' 接收到请求,执行 'trivy image --format cyclonedx --output sbom.json nginx:latest' 命令。
  4. Trivy 扫描完成后,'MCP SBOM Server' 读取 'sbom.json' 文件内容(SBOM 数据)。
  5. 'MCP SBOM Server' 将 SBOM 数据封装成 JSON-RPC 响应返回给 MCP 客户端。
  6. LLM 应用接收到响应,解析 SBOM 数据并呈现给用户或进行后续处理。

信息

分类

开发者工具