No description
  • Go 99.3%
  • Dockerfile 0.6%
  • Makefile 0.1%
Find a file
2025-11-28 15:11:26 +03:00
cmd Выполнен Этап 2 2025-11-28 14:57:09 +03:00
config Выполнен Этап 2 2025-11-28 14:57:09 +03:00
db Выполнен Этап 2 2025-11-28 14:57:09 +03:00
handler ПОломанный код. Нужна ручная ревизия. 2025-11-28 15:11:26 +03:00
http ПОломанный код. Нужна ручная ревизия. 2025-11-28 15:11:26 +03:00
internal Выполнен Этап 2 2025-11-28 14:57:09 +03:00
middleware first commit 2025-11-28 10:08:54 +03:00
parser Выполнен Этап 2 2025-11-28 14:57:09 +03:00
tests Выполнен Этап 2 2025-11-28 14:57:09 +03:00
.dockerignore Подготовка первого этапа 2025-11-28 11:29:05 +03:00
.gitignore Подготовка первого этапа 2025-11-28 11:29:05 +03:00
.woodpecker.yml first commit 2025-11-28 10:08:54 +03:00
Dockerfile first commit 2025-11-28 10:08:54 +03:00
go.mod Выполнен Этап 2 2025-11-28 14:57:09 +03:00
go.sum Выполнен Этап 2 2025-11-28 14:57:09 +03:00
LICENSE first commit 2025-11-28 10:08:54 +03:00
main.go Подготовка первого этапа 2025-11-28 11:29:05 +03:00
Makefile Подготовка первого этапа 2025-11-28 11:29:05 +03:00
mcp-tmkg first commit 2025-11-28 10:08:54 +03:00
README.md Подготовка первого этапа 2025-11-28 11:29:05 +03:00
ROADMAP.md ПОломанный код. Нужна ручная ревизия. 2025-11-28 15:11:26 +03:00

MCP-сервер для БДУ (База данных уязвимостей)

MCP-сервер для интеграции с LLM-агентом, позволяющий получать актуальную информацию об уязвимостях из БДУ через MCP-инструменты с поддержкой поиска и мониторинга.

Архитектура

  • Источник данных: БДУ (ФСТЭК)
  • Эмбеддинги: через внешний OpenAI-совместимый API (ваша библиотека llm-simple-api)
  • Хранилище: SQLite (только метаданные)
  • Поиск: по эмбеддингам (в памяти)
  • Мониторинг: Prometheus
  • Без FTS5, без тяжёлых СУБД

Установка и запуск

Требования

  • Go 1.25+
  • make (опционально)

Установка зависимостей

go mod tidy

Запуск сервера

go run main.go

Или с использованием make:

make run

Сервер будет запущен на http://localhost:3000 (порт можно изменить через переменную окружения WEB_PORT)

Загрузка данных из БДУ

Для первоначальной загрузки данных из БДУ выполните:

go run cmd/seed/main.go

Или с использованием make:

make seed

Для синхронизации новых уязвимостей из BDU через RSS/ATOM:

go run cmd/sync/main.go

Сервис будет периодически проверять наличие новых уязвимостей и добавлять их в базу данных.

Конфигурация

Сервер может быть настроен с помощью аргументов командной строки или переменных окружения:

  • --port / WEB_PORT: Порт для входящих соединений (по умолчанию 3000)
  • --db-path / DB_PATH: Путь к файлу базы данных (по умолчанию ./data.db)
  • --tls-verify / TLS_VERIFY: Включение проверки TLS-сертификатов (по умолчанию true)

Пример запуска с параметрами:

go run main.go --port 8080 --db-path ./vulns.db

Структура проекта

├── cmd/                # Утилиты командной строки
│   ├── seed/           # Утилита для загрузки данных из БДУ
│   ├── sync/           # Утилита для синхронизации по RSS/ATOM
│   ├── demo/           # Демонстрационная утилита
│   └── test_dao/       # Утилита для тестирования DAO
├── config/             # Конфигурация приложения
├── db/                 # Работа с базой данных
│   ├── dao/            # Data Access Objects
│   ├── models/         # Модели данных
│   ├── db.go           # Инициализация базы данных
│   └── migrate.go      # Миграции
├── internal/service/   # Бизнес-логика и сервисы
├── handler/            # Обработчики HTTP-запросов
├── http/               # HTTP-уровень
├── middleware/         # HTTP-промежуточное ПО
├── main.go             # Основная точка входа
├── Makefile            # Утилиты сборки
└── go.mod              # Зависимости Go

API

Сервер предоставляет следующие эндпоинты:

  • /mcp - MCP-интерфейс для LLM-агентов
  • /metrics - Метрики для Prometheus
  • /health - Проверка состояния сервера

Этапы разработки

Проект следует ROADMAP.md с поэтапной реализацией:

  1. Этап 0: Подготовка (базовый каркас)
  2. Этап 1: Хранилище данных и загрузка (завершён)
  3. Этап 2: Интеграция с embedding API и кэширование
  4. Этап 3: Поиск и MCP-инструменты
  5. Этап 4: Мониторинг и наблюдаемость
  6. Этап 5: Тестирование и интеграция
  7. Этап 6: Деплой и сопровождение

Разработка

Для запуска тестов:

make test

Для очистки:

make clean