Token导航 LogoToken导航TokenDH.com
SBOM MCP Server logo
安全风控stdio官方级别未说明来源级核验

SBOM MCP Server

MCP Server

一个基于FastAPI的HTTP服务器,使用Syft和Trivy为二进制文件生成软件物料清单(SBOM)和漏洞报告。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
Python漏洞扫描安全

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Hydra-Bolt

提供方

Hydra-Bolt

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 --version

详细介绍

MCP SBOM 生成服务器

一个基于FastAPI的HTTP服务器,使用Syft和Trivy为二进制文件生成软件物料清单(SBOM)和漏洞报告。

特点/特性

  • 🔒(锁形符号,通常表示安全、保密或锁定状态) API密钥认证 - 通过承载令牌实现安全访问
  • 📦 箱子/包裹 生成物料清单(SBOM) - 使用 Syft(CycloneDX 或 SPDX 格式)
  • 🔍 看起来像是一个放大镜的符号,常用于表示搜索或观察。 漏洞扫描 - 在生成的SBOM(软件物料清单)上使用Trivy
  • 🚀 表情符号“🚀”通常表示火箭、快速前进或快速移动,也可以用来表示兴奋、期待或激动的情绪。在没有具体上下文的情况下,可以简单翻译为“🚀”(火箭/快速前进)或根据语境灵活翻译为相应的表达。 同步处理 - 实时结果
  • 📊 表格 综合输出 - 结合软件物料清单(SBOM)和漏洞数据
  • 🛡️ 翻译为中文是:“盾牌”或“防护”。这个符号通常用来表示保护、防御或安全的概念。 安全 - 无shell注入,超时保护,文件大小限制
  • 📝 详细日志记录 - 请求和命令执行日志

先决条件

在运行此服务器之前,您需要安装:

1. 目的

# Using curl (Linux/macOS)
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

# Using snap (Linux)
sudo snap install syft

# Using Homebrew (macOS)
brew install syft

# Verify installation
syft --version

2. Trivy(一种安全扫描工具,用于检测软件漏洞等)

# Using curl (Linux/macOS)
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin

# Using snap (Linux)
sudo snap install trivy

# Using Homebrew (macOS)
brew install trivy

# Verify installation
trivy --version

3. Python 3.9或更高版本

python3 --version

安装

1. 克隆或下载此仓库

cd /home/muneeb/Projects/sbom-fast-server

2. 创建一个虚拟环境

python3 -m venv venv
source venv/bin/activate  # On Linux/macOS
# or
# venv\Scripts\activate  # On Windows

3. 安装Python依赖项

pip install -r requirements.txt

4. 配置环境

# Copy the example environment file
cp .env.example .env

# Edit .env with your settings
nano .env  # or use your preferred editor

重要提示: 改变 API_KEY.env 达到一个安全的值!

API_KEY=your-secure-api-key-here
HOST=0.0.0.0
PORT=8000
MAX_FILE_SIZE_MB=100
COMMAND_TIMEOUT=300

运行服务器

开发模式

# Make sure virtual environment is activated
source venv/bin/activate

# Run the server
python main.py

使用Uvicorn的生产模式

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

使用 Docker(见下文 Docker 部分)

docker-compose up -d

API 使用

终端点: POST /generate_sbom

为二进制文件生成SBOM(软件物料清单)和漏洞报告。

认证

所有请求都需要在(请求头中)包含一个Bearer令牌 Authorization 头球

Authorization: Bearer 

请求

  • 方法: POST
  • 内容类型: multipart/form-data
  • 表单字段:

- file要分析的二进制文件(必需)

  • 查询参数:

- formatSBOM 格式 - cyclonedx-json (默认)或 spdx-json

示例请求

基本用法(CycloneDX 格式)

curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@builds/myprogram.exe"

使用SPDX格式

curl -X POST "http://localhost:8000/generate_sbom?format=spdx-json" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@application.jar"

将响应保存到文件

curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@binary.elf" \
  -o result.json

分析各种文件类型

# Windows executable
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@app.exe"

# Java JAR
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@application.jar"

# Linux binary
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@program.elf"

# ZIP archive
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@release.zip"

# Shared library
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@library.so"

回应

{
  "filename": "myprogram.exe",
  "sha256": "a1b2c3d4e5f6...",
  "file_size": 1234567,
  "sbom": {
    "bomFormat": "CycloneDX",
    "specVersion": "1.5",
    "components": [
      {
        "name": "package-name",
        "version": "1.0.0",
        "purl": "pkg:npm/package-name@1.0.0"
      }
    ]
  },
  "vulnerabilities": {
    "SchemaVersion": 2,
    "Results": [
      {
        "Vulnerabilities": [
          {
            "VulnerabilityID": "CVE-2024-1234",
            "PkgName": "package-name",
            "Severity": "HIGH",
            "Description": "Vulnerability description..."
          }
        ]
      }
    ]
  },
  "tool_versions": {
    "syft": "syft 1.0.0",
    "trivy": "Version: 0.48.0"
  },
  "generated_at": "2025-10-12T10:30:45.123456",
  "processing_time_seconds": 12.34
}

错误响应

401 未授权 - 无效或缺失的API密钥

{
  "detail": "Invalid API key"
}

413 有效载荷过大 - 文件超过大小限制

{
  "detail": "File too large. Maximum size: 100 MB"
}

500 内部服务器错误 - 工具执行失败

{
  "detail": "Syft failed: error message..."
}

其他终点(或“其他评估指标”)

GET /

获取API信息。

curl http://localhost:8000/

GET /health

带有工具版本信息的健康检查端点。

curl http://localhost:8000/health

回答:

{
  "status": "healthy",
  "tools": {
    "syft": "syft 1.0.0",
    "trivy": "Version: 0.48.0"
  }
}

配置

环境变量

变量默认值描述
(无对应中文)(无对应中文)(无对应中文)API_KEYsk-12345-change-me-in-production
用于身份验证的承载令牌 HOST0.0.0.0
服务器主机地址PORT8000
服务器端口MAX_FILE_SIZE_MB100
最大上传文件大小(以MB为单位)COMMAND_TIMEOUT300
Syft/Trivy 命令的超时时间(以秒为单位)UPLOAD_DIR/tmp/sbom_uploads

| 临时上传目录 |

  1. 安全建议 更改默认API密钥
  2. 正在生产中
  3. 使用环境变量或密钥管理
  4. 在反向代理(nginx、Traefik)之后运行
  5. 启用HTTPS/TLS
  6. 实施速率限制

监控日志以查找可疑活动

Docker 部署

docker-compose up -d

使用 Docker Compose 构建并运行

# Build image
docker build -t sbom-server .

# Run container
docker run -d \
  -p 8000:8000 \
  -e API_KEY=your-secure-key \
  --name sbom-server \
  sbom-server

或者手动构建

Docker 环境变量 -e 通过使用传递环境变量 .env 旗帜 或

docker run -d \
  -p 8000:8000 \
  -e API_KEY=sk-production-key \
  -e MAX_FILE_SIZE_MB=200 \
  -e COMMAND_TIMEOUT=600 \
  sbom-server

文件:

记录日志

  • 日志写入位置为: 控制台
  • (stdout) - 所有日志级别 文件sbom_server.log(

) - 所有日志级别

日志格式包括时间戳、日志记录器名称、级别和消息。

# Follow real-time logs
tail -f sbom_server.log

# Docker logs
docker logs -f sbom-server

查看日志

故障排除

未找到 Syft 或 Trivy Syft is not installed or not in PATH

错误: 解决方案:

which syft
which trivy

确保已安装Syft和Trivy,并且它们在你的系统路径(PATH)中

如果未找到,请按照“先决条件”部分中的说明进行安装。

权限被拒绝错误 错误:

临时目录的权限问题 解决方案:

sudo mkdir -p /tmp/sbom_uploads
sudo chmod 777 /tmp/sbom_uploads

确保服务器具有写入权限:

命令超时 Syft execution timeout after 300 seconds

错误: 解决方案: COMMAND_TIMEOUT 增加 .env

COMMAND_TIMEOUT=600

:

大文件上传失败 File too large. Maximum size: 100 MB

错误: 解决方案: MAX_FILE_SIZE_MB 增加 .env

MAX_FILE_SIZE_MB=500

:

发展

sbom-fast-server/
├── main.py              # FastAPI application and endpoints
├── config.py            # Configuration and settings
├── utils.py             # Utility functions
├── requirements.txt     # Python dependencies
├── .env.example         # Example environment file
├── .env                 # Your environment configuration (gitignored)
├── .gitignore          # Git ignore rules
├── README.md           # This file
├── Dockerfile          # Docker image definition
├── docker-compose.yml  # Docker Compose configuration
└── sbom_server.log     # Application logs

项目结构

# Run with test files
curl -X POST "http://localhost:8000/generate_sbom" \
  -H "Authorization: Bearer sk-12345" \
  -F "file=@/bin/ls"

运行测试

代码质量

  • 该代码遵循以下原则:
  • 在子进程调用中不要使用 shell=True(防止注入攻击)
  • 适当的错误处理和日志记录
  • 为清晰起见,使用类型提示
  • 以安全为先的文件处理

全面验证

许可证

此项目仅以现状形式提供,用于教育和开发目的。

支持

  • 如需了解问题、疑问或贡献相关信息,请查阅:
  • Syft 文档:https://github.com/anchore/syft
  • Trivy 文档:https://github.com/aquasecurity/trivy

FastAPI 文档:https://fastapi.tiangolo.com/

更新日志

  • 版本1.0.0(2025年10月12日)
  • 首次发布
  • 使用Syft生成软件物料清单(SBOM)
  • 使用Trivy进行漏洞扫描
  • API密钥认证
  • 支持CycloneDX和SPDX格式
  • Docker 支持

目录标签

目录标签

Python漏洞扫描安全SBOM生成本地部署软件安全二进制分析FastAPI

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP