漏洞搜索服务器

FSTEC Excel Search MCP Server是一个用于在FSTEC本地数据库中搜索漏洞的服务器,提供关键词搜索和漏洞详细信息查询功能。

  • by 0himera
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 0himera/fstec-mcp

使用说明

🔒 FSTEC Excel搜索MCP服务器

用于在FSTEC本地数据库(vullist.xlsx)中查找漏洞的MCP服务器。

🚀 机会

  • 搜索脆弱性 -按关键字搜索漏洞(软件标题、描述、供应商)
  • get_脆弱性_详细信息 -通过BDU ID获取完整的漏洞信息

📋 要求

  • Python 3.10+
  • 文件 vullist.xlsx (下载自 bdu.fstec.ru)

🔧 安装

  1. 建立依赖关系:
uv sync
# или
pip install -e .
  1. 下载文件 vullist.xlsx 从FSTEC网站并将其放在项目的根上。

  2. 创建文件 .env (可选):

cp .env.example .env

🚀 发射

uv run python server.py
# или
python server.py

服务器将在 http://0.0.0.0:8000/mcp

🔧 环境变量

可选变量

变量描述为默认值。 |------------|----------|--------------| | PORT MCP服务器端口 8000 | | HOST MCP服务器主机 0.0.0.0 | | VULLIST_PATH | vullist.xlsx 文件路径 | vullist.xlsx |

📖 使用工具

search_vulnerabilities -寻找漏洞

通过以下字段中的关键字搜索漏洞:软件标题、描述、漏洞名称、供应商。

参数:

  • query (str,必填)-搜索短语
  • limit (int,可选)-最大结果(默认值:5)

实例:

search_vulnerabilities(query="nginx", limit=10) # найдёт 10 уязвимостей в nginx
search_vulnerabilities(query="nginx 1.5.6")  # найдёт уязвимости nginx именно для версии 1.5.6
search_vulnerabilities(query="buffer overflow") # найдёт уязвимости по запросу "buffer overflow"

返回: 具有ID、名称、危险级别的漏洞列表


get_vulnerability_details 脆弱性细节

通过BDU ID获取完整的漏洞信息。

参数:

  • bdu_id (STR,必需)-标识符(格式:BDU:20XX-XXXXXX)

例子:

get_vulnerability_details(bdu_id="BDU:2014-00001") # найдёт уязвимость по идентификатору BDU:2014-00001

返回: 完整说明、补救措施、CVSS评估、参考资料

📁 项目结构

fstec-excel-search/
├── mcp_instance.py          # Единый экземпляр FastMCP
├── server.py                # Главный файл запуска
├── pyproject.toml           # Зависимости проекта
├── requirements.txt         # Pip зависимости
├── Dockerfile               # Docker образ
├── docker-compose.yml       # Docker Compose
├── .env.example             # Пример переменных окружения
├── env_options.json         # Описание переменных окружения
├── mcp-server-catalog.yaml  # Каталог MCP сервера
├── mcp_tools.json           # JSON описание инструментов
├── README.md                # Документация
├── vullist.xlsx             # База данных ФСТЭК (скачать отдельно)
├── tools/
│   ├── __init__.py
│   ├── utils.py             # Утилиты и загрузчик данных
│   ├── search_vulnerabilities.py
│   └── get_vulnerability_details.py
└── test/
    ├── __init__.py
    ├── test_tools.py        # Unit тесты
    └── test_integration.py  # Интеграционные тесты

🧪 测试

运行所有测试:

.venv\Scripts\pytest test\ -v

仅运行Unit测试:

.venv\Scripts\pytest test\test_tools.py -v

覆盖运行:

.venv\Scripts\pytest test\ --cov=tools --cov-report=html

测试结构

  • test_tools.py -单元测试FSTECDATALOADER(14个测试)

    • 搜索一个/多个单词
    • 寄存器独立性
    • ID检索
    • 错误处理
  • test_integration.py 集成测试(8个测试)

    • MOQ搜索逻辑
    • 格式结果
    • 错误处理

🐳 码头工人

组装和启动:

docker-compose up -d --build

或者没有compose:

docker build -t fstec-excel-search .
docker run -p 8000:8000 -v ./vullist.xlsx:/app/vullist.xlsx:ro fstec-excel-search

📝 使用脚本

  1. 用户: 检查Apache的漏洞
  2. 代理: 引起 search_vulnerabilities(query="Apache", limit=10)
  3. 服务器 : 返回发现的漏洞列表
  4. 代理: “发现5个漏洞。最危险的是BDU:2024-12345”
  5. 代理: 引起 get_vulnerability_details(bdu_id="BDU:2024-12345")
  6. 服务器 : 返回完整的描述和修复措施

🔐 安全

  • 服务器处于运行模式 只读的 (仅阅读)
  • 无法修改Excel文件
  • 数据在启动时加载到RAM以进行快速搜索

📄 许可证

俄罗斯FSTEC提供的漏洞数据:https://bdu.fstec.ru