AlienSec MCP Server
AlienSec MCP Server
Готовый к продакшену MCP-сервер для сканирования безопасности конечных точек AlienVault OTX с интеграцией VirusTotal
// создано для сообщества специалистов по безопасности — финансирование поддерживает его развитие
Обзор
AlienSec MCP Server — это производственный MCP-сервер (Model Context Protocol), предоставляющий комплексные возможности сканирования безопасности конечных точек с использованием AlienVault OTX и опциональной интеграцией VirusTotal.
Этот сервер позволяет ИИ-агентам и приложениям выполнять сканирование безопасности различных типов конечных точек (macOS PKG, Windows PowerShell, Debian APT, Redhat RPM) и получать данные об угрозах из API AlienVault OTX и VirusTotal.
Related MCP server: Velociraptor MCP Server
Возможности
Основные возможности
Многоплатформенное сканирование конечных точек
Сканирование систем macOS с использованием установщика PKG
Сканирование конечных точек Windows через PowerShell
Сканирование систем Debian/Ubuntu с использованием APT
Сканирование систем Redhat/CentOS с использованием RPM
Интеграция VirusTotal
Сканирование файлов и URL-адресов через API VirusTotal
Получение существующих результатов анализа
Автоматическое ограничение скорости и защита автоматическим выключателем
Поддержка нескольких ключей API (с соблюдением условий использования VirusTotal)
Аналитика угроз
Поиск пульсов AlienVault OTX
Получение деталей и событий пульсов
Доступ к индикаторам компрометации (IoC)
Хранение данных
База данных SQLite с опциональным шифрованием
Хранение результатов сканирования с временными метками
Журналирование запросов к API
Отслеживание событий автоматического выключателя
Функции, готовые к продакшену
Комплексная обработка ошибок
Структурированное журналирование с Pino
Валидация переменных окружения с Zod
Типобезопасные схемы API
Корректное завершение работы
Предварительные требования
Системные требования
Node.js: >= 22.0.0
npm: >= 8.0.0
Операционная система: macOS, Linux или Windows
Дисковое пространство: минимум 100 МБ для зависимостей
Требуемые ключи API
Ключ API AlienVault OTX (обязательно)
Зарегистрируйтесь на https://otx.alienvault.com
Перейдите в Settings > API Keys
Сгенерируйте новый ключ API
Ключ API VirusTotal (опционально, для расширенной функциональности)
Зарегистрируйтесь на https://www.virustotal.com
Перейдите в API Console
Сгенерируйте ключ(и) API
Примечание: бесплатный тариф позволяет 500 запросов в день, 4 запроса в минуту
Установка
1. Клонирование репозитория
git clone https://github.com/VRIL-LABS/aliensec-mcp-server.git
cd aliensec-mcp-server2. Установка зависимостей
npm installЭто установит все зависимости для разработки и продакшена.
3. Настройка переменных окружения
Скопируйте пример файла окружения и обновите его своими ключами API:
cp .env.example .envОтредактируйте .env, указав свои ключи API:
# Server Configuration
NAME=aliensec-mcp-server
VERSION=1.0.0
DEBUG=false
LOG_LEVEL=info
# AlienVault OTX Configuration (Required)
ALIENVAULT_API_KEY=your_alienvault_api_key_here
ALIENVAULT_BASE_URL=https://api.agent.otxb.io
ALIENVAULT_DEFAULT_REGION=us-east-1
# VirusTotal Configuration (Optional)
VIRUSTOTAL_API_KEYS=key1,key2,key3
VIRUSTOTAL_BASE_URL=https://www.virustotal.com/api/v3
VIRUSTOTAL_RATE_LIMIT_PER_MINUTE=4
VIRUSTOTAL_DAILY_LIMIT=500
VIRUSTOTAL_CIRCUIT_BREAKER_TIMEOUT=300
# Database Configuration
DATABASE_PATH=./data/aliensec.db
DATABASE_ENCRYPTION_KEY=your_encryption_key_here
DATABASE_TIMEOUT=5000Примечание: Условия использования VirusTotal запрещают использование нескольких ключей API для обхода ограничений скорости. Эта реализация соблюдает эти ограничения и использует несколько ключей только для обеспечения избыточности.
4. (Опционально) Установка зависимостей шифрования SQLite
Для поддержки шифрованной базы данных на Linux/macOS:
# Ubuntu/Debian
sudo apt-get install build-essential
# macOS
xcode-select --installИспользование
Режим разработки
Запуск сервера в режиме разработки с автоматической перезагрузкой:
npm run devПроизводственный режим
Сборка и запуск сервера:
npm run build
npm startИспользование с MCP-клиентами
Сервер взаимодействует через stdio (стандартный ввод/вывод). Для использования с MCP-клиентом:
# Direct execution
node dist/index.js
# Or using the npm script
npm startПример интеграции с MCP-клиентом
import { Client } from '@modelcontextprotocol/client';
import { StdioClientTransport } from '@modelcontextprotocol/client/stdio';
const client = new Client({ name: 'my-client', version: '1.0.0' });
const transport = new StdioClientTransport({
command: 'node',
args: ['dist/index.js'],
});
await client.connect(transport);
// Call a scan tool
const result = await client.callTool({
name: 'scan_macos_pkg',
arguments: {
target: '192.168.1.100',
useVirusTotal: true,
},
});
console.log(result.content);Доступные инструменты
Инструменты сканирования (5)
Инструмент | Описание | Параметры |
| Универсальный сканер конечных точек |
|
| Сканирование установщика macOS PKG |
|
| Сканирование конечной точки Windows |
|
| Сканирование конечной точки Debian/APT |
|
| Сканирование конечной точки Redhat/RPM |
|
Инструменты VirusTotal (2)
Инструмент | Описание | Параметры |
| Сканирование ресурса через VirusTotal |
|
| Получение существующего анализа VirusTotal |
|
Инструменты AlienVault OTX (3)
Инструмент | Описание | Параметры |
| Получение команды начальной загрузки для flavor |
|
| Получение всех URL начальной загрузки | - |
| Поиск пульсов AlienVault OTX |
|
Инструменты базы данных (4)
Инструмент | Описание | Параметры |
| Получение статистики сканирований | - |
| Получение последних сканирований |
|
| Получение статистики автоматического выключателя | - |
| Получение статистики API | - |
Системные инструменты (1)
Инструмент | Описание | Параметры |
| Получение статуса здоровья сервера | - |
Команды начальной загрузки
Сервер предоставляет предварительно настроенные команды начальной загрузки для каждого типа конечной точки. <api-key> ниже — это ваше разрешённое значение ALIENVAULT_API_KEY, а TARGET=<target> включается только при указании target.
Установщик macOS PKG
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=pkg)"Windows PowerShell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; API_KEY=<api-key> (new-object Net.WebClient).DownloadString("https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=powershell") | iex; install_agent -apikey <api-key> [-target <target>]Debian APT
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=apt)"Redhat RPM
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=rpm)"Структура проекта
aliensec-mcp-server/
├── src/
│ ├── config/
│ │ └── index.ts # Environment configuration & validation
│ ├── core/
│ │ ├── alienVault.ts # AlienVault OTX API client
│ │ └── virusTotal.ts # VirusTotal API client
│ ├── database/
│ │ └── index.ts # SQLite database with repositories
│ ├── types/
│ │ └── index.ts # TypeScript type definitions
│ └── index.ts # Main MCP server entry point
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
├── eslint.config.js
├── .prettierrc
└── README.mdАрхитектура
Многоуровневая архитектура
┌─────────────────────────────────────┐
│ MCP Server Layer │ ← src/index.ts
├─────────────────────────────────────┤
│ Core Service Layer │ ← src/core/
├─────────────────────────────────────┤
│ Data Access Layer │ ← src/database/
├─────────────────────────────────────┤
│ Configuration Layer │ ← src/config/
├─────────────────────────────────────┤
│ Type Definitions │ ← src/types/
└─────────────────────────────────────┘Ключевые паттерны проектирования
Паттерн Singleton: База данных, клиент AlienVault, клиент VirusTotal
Паттерн Repository: ScanRepository, CircuitBreakerRepository, APILogRepository
Паттерн автоматического выключателя: Автоматическая ротация ключей API при сбоях
Ограничитель скорости Token Bucket: Ограничение скорости для API VirusTotal
Паттерн Factory: Создание MCP-сервера с внедрением зависимостей
Паттерн Strategy: Различные типы сканирования с общим интерфейсом
Схема базы данных
Сервер использует SQLite со следующими таблицами:
scan_records
Хранит все результаты сканирования с находками, данными VirusTotal и временными метками.
circuit_breaker_events
Отслеживает изменения состояния автоматического выключателя для ключей API.
api_logs
Журналирует все запросы к API с временем ответа, кодами состояния и ошибками.
schema_version
Отслеживает версию схемы базы данных для миграций.
Обработка ошибок
Пользовательские классы ошибок
AlienSecError: Базовый класс ошибки с кодом и statusCode
AlienVaultAPIError: Ошибки, специфичные для AlienVault
VirusTotalAPIError: Ошибки, специфичные для VirusTotal, с обнаружением ограничения скорости
DatabaseError: Ошибки, связанные с базой данных
ConfigurationError: Ошибки валидации конфигурации
Формат ответа об ошибке
Ошибки инструментов возвращают стандартную форму результата MCP с isError: true. Человекочитаемое сообщение находится в первом блоке содержимого; error содержит JSON-строку контекстных данных (ID сканирования, flavor, target и т. д.), которые вызвали сбой:
{
"content": [
{ "type": "text", "text": "Scan failed: <error message>" }
],
"isError": true,
"error": "{\n \"scanId\": \"...\",\n \"flavor\": \"pkg\",\n \"target\": \"...\",\n \"error\": \"<error message>\"\n}"
}Журналирование
Сервер использует Pino для структурированного журналирования со следующими уровнями:
error: Критические сбои
warn: Предупреждения и потенциальные проблемы
info: Обычные операции и обновления статуса
debug: Подробная отладочная информация
trace: Очень подробное журналирование для разработки
Журналы автоматически редактируются для предотвращения записи конфиденциальных данных (ключей API).
Ограничение скорости и автоматический выключатель
Ограничение скорости VirusTotal
Алгоритм Token Bucket: Плавное ограничение скорости
Настраиваемые лимиты: Задаются через переменные окружения
Автоматическое ожидание: Опция ожидания при ограничении скорости
Автоматический выключатель: Автоматически блокирует ключи API, которые многократно дают сбои
Конфигурация автоматического выключателя
Порог сбоев: 5 последовательных сбоев
Таймаут сброса: 300 секунд (5 минут)
Состояние полуоткрытия: Тест с 1 запросом перед полным повторным открытием
Соответствие условиям использования
Реализация соблюдает условия использования VirusTotal:
Несколько ключей API предназначены для избыточности, а не для обхода лимитов
Каждый ключ API соблюдает индивидуальные ограничения скорости
Автоматический выключатель предотвращает быстрые повторные попытки при сбоях
Подсчёт ежедневных запросов предотвращает исчерпание квоты
Разработка
Запуск тестов
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run with coverage
npx vitest run --coverageЛинтинг и форматирование
# Run linting
npm run lint
# Auto-fix linting issues
npm run lint:fix
# Format code
npm run formatПроверка типов
npm run typecheckПроверка сборки
# Clean build
npm run clean
npm run build
# Check build output
ls -la dist/Переменные окружения
Переменная | Обязательно | По умолчанию | Описание |
| Да | - | Ключ API AlienVault OTX |
| Нет |
| Базовый URL API AlienVault |
| Нет |
| Регион по умолчанию для агентов |
| Нет | `` | Ключи API VirusTotal через запятую |
| Нет |
| Базовый URL API VirusTotal |
| Нет |
| Лимит запросов в минуту |
| Нет |
| Дневной лимит запросов |
| Нет |
| Тайм-аут автоматического выключателя (секунды) |
| Нет |
| Путь к базе данных SQLite |
| Нет | - | Ключ шифрования базы данных |
| Нет |
| Тайм-аут подключения к базе данных |
| Нет |
| Имя сервера |
| Нет |
| Версия сервера |
| Нет |
| Включить режим отладки |
| Нет |
| Уровень журналирования (error, warn, info, debug, trace) |
Соображения безопасности
Защита данных
Шифрование базы данных: Используйте
DATABASE_ENCRYPTION_KEYдля шифрования конфиденциальных данных в состоянии покояБезопасность ключей API: Ключи API никогда не записываются в журналы; используйте переменные окружения или защищенные хранилища
Безопасность памяти: Конфиденциальные строки хэшируются с помощью PBKDF2 (120 000 итераций) перед сохранением в таблицах автоматического выключателя и журнала API
Сетевая безопасность
Только HTTPS: Все взаимодействия с API используют HTTPS
Проверка сертификатов: Проверка TLS-сертификатов включена по умолчанию
User-Agent: Пользовательский агент идентифицирует версию сервера
Ограничение скорости
Клиентское ограничение скорости: Предотвращает перегрузку внешних API
Автоматический выключатель: Предотвращает каскадные сбои
Обратное давление: Автоматическое ожидание при ограничении скорости
Производительность
Оптимизации
Пул соединений: Соединения с базой данных переиспользуются
Ленивая загрузка: Репозитории создаются по требованию
Индексированные запросы: Таблицы базы данных имеют соответствующие индексы
Кэширование: Хэши ключей API кэшируются для проверок автоматического выключателя
Async/Await: Неблокирующие операции ввода-вывода
Бенчмарки
Запрос сканирования: ~100-500 мс (симуляция)
Запрос VirusTotal: ~200-1000 мс (зависит от сети)
Операции с базой данных: <10 мс (локальная SQLite)
Устранение неполадок
Частые проблемы
Не удалось подключиться к базе данных
Error: Failed to connect to databaseРешение: Убедитесь, что каталог данных существует и имеет права на запись:
mkdir -p data
chmod 755 dataОтсутствует ALIENVAULT_API_KEY
Missing required environment variables:
- ALIENVAULT_API_KEYРешение: Установите переменную окружения:
export ALIENVAULT_API_KEY=your_api_key_here
# or add to .env fileПревышен лимит запросов VirusTotal
Error: Rate limit exceeded for API key 0Решение:
Подождите, пока сбросится лимит запросов (по умолчанию: 4 запроса в минуту)
Добавьте больше ключей API (через запятую в VIRUSTOTAL_API_KEYS)
Используйте параметр
wait: trueдля автоматического ожидания
Автоматический выключатель открыт
Error: API key 0 is blocked by circuit breakerРешение: Подождите, пока истечет тайм-аут автоматического выключателя (по умолчанию: 5 минут). Выключатель автоматически закроется после истечения тайм-аута.
Режим отладки
Включите подробное журналирование для детального устранения неполадок:
DEBUG=true LOG_LEVEL=debug npm run devВнесение вклада
Пул-реквесты
Сделайте форк репозитория
Создайте ветку функции (
git checkout -b feature/amazing-feature)Зафиксируйте изменения (
git commit -m 'Add amazing feature')Отправьте изменения в ветку (
git push origin feature/amazing-feature)Откройте пул-реквест
Рекомендации по сообщениям коммитов
Используйте формат Conventional Commits
Добавляйте префикс с типом:
feat:,fix:,docs:,style:,refactor:,test:,chore:Держите тему сообщения не длиннее 72 символов
При необходимости добавьте подробное описание в тело сообщения
Ревью кода
Все пул-реквесты требуют одобрения как минимум одного мейнтейнера
Конвейер CI/CD должен быть пройден (lint, typecheck, тесты)
Код должен соответствовать существующим паттернам и стилю
Лицензия
Этот проект лицензирован под лицензией MIT - подробнее см. в файле LICENSE.
Благодарности
Model Context Protocol: https://modelcontextprotocol.io
AlienVault OTX: https://otx.alienvault.com
VirusTotal: https://www.virustotal.com
TypeScript: https://www.typescriptlang.org
better-sqlite3-multiple-ciphers: https://github.com/m4heshd/better-sqlite3-multiple-ciphers
Ссылки
Создано с ❤️ для сообщества специалистов по безопасности
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides AI agents with 37 OSINT tools and 12 data sources to perform unified reconnaissance, domain analysis, and attack surface mapping. It enables agents to query, correlate, and reason across platforms like Shodan, VirusTotal, and Censys in parallel.3768144MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interface with Velociraptor for digital forensics and incident response tasks, including file/memory scans, remediation actions, and artifact collection across multiple operating systems.1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to scan code for security vulnerabilities using multiple static analysis tools, with support for filtering, deduplication, and CI/CD integration.272MIT
- AlicenseAqualityBmaintenanceEnables assistants to analyze files and URLs for malware by integrating with security services like VirusTotal and ANY.RUN, returning threat reports.20MIT
Related MCP Connectors
Real-time threat intel for AI agents: 890K+ IOCs incl. prompt-injection & AI-skill threats
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/VRIL-LABS/aliensec-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server