🔒 FSTEC Excel搜索MCP服务器
用于在FSTEC本地数据库(vullist.xlsx)中查找漏洞的MCP服务器。
🚀 机会
- 搜索脆弱性 -按关键字搜索漏洞(软件标题、描述、供应商)
- get_脆弱性_详细信息 -通过BDU ID获取完整的漏洞信息
📋 要求
- Python 3.10+
- 文件
vullist.xlsx(下载自 bdu.fstec.ru)
🔧 安装
- 建立依赖关系:
uv sync
# или
pip install -e .- 下载文件
vullist.xlsx从FSTEC网站并将其放在项目的根上。
- 创建文件
.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📝 使用脚本
- 用户: 检查Apache的漏洞
- 代理: 引起
search_vulnerabilities(query="Apache", limit=10) - 服务器 : 返回发现的漏洞列表
- 代理: “发现5个漏洞。最危险的是BDU:2024-12345”
- 代理: 引起
get_vulnerability_details(bdu_id="BDU:2024-12345") - 服务器 : 返回完整的描述和修复措施
🔐 安全
- 服务器处于运行模式 只读的 (仅阅读)
- 无法修改Excel文件
- 数据在启动时加载到RAM以进行快速搜索
📄 许可证
俄罗斯FSTEC提供的漏洞数据:https://bdu.fstec.ru
