Skip to main content
Glama
VRIL-LABS

AlienSec MCP Server

by VRIL-LABS

AlienSec MCP Server

OpenSSF Scorecard

Produktionsreifer AlienVault-OTX-Endpunkt-Sicherheits-Scanning-MCP-Server mit VirusTotal-Integration

License: MIT Node.js TypeScript MCP

// für die Sicherheits-Community erstellt — Finanzierung hält es am Laufen

GitHub Sponsors Open Collective Ko-fi Buy Me a Coffee thanks.dev


Überblick

Der AlienSec MCP Server ist ein produktionsreifer Model-Context-Protocol-Server (MCP), der umfassende Endpunkt-Sicherheits-Scanning-Funktionen unter Verwendung von AlienVault OTX mit optionaler VirusTotal-Integration bereitstellt.

Dieser Server ermöglicht es KI-Agenten und Anwendungen, Sicherheitsscans für verschiedene Endpunkttypen (macOS PKG, Windows PowerShell, Debian APT, Redhat RPM) durchzuführen und Bedrohungsinformationen von den AlienVault-OTX- und VirusTotal-APIs abzurufen.


Related MCP server: Velociraptor MCP Server

Funktionen

Kernfunktionen

  • Multi-Plattform-Endpunkt-Scanning

    • Scan von macOS-Systemen mit PKG-Installer-Flavor

    • Scan von Windows-Endpunkten über PowerShell

    • Scan von Debian/Ubuntu-Systemen mit APT

    • Scan von Redhat/CentOS-Systemen mit RPM

  • VirusTotal-Integration

    • Scan von Dateien und URLs über die VirusTotal-API

    • Abrufen vorhandener Analyseergebnisse

    • Automatisches Rate-Limiting und Circuit-Breaker-Schutz

    • Unterstützung mehrerer API-Schlüssel (respektiert die VirusTotal-AGB)

  • Bedrohungsinformationen

    • Suche in AlienVault-OTX-Pulsen

    • Abrufen von Pulsdetails und Ereignissen

    • Zugriff auf Indikatoren für Kompromittierung (IoCs)

  • Datenpersistenz

    • SQLite-Datenbank mit optionaler Verschlüsselung

    • Speicherung von Scan-Ergebnissen mit Zeitstempeln

    • Protokollierung von API-Anfragen

    • Verfolgung von Circuit-Breaker-Ereignissen

  • Produktionsreife Funktionen

    • Umfassende Fehlerbehandlung

    • Strukturierte Protokollierung mit Pino

    • Validierung von Umgebungsvariablen mit Zod

    • Typsichere API-Schemas

    • Sauberes Herunterfahren (Graceful Shutdown)


Voraussetzungen

Systemanforderungen

  • Node.js: >= 22.0.0

  • npm: >= 8.0.0

  • Betriebssystem: macOS, Linux oder Windows

  • Speicherplatz: Mindestens 100 MB für Abhängigkeiten

Erforderliche API-Schlüssel

  1. AlienVault-OTX-API-Schlüssel (erforderlich)

    • Registrieren unter https://otx.alienvault.com

    • Navigieren Sie zu Einstellungen > API-Schlüssel

    • Generieren Sie einen neuen API-Schlüssel

  2. VirusTotal-API-Schlüssel (optional, für erweiterte Funktionen)

    • Registrieren unter https://www.virustotal.com

    • Navigieren Sie zur API-Konsole

    • Generieren Sie API-Schlüssel

    • Hinweis: Der kostenlose Tarif erlaubt 500 Anfragen/Tag, 4 Anfragen/Minute


Installation

1. Repository klonen

git clone https://github.com/VRIL-LABS/aliensec-mcp-server.git
cd aliensec-mcp-server

2. Abhängigkeiten installieren

npm install

Dadurch werden alle Produktions- und Entwicklungsabhängigkeiten installiert.

3. Umgebungsvariablen konfigurieren

Kopieren Sie die Beispiel-Umgebungsdatei und aktualisieren Sie sie mit Ihren API-Schlüsseln:

cp .env.example .env

Bearbeiten Sie .env mit Ihren API-Schlüsseln:

# 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

Hinweis: Die VirusTotal-AGB verbieten die Verwendung mehrerer API-Schlüssel zur Umgehung von Ratenbegrenzungen. Diese Implementierung respektiert diese Grenzen und verwendet mehrere Schlüssel nur für Redundanz.

4. (Optional) SQLite-Verschlüsselungsabhängigkeiten installieren

Für verschlüsselte Datenbankunterstützung unter Linux/macOS:

# Ubuntu/Debian
sudo apt-get install build-essential

# macOS
xcode-select --install

Verwendung

Entwicklungsmodus

Server im Entwicklungsmodus mit automatischem Neuladen ausführen:

npm run dev

Produktionsmodus

Server bauen und ausführen:

npm run build
npm start

Verwendung mit MCP-Clients

Der Server kommuniziert über stdio (Standard-Eingabe/Ausgabe). Zur Verwendung mit einem MCP-Client:

# Direct execution
node dist/index.js

# Or using the npm script
npm start

Beispiel für MCP-Client-Integration

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);

Verfügbare Tools

Scan-Tools (5)

Tool

Beschreibung

Parameter

scan_endpoint

Generischer Endpunkt-Scanner

flavor, target, useVirusTotal, apiKeyIndex

scan_macos_pkg

macOS-PKG-Installer scannen

target, useVirusTotal

scan_windows

Windows-Endpunkt scannen

target, useVirusTotal

scan_debian_apt

Debian/APT-Endpunkt scannen

target, useVirusTotal

scan_redhat_rpm

Redhat/RPM-Endpunkt scannen

target, useVirusTotal

VirusTotal-Tools (2)

Tool

Beschreibung

Parameter

use_virustotal

Ressource mit VirusTotal scannen

resource, apiKeyIndex, wait

get_virustotal_analysis

Vorhandene VirusTotal-Analyse abrufen

hash, apiKeyIndex

AlienVault-OTX-Tools (3)

Tool

Beschreibung

Parameter

get_bootstrap_command

Bootstrap-Befehl für Flavor abrufen

flavor, target

get_bootstrap_urls

Alle Bootstrap-URLs abrufen

-

search_pulses

AlienVault-OTX-Pulse durchsuchen

query, limit, offset

Datenbank-Tools (4)

Tool

Beschreibung

Parameter

get_scan_stats

Scan-Statistiken abrufen

-

get_recent_scans

Aktuelle Scans abrufen

limit

get_circuit_breaker_stats

Circuit-Breaker-Statistiken abrufen

-

get_api_stats

API-Statistiken abrufen

-

System-Tools (1)

Tool

Beschreibung

Parameter

get_health

Server-Health-Status abrufen

-


Bootstrap-Befehle

Der Server stellt vorkonfigurierte Bootstrap-Befehle für jeden Endpunkt-Flavor bereit. <api-key> unten ist Ihr aufgelöster ALIENVAULT_API_KEY-Wert, und TARGET=<target> wird nur eingefügt, wenn ein target angegeben ist.

macOS-PKG-Installer

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)"

Projektstruktur

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

Architektur

Schichtenarchitektur

┌─────────────────────────────────────┐
│           MCP Server Layer           │  ← src/index.ts
├─────────────────────────────────────┤
│         Core Service Layer           │  ← src/core/
├─────────────────────────────────────┤
│         Data Access Layer            │  ← src/database/
├─────────────────────────────────────┤
│        Configuration Layer           │  ← src/config/
├─────────────────────────────────────┤
│           Type Definitions           │  ← src/types/
└─────────────────────────────────────┘

Wichtige Entwurfsmuster

  1. Singleton-Muster: Datenbank, AlienVault-Client, VirusTotal-Client

  2. Repository-Muster: ScanRepository, CircuitBreakerRepository, APILogRepository

  3. Circuit-Breaker-Muster: Automatische API-Schlüssel-Rotation bei Fehlern

  4. Token-Bucket-Rate-Limiter: Ratenbegrenzung für die VirusTotal-API

  5. Factory-Muster: MCP-Server-Erstellung mit Dependency Injection

  6. Strategie-Muster: Verschiedene Scan-Flavors mit gemeinsamer Schnittstelle


Datenbankschema

Der Server verwendet SQLite mit den folgenden Tabellen:

scan_records

Speichert alle Scan-Ergebnisse mit Befunden, VirusTotal-Daten und Zeitstempeln.

circuit_breaker_events

Verfolgt Circuit-Breaker-Zustandsänderungen für API-Schlüssel.

api_logs

Protokolliert alle API-Anfragen mit Antwortzeiten, Statuscodes und Fehlern.

schema_version

Verfolgt die Datenbankschema-Version für Migrationen.


Fehlerbehandlung

Benutzerdefinierte Fehlerklassen

  • AlienSecError: Basis-Fehlerklasse mit Code und statusCode

  • AlienVaultAPIError: AlienVault-spezifische Fehler

  • VirusTotalAPIError: VirusTotal-spezifische Fehler mit Ratenbegrenzungs-Erkennung

  • DatabaseError: Datenbankbezogene Fehler

  • ConfigurationError: Konfigurationsvalidierungsfehler

Fehlerantwortformat

Tool-Fehler geben die Standard-MCP-Ergebnisform mit isError: true zurück. Die menschenlesbare Nachricht ist der erste Inhaltsblock; error enthält die JSON-stringifizierten Kontextdaten (Scan-ID, Flavor, Ziel usw.), die den Fehler ausgelöst haben:

{
  "content": [
    { "type": "text", "text": "Scan failed: <error message>" }
  ],
  "isError": true,
  "error": "{\n  \"scanId\": \"...\",\n  \"flavor\": \"pkg\",\n  \"target\": \"...\",\n  \"error\": \"<error message>\"\n}"
}

Protokollierung

Der Server verwendet Pino für strukturierte Protokollierung mit den folgenden Ebenen:

  • error: Kritische Fehler

  • warn: Warnungen und potenzielle Probleme

  • info: Normale Vorgänge und Statusaktualisierungen

  • debug: Detaillierte Debug-Informationen

  • trace: Sehr ausführliche Protokollierung für die Entwicklung

Protokolle werden automatisch geschwärzt, um zu verhindern, dass sensible Daten (API-Schlüssel) protokolliert werden.


Ratenbegrenzung & Circuit Breaker

VirusTotal-Ratenbegrenzung

  • Token-Bucket-Algorithmus: Gleichmäßige Ratenbegrenzung

  • Konfigurierbare Grenzen: Über Umgebungsvariablen festlegbar

  • Automatisches Warten: Option zum Warten bei Ratenbegrenzung

  • Circuit Breaker: Blockiert automatisch API-Schlüssel, die wiederholt fehlschlagen

Circuit-Breaker-Konfiguration

  • Fehlerschwelle: 5 aufeinanderfolgende Fehler

  • Reset-Timeout: 300 Sekunden (5 Minuten)

  • Halb-offener Zustand: Test mit 1 Anfrage vor vollständigem Wiederöffnen

AGB-Konformität

Die Implementierung respektiert die Nutzungsbedingungen von VirusTotal:

  • Mehrere API-Schlüssel dienen der Redundanz, nicht der Umgehung von Grenzen

  • Jeder API-Schlüssel respektiert individuelle Ratenbegrenzungen

  • Der Circuit Breaker verhindert schnelle Wiederholungsversuche bei Fehlern

  • Die tägliche Anfragezählung verhindert die Erschöpfung des Kontingents


Entwicklung

Tests ausführen

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run with coverage
npx vitest run --coverage

Linting & Formatierung

# Run linting
npm run lint

# Auto-fix linting issues
npm run lint:fix

# Format code
npm run format

Typprüfung

npm run typecheck

Build-Überprüfung

# Clean build
npm run clean
npm run build

# Check build output
ls -la dist/

Umgebungsvariablen

Variable

Erforderlich

Standard

Beschreibung

ALIENVAULT_API_KEY

Ja

-

AlienVault-OTX-API-Schlüssel

ALIENVAULT_BASE_URL

Nein

https://api.agent.otxb.io

Basis-URL der AlienVault-API

ALIENVAULT_DEFAULT_REGION

Nein

us-east-1

Standardregion für Agents

VIRUSTOTAL_API_KEYS

Nein

``

Durch Kommas getrennte VirusTotal-API-Schlüssel

VIRUSTOTAL_BASE_URL

Nein

https://www.virustotal.com/api/v3

Basis-URL der VirusTotal-API

VIRUSTOTAL_RATE_LIMIT_PER_MINUTE

Nein

4

Ratenlimit pro Minute

VIRUSTOTAL_DAILY_LIMIT

Nein

500

Tägliches Anforderungslimit

VIRUSTOTAL_CIRCUIT_BREAKER_TIMEOUT

Nein

300

Timeout des Circuit Breakers (Sekunden)

DATABASE_PATH

Nein

./data/aliensec.db

Pfad zur SQLite-Datenbank

DATABASE_ENCRYPTION_KEY

Nein

-

Datenbank-Verschlüsselungsschlüssel

DATABASE_TIMEOUT

Nein

5000

Timeout für Datenbankverbindung

NAME

Nein

aliensec-mcp-server

Servername

VERSION

Nein

1.0.0

Serverversion

DEBUG

Nein

false

Debug-Modus aktivieren

LOG_LEVEL

Nein

info

Protokollstufe (error, warn, info, debug, trace)


Sicherheitsüberlegungen

Datenschutz

  1. Datenbankverschlüsselung: Verwenden Sie DATABASE_ENCRYPTION_KEY zum Verschlüsseln sensibler Daten im Ruhezustand

  2. API-Schlüsselsicherheit: API-Schlüssel werden niemals protokolliert; verwenden Sie Umgebungsvariablen oder sichere Tresore

  3. Speichersicherheit: Sensible Zeichenfolgen werden vor der Speicherung in Circuit-Breaker- und API-Protokolltabellen mit PBKDF2 (120.000 Iterationen) gehasht

Netzwerksicherheit

  1. Nur HTTPS: Die gesamte API-Kommunikation verwendet HTTPS

  2. Zertifikatsvalidierung: Die TLS-Zertifikatsvalidierung ist standardmäßig aktiviert

  3. User-Agent: Ein benutzerdefinierter User-Agent identifiziert die Serverversion

Ratenbegrenzung

  1. Clientseitige Ratenbegrenzung: Verhindert die Überlastung externer APIs

  2. Circuit Breaker: Verhindert kaskadierende Fehler

  3. Gegendruck: Automatisches Warten bei Ratenbegrenzung


Leistung

Optimierungen

  • Verbindungspooling: Datenbankverbindungen werden wiederverwendet

  • Lazy Loading: Repositories werden bei Bedarf erstellt

  • Indizierte Abfragen: Datenbanktabellen verfügen über geeignete Indizes

  • Caching: API-Schlüssel-Hashes werden für Circuit-Breaker-Prüfungen zwischengespeichert

  • Async/Await: Nicht blockierende E/A-Operationen

Benchmarks

  • Scan-Anfrage: ~100-500ms (simuliert)

  • VirusTotal-Anfrage: ~200-1000ms (netzwerkabhängig)

  • Datenbankoperationen: <10ms (lokales SQLite)


Fehlerbehebung

Häufige Probleme

Datenbankverbindung fehlgeschlagen

Error: Failed to connect to database

Lösung: Stellen Sie sicher, dass das Datenverzeichnis existiert und Schreibrechte besitzt:

mkdir -p data
chmod 755 data

Fehlender ALIENVAULT_API_KEY

Missing required environment variables:
  - ALIENVAULT_API_KEY

Lösung: Setzen Sie die Umgebungsvariable:

export ALIENVAULT_API_KEY=your_api_key_here
# or add to .env file

VirusTotal-Ratenlimit überschritten

Error: Rate limit exceeded for API key 0

Lösung:

  • Warten Sie, bis sich das Ratenlimit zurückgesetzt hat (Standard: 4 Anfragen/Minute)

  • Fügen Sie weitere API-Schlüssel hinzu (durch Kommas getrennt in VIRUSTOTAL_API_KEYS)

  • Verwenden Sie den Parameter wait: true, um automatisch zu warten

Circuit Breaker offen

Error: API key 0 is blocked by circuit breaker

Lösung: Warten Sie, bis das Timeout des Circuit Breakers abläuft (Standard: 5 Minuten). Der Circuit Breaker wird nach dem Timeout automatisch wieder geöffnet.

Debug-Modus

Aktivieren Sie die Debug-Protokollierung für eine detaillierte Fehlerbehebung:

DEBUG=true LOG_LEVEL=debug npm run dev

Mitwirken

Pull Requests

  1. Forken Sie das Repository

  2. Erstellen Sie einen Feature-Branch (git checkout -b feature/amazing-feature)

  3. Committen Sie Ihre Änderungen (git commit -m 'Add amazing feature')

  4. Pushen Sie den Branch (git push origin feature/amazing-feature)

  5. Öffnen Sie einen Pull Request

Richtlinien für Commit-Nachrichten

  • Verwenden Sie das Conventional Commits-Format

  • Präfix mit Typ: feat:, fix:, docs:, style:, refactor:, test:, chore:

  • Halten Sie die Betreffzeile unter 72 Zeichen

  • Fügen Sie bei Bedarf eine detaillierte Beschreibung im Textkörper hinzu

Code-Review

  • Alle PRs erfordern die Genehmigung von mindestens einem Maintainer

  • Die CI/CD-Pipeline muss erfolgreich sein (Lint, Typprüfung, Tests)

  • Der Code muss den vorhandenen Mustern und Stilen folgen


Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.


Danksagungen


Referenzen


Mit ❤️ für die Sicherheits-Community erstellt

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
1dRelease cycle
4Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    C
    maintenance
    Provides 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.
    37
    681
    44
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to scan code for security vulnerabilities using multiple static analysis tools, with support for filtering, deduplication, and CI/CD integration.
    27
    2
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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