Token导航 LogoToken导航

MCP Server · 安全风控

SBOM MCP Server

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

stdio官方级别未说明来源级核验工具 2
Python漏洞扫描安全

快速开始

作者 / 组织
Hydra-Bolt
提供方
Hydra-Bolt
运行时
Python

工具数量

2

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

SBOM MCP Server 属于安全风控类 MCP Server,公开资料标注 2 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

安全风控

传输方式

stdio

认证方式

API Key

部署方式

公开资料未说明

安装与配置

安装命令

python3 --version

客户端配置示例

{
  "mcpServers": {
    "sbom-mcp-server": {
      "command": "python3",
      "args": [
        "--version"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 2 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

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 支持

工具与能力

工具数量

2

资源数量

0

提示词数量

0

能力标签

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

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 只提供 2 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
SBOM MCP Server

MCP World · 本页

2stdio有1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

SBOM MCP Server 怎么安装?

公开资料给出的安装命令是 python3 --version,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

SBOM MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

SBOM MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

SBOM MCP Server 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

SBOM MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP