- Go 99.3%
- Dockerfile 0.6%
- Makefile 0.1%
| cmd | ||
| config | ||
| db | ||
| handler | ||
| http | ||
| internal | ||
| middleware | ||
| parser | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| mcp-tmkg | ||
| README.md | ||
| ROADMAP.md | ||
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 с поэтапной реализацией:
- ✅ Этап 0: Подготовка (базовый каркас)
- ✅ Этап 1: Хранилище данных и загрузка (завершён)
- Этап 2: Интеграция с embedding API и кэширование
- Этап 3: Поиск и MCP-инструменты
- Этап 4: Мониторинг и наблюдаемость
- Этап 5: Тестирование и интеграция
- Этап 6: Деплой и сопровождение
Разработка
Для запуска тестов:
make test
Для очистки:
make clean