Skip to main content
Glama
INFOKOM-KI

Wazuh MCP Server

by INFOKOM-KI

Blue Team MCP Server (Wazuh SIEM)

Ein defensiver MCP-Server für Claude Desktop / jeden MCP-Client – das Blue-Team-Pendant zu Offensiv-Tools. 123 Tools + 4 Ressourcen in den Bereichen Wazuh SIEM, Multi-Provider-Bedrohungsintelligenz, MITRE-gesteuerte 3-Sum-APT-Korrelation, Angriffsgraphen, LangGraph-Untersuchungsworkflows und Host-Forensik. Standardmäßig schreibgeschützt.

Programmierer: NAuliajati (csirt[at]tangerangkota[.]go[.]id)


Architektur

main.py -> mcp_server/  (package)
                 ├─ core/          HTTP client, redaction, audit, config, attack graph, IOC store
                 ├─ wazuh/         Indexer (OpenSearch) + Manager API (JWT auth)
                 ├─ correlation/   3-Sum engine (pure computation, MITRE-driven)
                 ├─ threat_intel/  CrowdSec, ThreatFox, OTX, URLhaus, GreyNoise + shared cache
                 ├─ agents/        LangGraph investigation + playbook workflows
                 └─ tools/         49 tool modules

Jeder Tool-Aufruf durchläuft eine einzige Pipeline im @blueteam_tool-Dekorator – die drei am stärksten vernetzten Knoten im Code-Graphen:

audit (_audit_log) -> call -> redact (_redact_alert_data) -> truncate (_truncate_if_needed)

Der gesamte ausgehende HTTP-Verkehr läuft durch einen pro-Pool-Circuit-Breaker (http_client.CircuitBreaker: 5 aufeinanderfolgende Fehler -> offen, 60s Abkühlung, einzelner halboffener Versuch). 429 und 4xx zählen nie als Fehler, sodass ein Ausfall eines Upstreams schnell fehlschlägt, anstatt Wiederholungen über Tools zu stapeln.

Transport

Anwendungsfall

stdio

Lokaler Subprozess / SSH-Pipe (Standard)

streamable_http

Remote-HTTP-Dienst (http://<host>:<port>/mcp) – erfordert MCP_API_KEY außerhalb von 127.0.0.1 (Bind-Guard erzwungen)


Related MCP server: wrg-mcp-server

Schnellstart

git clone <repo> && cd Wazuh-MCP-Server
sudo bash setup.sh                    # deps, venv, wrapper at /opt/blue-team-mcp

# configure (edit /opt/blue-team-mcp/config.env)
export WAZUH_INDEXER_URL="https://<host>:9200"
export WAZUH_INDEXER_USER="admin"
export WAZUH_INDEXER_PASSWORD="<indexer-password>"
export WAZUH_API_URL="https://<host>:55000"      # optional — Manager API tools
export WAZUH_API_USER="wazuh-wui"
export WAZUH_API_PASSWORD="<api-password>"
export CROWDSEC_API_KEY="<key>"                  # optional — threat intel (free)
# inbound auth for the HTTP transport (REQUIRED when binding beyond 127.0.0.1)
export MCP_API_KEY="btm_<43-char-base64>"        # generate: python3 -c "import secrets; print('btm_' + secrets.token_urlsafe(32))"
export MCP_API_KEY_SCOPES="wazuh:read wazuh:write"   # optional — default wazuh:read (read-only)

# run (stdio)
mcp-server-blueteam

# or remote HTTP (MCP_API_KEY is mandatory here — the server refuses to bind otherwise)
MCP_TRANSPORT=streamable_http MCP_HOST=0.0.0.0 MCP_PORT=8001 \
  MCP_API_KEY="btm_<43-char-base64>" mcp-server-blueteam

Claude-Desktop-Konfiguration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "blue-team-mcp": {
      "command": "ssh",
      "args": ["-i", "~/.ssh/id_ed25519", "user@DEFENDER_HOST", "mcp-server-blueteam"],
      "transport": "stdio"
    }
  }
}

Konfiguration

Anmeldedaten stammen aus Umgebungsvariablen und werden beim Start validiert. Jeder Threat-Intel-Schlüssel ist optional – Tools funktionieren ohne sie weiterhin ordnungsgemäß.

Bereich

Variablen

Hinweise

Wazuh Indexer

WAZUH_INDEXER_URL / _USER / _PASSWORD

OpenSearch (9200) – Alarm-/Ereignisdaten

Wazuh Manager

WAZUH_API_URL / _USER / _PASSWORD

Manager-API (55000) – Regeln/Agenten/Konfiguration

TLS

WAZUH_INDEXER_VERIFY_SSL, WAZUH_API_VERIFY_SSL

Standard true

Threat-Intel

CROWDSEC_API_KEY, THREATFOX_API_KEY, OTX_API_KEY, URLHAUS_API_KEY, ABUSEIPDB_API_KEY, VIRUSTOTAL_API_KEY, NETRA_API_KEY, ARGUS_API_KEY, RAPIDAPI_KEY, HUDSONROCK_API_KEY

9 Anbieter + RapidAPI + HudsonRock; alle optional

Redaktion

BLUETEAM_REDACTION_POLICY, BLUETEAM_OWNED_DOMAINS, BLUETEAM_REDACT_*

siehe Sicherheit & Datenschutz

Forensik-Gate

BLUETEAM_ALLOW_FORENSIC_BYPASS, BLUETEAM_FORENSIC_TOKEN

Standard false / leer

Eingehende Authentifizierung

MCP_API_KEY, MCP_API_KEY_SCOPES

Vorab geteilter API-Schlüssel + Scopes für streamable_http

Eingehende Härtung

BLUETEAM_HTTP_RATE_LIMIT, BLUETEAM_ALLOWED_ORIGINS

Pro-IP-Sliding-Window-Ratenlimit (req/min, 0=aus) + Origin-Allowlist (Loopback immer erlaubt)

Audit & Persistenz

BLUETEAM_AUDIT_LOG, BLUETEAM_IOC_STORE, BLUETEAM_ATTACKER_REGISTRY, BLUETEAM_FALSE_POSITIVE_KB, BLUETEAM_CASE_STORE, BLUETEAM_CMDB_FILE

JSONL-Audit-Trail + Speicher (optional)

Gating

WAZUH_READ_ONLY, WAZUH_DISABLED_CATEGORIES, WAZUH_DISABLED_TOOLS

destruktive Tools / Tool-Kategorien überspringen


Funktionen

Wazuh SIEM

Alarmsuche (blueteam_wazuh_indexer_search, wazuh_alert_dsl_query), statistische Aggregationen ohne Dokumente, Schema-Erkennung (blueteam_index_schema), Domain-/E-Mail-/Geo-/Syscheck-/Compliance-Abfragen und Manager-API-Tools (Regeln, Decoder, Gruppen, Agenten, Sicherheitsereignisse).

3-Sum-APT-Korrelation

three_sum_correlation führt zwei Engines plus einheitliche Bewertung aus:

  • Engine A – MITRE-gesteuertes Multi-IoC-Risiko-Schwellenwertverfahren. Alarme werden nach rule.mitre.tactic (über MITRE_TACTIC_TO_CATEGORY) und rule.mitre.id (aufgelöst über das ATT&CK-STIX-Bundle) klassifiziert, als rule.level × Taktik-Gewicht bewertet und durch eine ≥2-Kategorien-Kettenangriffsregel (threshold_score Standard 35) gesteuert.

  • Engine B – 3-Quellen-volumetrischer Z-Score (MAD + Schulter-Check), der gleichzeitige Spitzen markiert.

  • Plus Multi-Auflösung (1h/24h/7d), einheitliche Schweregradbewertung und Erkennung von Indexer-Degradation.

Threat Intelligence

9 Anbieter – CrowdSec, ThreatFox, OTX, URLhaus, GreyNoise, AbuseIPDB, VirusTotal, Netra, Argus – mit einem einheitlichen blueteam_threat_intel_aggregate (paralleler Fan-out) und einem gewichteten blueteam_unified_threat_score. Dazu stealer_log_check (HudsonRock) und jarm_fingerprint (TLS-Fingerabdruck für C2-/Malware-Zuordnung, ohne API-Schlüssel) sowie 3 RapidAPI-Abfragen (blueteam_ip_blacklist, blueteam_ioc_search, blueteam_breach_check).

Alarm-Anreicherung

blueteam_wazuh_alert_summarize, blueteam_beacon_detect, blueteam_attack_chain, blueteam_threat_card, blueteam_wazuh_alert_compare, blueteam_curated_threat_report.

Untersuchung, Graphen & Workflows

blueteam_investigate_ip, blueteam_attack_graph (networkx-Cluster + PageRank), blueteam_pivot_suggest, blueteam_campaign_watch, blueteam_stix_killchain, blueteam_investigation_workflow und blueteam_playbook_run (LangGraph) sowie eine False-Positive-Wissensbasis (blueteam_false_positive_kb), die bekannte verrauschte IOCs in 3-Sum automatisch unterdrückt.

Host- & Domain-Forensik

WHOIS / CRT.sh, IOC-Extraktion, JARM-Fingerprinting, Typosquatting-Erkennung (blueteam_domain_permute), Webshell-Scanning, serverseitiger JSONL-Export, DOCX/XLSX/PPTX-Berichtsexport und 23 Host-Forensik-Tools (Log-Reader, fail2ban, Rootkit-Scan, lynis, Prozess/Cron/Benutzer).


Sicherheit & Datenschutz

Eingehende Authentifizierung (streamable_http)

streamable_http ist durch einen vorab geteilten API-Schlüssel in mcp_server/core/server_auth.py geschützt:

  • MCP_API_KEY – Format btm_<43-char-urlsafe-base64> (47 Zeichen). Wird nur als SHA-256-Digest gespeichert und mit hmac.compare_digest (konstantzeit) verglichen.

  • MCP_API_KEY_SCOPES – Standard wazuh:read (schreibgeschützt). Fügen Sie wazuh:write hinzu, um die 9 Schreib-Tools freizuschalten (blueteam_fail2ban_unban, blueteam_case_*, blueteam_set_owned_domains, blueteam_mark_investigated, blueteam_wazuh_export, blueteam_export_report, blueteam_capture_traffic). Fail-closed: kein Scope ⇒ schreibgeschützt.

  • Bind-Guard (main.py::_start_http_transport): Ein Nicht-Loopback-Bind ohne MCP_API_KEY löst ConfigurationError aus und verweigert den Start. Loopback bleibt nur dann ohne Authentifizierung, wenn kein Schlüssel konfiguriert ist; wenn ein Schlüssel gesetzt ist, wird er bei jeder Anfrage erzwungen.

  • JSON-Tiefen-Guard (parse_json_body_safe): Jeder POST-Body ist auf 1 MB begrenzt (MAX_BODY_BYTES) und wird abgelehnt, wenn die Verschachtelung 100 Ebenen überschreitet (MAX_JSON_DEPTH), bevor json.loads ausgeführt wird – blockiert die Stack-Exhaustion-DoS durch tief verschachtelte JSON-RPC-Payloads.

  • Eingehender Ratenbegrenzer (SlidingWindowRateLimiter): Pro-Client-IP-Sliding-Window-Obergrenze (BLUETEAM_HTTP_RATE_LIMIT, Anfragen/min, Standard 0 = deaktiviert) → 429 bei Überschreitung. Unterscheidet sich von BLUETEAM_RATE_LIMIT, das destruktive Tools (fail2ban unban, tcpdump capture) mit einer globalen Obergrenze pro Minute steuert.

  • Origin-Validierung (_origin_allowed): Ein Origin-Header muss ein Loopback-Ursprung oder in BLUETEAM_ALLOWED_ORIGINS (kommagetrennte exakte Ursprünge) sein, sonst 403. Blockiert browserbasiertes DNS-Rebinding / Localhost-Exfiltration. Anfragen ohne Origin-Header (Nicht-Browser-Clients) sind nicht betroffen. Die Middleware ist immer installiert – Ratenbegrenzung und Origin-Validierung gelten auch bei einem authentifizierungsfreien Loopback-Bind.

Redaktionsrichtlinie

Drei-Zustands-Richtlinie (BLUETEAM_REDACTION_POLICY, Standard protect_victim):

Richtlinie

Verhalten

full

Formbasiertes Maskieren von E-Mails, privaten IPs, allen Domains, Pfaden, User-Agents – konservativer Fallback, wenn protect_victim keine eigenen Domains hat

protect_victim

Nur Opfer-eigene Indikatoren maskieren (eigene Domains, private IPs, Identitäten); Angreifer-IOCs bleiben sichtbar. Empfohlen für SOC-Triage.

raw

Nur Layer-1-Credential-Strip – hart abgesichert hinter BLUETEAM_ALLOW_FORENSIC_BYPASS=true + BLUETEAM_FORENSIC_TOKEN

Layer 1 (Credential-Stripping) gilt in allen Zuständen und ist nie umgehbar. Das Angreifer-IOC-Register (core/attacker_registry.py) befreit bestätigte Angreifer-Indikatoren von der formbasierten Maskierung – nie von Layer 1.

Zweistufiges Unmasking zusätzlich zur Richtlinie:

  • Stufe 1 – reveal_owned=true – zeigt dem LLM nur eigene *.tangerangkota.go.id-Assets und entschlüsselt eigene Domain-Bucket-Schlüssel in den Aggregationstools (einschließlich wazuh_alert_dsl_query). Erweitert sich nie über BLUETEAM_OWNED_DOMAINS hinaus.

  • Stufe 2 – bypass_redaction=true + forensic_token – schreibt Rohdaten auf die Festplatte; das LLM erhält nur den Dateipfad, nie den Rohinhalt.

Setzen Sie BLUETEAM_OWNED_DOMAINS auf die Domains Ihrer Organisation (kommagetrennt, z. B. tangerangkota.go.id). Prüfen Sie mit blueteam_owned_domains; aktualisieren Sie zur Laufzeit mit blueteam_set_owned_domains (gesteuert durch BLUETEAM_ALLOW_RUNTIME_DOMAINS=true, Standard aus).


SOC-Analyse-Prompt (Copy-Paste für Ihr LLM)

Ein fertig einzufügender Prompt für ein lokales LLM, das mit diesem MCP-Server verbunden ist. Zwei Ausgabeformate – Markdown (inline) und DOCX (erfordert officecli, blueteam_export_report).

⚠️ Calling convention & guardrails (read once — prevents "Field required" errors and false positives):
- Every tool takes a SINGLE ``params`` object. FastMCP double-nests it:
    tool_invoke(name="<tool>", params={"params": {"field": value, ...}})
  Call tool_inspect FIRST to read a tool's exact signature; never skip inspect on an unused tool.
- Default model = protect_victim: the LLM sees attacker public IPs/payloads/rule/severity/MITRE,
  never internal emails, subdomains, private IPs (RFC1918), or internal paths.
- A private/RFC1918 srcip (10.x, 172.16-31.x, 192.168.x) is INTERNAL, never an attacker — do not
  run threat-intel on it (those tools reject private IPs by design — SSRF guard).
- reveal_owned=true (Tier 1, LLM-safe): reveals only *.tangerangkota.go.id + @tangerangkota.go.id.
  Accepted by the alert/aggregation tools — wazuh_domain_lookup, wazuh_alert_focused_crawl,
  wazuh_email_lookup, wazuh_alert_dsl_query (unmasks owned-domain bucket keys), and others —
  never expands beyond BLUETEAM_OWNED_DOMAINS.
- bypass_redaction=true + forensic_token (Tier 2, HUMAN ONLY): writes raw data to disk via
  blueteam_wazuh_export; the LLM sees only the file path.
- ⚠️ NEVER pass redaction_policy="raw" OR bypass_redaction=true in a tool call — both are
  HUMAN-ONLY and gated behind the operator forensic token, which the LLM does NOT hold. The
  call fails with "requires the operator forensic token". For owned-domain visibility use
  reveal_owned=true (above, no token); full raw forensics is blueteam_wazuh_export run by the
  analyst on the server.
- redaction_policy="protect_victim" is accepted by 13 tools (blueteam_curated_threat_report,
  blueteam_threat_card, blueteam_wazuh_alert_summarize, blueteam_wazuh_alerts,
  blueteam_wazuh_geo_heatmap, blueteam_wazuh_indexer_search, three_sum_correlation,
  wazuh_alert_aggregate_analysis, wazuh_alert_focused_crawl, wazuh_alert_timeline,
  wazuh_attack_velocity, wazuh_domain_lookup, wazuh_email_lookup). blueteam_wazuh_export uses
  bypass_redaction (NOT redaction_policy). Other tools reject redaction_policy — drop it and retry.
  (Separately, wazuh_alert_dsl_query accepts reveal_owned=true but NOT redaction_policy.)
- blueteam_wazuh_export writes to BLUETEAM_EXPORT_DIR (default /var/log/blue-team-mcp/exports/)
  with an AUTO-GENERATED filename (export_<timestamp>.jsonl). It has NO ``path`` parameter —
  do not pass one (it will be rejected). Only blueteam_export_report accepts a ``path``.

LANGKAH 0  — Index schema (before any aggregation):
blueteam_index_schema(fields=["data.srcip","rule.id","rule.groups","agent.name",
  "data.domain","data.url","GeoLocation.city_name"], response_format="json")

LANGKAH 1  — Full overview + own-asset forensics:
blueteam_curated_threat_report(since="24h", investigation_depth="deep",
  response_format="json", redaction_policy="protect_victim")
wazuh_domain_lookup(domain="tangerangkota.go.id", since="24h", reveal_owned=true,
  response_format="json", max_scanned=10000)

LANGKAH 2  — Per attacker (top 10): threat card + attack chain
blueteam_threat_card(srcip=<ip>, since="24h")
blueteam_attack_chain(srcip=<ip>, since="24h")

LANGKAH 3  — Unified threat intel:
blueteam_threat_intel_aggregate(indicator=<ip>, response_format="json")
argus_ip_lookup(ip=<ip>); otx_lookup(indicator=<ip>, section="general")
blueteam_ip_blacklist(ip=<ip>); blueteam_ioc_search(ip=<ip>)   # RapidAPI

LANGKAH 4  — 3-Sum APT + auto-enrich + case:
three_sum_correlation(time_window_minutes=1440, follow_up="threat_intel",
  multi_resolution=true, create_case=true, response_format="json",
  redaction_policy="protect_victim")

LANGKAH 5  — Attack graph + pivot + campaign:
blueteam_attack_graph(window_days=30, top_n=20, response_format="json")
blueteam_pivot_suggest(ioc=<top_attacker_ip>)
blueteam_campaign_watch(response_format="json")

LANGKAH 6  — LangGraph investigation + verdict:
blueteam_investigation_workflow(alert_text="<...>", srcip=<ip>, window="24h",
  use_attack_graph=true, generate_report=false, record_verdict=true, verdict_label="suspicious")
blueteam_mark_investigated(srcip=<ip>, verdict="<verdict>", case_id=<case_id>)

LANGKAH 7  — Compromised emails + breach/stealer check:
wazuh_compromised_emails_analysis(since="24h", response_format="json")
blueteam_breach_check(email=<email_dinas>); stealer_log_check(email=<email_dinas>)

LANGKAH 8  — MITRE kill-chain + C2 fingerprinting:
blueteam_stix_killchain(srcip=<ip>, since="24h")
jarm_fingerprint(host=<c2_domain_or_ip>, response_format="json")
blueteam_domain_permute(domain="tangerangkota.go.id")   # typosquatting lookalikes

LANGKAH 9  — Suppression, telemetry, case review:
blueteam_false_positive_kb(); blueteam_owned_domains(); blueteam_metrics()
blueteam_case_list(); blueteam_case_get(case_id=<case_id>)

LANGKAH 10 — Geo heatmap:
blueteam_wazuh_geo_heatmap(since="24h", response_format="json")

Supplementary tools (by category — the full 123-tool set; LANGKAH 0–10 is the default path):

- Alert search/aggregation: blueteam_wazuh_indexer_search, blueteam_wazuh_alerts,
  wazuh_alert_aggregate_analysis, wazuh_alert_focused_crawl, wazuh_alert_dsl_query,
  wazuh_alert_timeline, wazuh_attack_velocity, blueteam_wazuh_alert_summarize,
  blueteam_wazuh_alert_compare.
- Threat intel: crowdsec_ip_reputation(/bulk), threatfox_ioc_search(/bulk),
  greynoise_ip_context, netra_ip_analysis, otx_lookup_bulk, urlhaus_lookup(/bulk),
  urlhaus_hash_lookup, blueteam_lookup_domain_virustotal, blueteam_lookup_hash_virustotal,
  blueteam_unified_threat_score, blueteam_mitre_lookup.
- Baselines & anomaly: blueteam_baseline_profile, blueteam_baseline_drift,
  blueteam_calendar_heatmap, blueteam_beacon_detect.
- Wazuh Manager (agents/rules/config): blueteam_wazuh_agents, blueteam_wazuh_agents_summary,
  blueteam_wazuh_get_cluster_nodes, blueteam_wazuh_get_rules, blueteam_wazuh_get_groups,
  blueteam_wazuh_get_decoders, blueteam_wazuh_get_security_events, blueteam_wazuh_manager_logs,
  blueteam_wazuh_get_rule_files, blueteam_wazuh_get_rule_file_content,
  blueteam_wazuh_get_agent_sca, blueteam_wazuh_list_sca_policies, blueteam_wazuh_get_sca_policy_checks.
- Compliance/SCA/vuln: blueteam_wazuh_syscheck, blueteam_wazuh_compliance,
  blueteam_wazuh_vulnerabilities.
- Host forensics: blueteam_read_auth_log, blueteam_read_syslog, blueteam_read_web_log,
  blueteam_failed_logins, blueteam_last_logins, blueteam_who_is_logged_in,
  blueteam_find_suid_files, blueteam_find_world_writable, blueteam_list_connections,
  blueteam_list_listening_ports, blueteam_list_processes, blueteam_list_cron_jobs,
  blueteam_list_users, blueteam_hash_file, blueteam_journalctl, blueteam_rootkit_scan,
  blueteam_lynis_audit, blueteam_system_health, blueteam_sudo_history,
  blueteam_check_open_firewall, blueteam_check_ssh_authorized_keys, blueteam_check_updates,
  blueteam_fail2ban_status, blueteam_fail2ban_jail_status, blueteam_fail2ban_unban,
  blueteam_capture_traffic.
- Domain/asset: blueteam_whois_lookup, blueteam_crtsh_lookup, blueteam_asset_context.
- Case/IOC/history: blueteam_case_create, blueteam_case_add_iocs, blueteam_case_add_verdict,
  blueteam_case_list, blueteam_case_get, blueteam_extract_iocs, blueteam_ioc_lifecycle,
  blueteam_investigate_ip, blueteam_playbook_run, blueteam_investigation_history,
  blueteam_investigation_summary, blueteam_false_positive_tracker.
- Geo: blueteam_wazuh_geo_distribution (by country).
- Forensics/scanning/other: blueteam_check_webshell, blueteam_semantic_search,
  blueteam_threat_hunt, blueteam_stix_analyze, blueteam_prompt_route.
- AI/LLM attack detection: blueteam_ai_bot_recon (AI-agent user-agents probing exploit paths).
- Sangfor blocklist: sangfor_blocklist_check(ip=<ip>) for a single IP;
  sangfor_blocklist_list(limit=…, date_start="YYYY-MM-DD HH:MM:SS", date_end=…) for the list —
  no ``since`` / ``offset`` params (use date_start/date_end).

—— FORMAT MARKDOWN: compose the report from steps 1–10 (ringkasan → subdomain → IOC →
   threat intel → 3-Sum → attack graph → LangGraph → email → MITRE → geo).

—— FORMAT DOCX (officecli): blueteam_export_report(format="docx", title="<...>",
   path="/var/log/blue-team-mcp/exports/laporan_24jam_<date>.docx", docx_sections=[...])

—— FORENSIC EXPORT (HUMAN ONLY): blueteam_wazuh_export(since="24h", bypass_redaction=true,
   forensic_token="<BLUETEAM_FORENSIC_TOKEN>")
   → streams to /var/log/blue-team-mcp/exports/export_<timestamp>.jsonl (filename auto-generated;
     NO ``path`` parameter). WITHOUT ``bypass_redaction=true`` the export is protect_victim-masked
     (subdomains stay masked). Analyst reads the file on the server (cat/jq); the LLM assists only
     with REDACTED analysis.

Anforderungen

  • Python 3.11+

  • mcp, httpx[http2], pydantic, networkx, langgraph, officecli-sdk

  • Siehe requirements.txt.


Entwicklung

  • Vor dem Merge: python3 check_guardrails.py --strict muss mit Exit-Code 0 beendet werden, und die Protokollierung bleibt auf stderr.

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

Maintenance

Maintainers
Response time
Release cycle
Releases (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
    A
    maintenance
    An MCP server for the Wazuh SIEM/XDR platform that enables users to query agents, security alerts, detection rules, and decoders through Claude or other MCP clients. It provides specialized tools and prompts for investigating security alerts, performing agent health checks, and generating environmental security overviews.
    28
    34
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that exposes a 60+ tool security and threat-intel stack to AI agents, enabling secret scanning, Sigma rule generation, ransomware lookup, OSINT, and deep research.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that transforms Claude Code into an autonomous DFIR analyst by providing typed, audited forensic tools for disk, memory, timeline, registry, and IOC analysis on the SANS SIFT Workstation.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    This MCP server connects Claude Desktop to a Velociraptor instance and local forensic tools. It enables remote endpoint investigation and local evidence analysis through natural language commands.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

  • MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.

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/INFOKOM-KI/Wazuh-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server