Harris HawkEye MCP
Harris HawkEye MCP
Detection Engineering Command Center for Claude Code
A Model Context Protocol (MCP) server purpose-built for detection engineers. Indexes 12,800+ detection rules from five major detection ecosystems (Sigma, KQL/Sentinel, Splunk ESCU, Elastic, Sublime), enriches them with MITRE ATT&CK v18.1, Atomic Red Team, LOLBAS, LOLFarm (lolol.farm), and 15+ threat intelligence sources — then exposes everything through 122 tools and 8 Claude Code skills that implement the full detection engineering lifecycle.
The primary output is kill-chain correlated queries (KQL + SPL + Sigma), not isolated atomic rules.
What It Does
Capability | Description |
Multi-source detection search | Query 12,810 rules (KQL 5,051 · Sigma 3,108 · Splunk ESCU 1,966 · Elastic 1,689 · Sublime 996) from one interface |
MITRE ATT&CK enrichment | 835 techniques, 187 groups, 787 software, 52 campaigns, 20,048 relationships — all local, all queryable |
Atomic Red Team validation | 1,770 adversary simulation tests cross-referenced against your detection rules for coverage gaps |
LOLFarm intelligence | Aggregated Living-Off-The-Land data from 7 sources: LOLDrivers, HijackLibs, LOLRMM, LoFP, WADComs, LOTS, MalAPI |
LOLBAS hard gate | Every binary-scoped rule must enumerate all known abuse patterns before a single condition is written |
Threat intelligence | 15+ sources: abuse.ch (URLhaus, ThreatFox, MalwareBazaar), AlienVault OTX, CISA/FBI/NSA/NCSC-UK/CERT-EU, Malpedia, NVD/EPSS, ANY.RUN |
CVE-to-detection | Input a CVE ID → get KQL, SPL, and Sigma rules with EPSS scores and KEV status |
Coverage engine | 138 telemetry mappings, 4-state classification (COVERED/DETECTABLE/PARTIAL/GAP), Pareto-optimal log source recommendations |
Knowledge graph | Persist decisions, learnings, and entity relationships across sessions — tribal knowledge that compounds |
Kill-chain synthesis | Stitch atomic rules into correlated multi-phase queries that fire on full attack sequences, not individual events |
Architecture
┌─────────────────────────────────────────┐
│ Claude Code + 8 Skills │
│ advisory-ingest / threat-report-parser │
│ → data-source-mapper → detect-engineer │
│ → detection-validator → killchain-synth │
│ → coverage-reporter → navigator-layer-gen│
└──────────────────┬──────────────────────┘
│ MCP Protocol
┌──────────────────▼──────────────────────┐
│ Harris HawkEye MCP Server │
│ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ │
│ │Detection│ │ Threat │ │ MITRE │ │
│ │Tools(15)│ │ Intel(59)│ │ ATT&CK(11)│ │
│ └─────────┘ └──────────┘ └───────────┘ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ │
│ │ART (6) │ │Coverage │ │LOLFarm(12)│ │
│ │ │ │Engine (6)│ │ │ │
│ └─────────┘ └──────────┘ └───────────┘ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ │
│ │Knowledge│ │Sublime │ │ Report │ │
│ │Graph (8)│ │Security(4)│ │Generator(1)│ │
│ └─────────┘ └──────────┘ └───────────┘ │
└──────────────────┬──────────────────────┘
│
┌──────────────────▼──────────────────────┐
│ SQLite (sql.js WASM) — 97 MB DB │
│ │
│ 12,810 detections │ 835 techniques │
│ 1,770 ART tests │ 138 telemetry maps │
│ LOLFarm 7 tables │ Knowledge graph │
└─────────────────────────────────────────┘Quick Start
Prerequisites
Node.js 18+
Claude Desktop or Claude Code
Installation
git clone https://github.com/legionultramax/Detection-Engineering-MCP.git
cd Detection-Engineering-MCP
# Install dependencies
npm install
# Build
npm run buildDownload Detection Rules
Clone the four rule repositories into the rules/ directory:
# SigmaHQ
git clone https://github.com/SigmaHQ/sigma.git rules/sigma
# Splunk Security Content (ESCU)
git clone https://github.com/splunk/security_content.git rules/splunk
# Elastic Detection Rules
git clone https://github.com/elastic/detection-rules.git rules/elastic
# Azure Sentinel (KQL)
git clone https://github.com/Azure/Azure-Sentinel.git rules/sentinelConfigure Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"harris-hawkeye": {
"command": "node",
"args": ["<path-to>/security-detections-mcp/dist/index.js"],
"env": {
"SIGMA_PATHS": "<path-to>/security-detections-mcp/rules/sigma/rules",
"SPLUNK_PATHS": "<path-to>/security-detections-mcp/rules/splunk/detections",
"ELASTIC_PATHS": "<path-to>/security-detections-mcp/rules/elastic/rules",
"KQL_PATHS": "<path-to>/security-detections-mcp/rules/sentinel/Hunting Queries",
"STORY_PATHS": "<path-to>/security-detections-mcp/rules/splunk/stories"
}
}
}
}Restart Claude Desktop after configuration. First launch auto-indexes all rules into SQLite (~2 minutes).
Environment Variables
Variable | Description | Required |
| Comma-separated paths to Sigma rule directories | Yes |
| Comma-separated paths to Splunk ESCU detection directories | Yes |
| Comma-separated paths to Elastic rule directories | Yes |
| Comma-separated paths to Sentinel KQL directories (auto-discovers sibling | Yes |
| Path to Splunk analytic stories | Optional |
| AlienVault OTX API key (free) | For OTX tools |
| Malpedia API key (free) | For full Malpedia access |
Detection Engineering Skills
Eight Claude Code skills implement the full detection engineering lifecycle. Each skill is a self-contained workflow that calls MCP tools — nothing is hallucinated from training data.
Advisory / Threat Report / Vendor Blog / DFIR Writeup
│
├──────────────────────────┐
▼ ▼
┌────────────────────┐ ┌────────────────────┐
│ advisory-ingest │ │threat-report-parser│ Parse unstructured intel →
│ CISA/vendor → gap │ │ scored rules out │ scored deployment-ready rules
└────────────────────┘ └────────────────────┘
│ │
└──────────────┬───────────┘
▼
┌────────────────────┐
│ data-source-mapper│ Confirm: do we have the telemetry to detect this?
└────────────────────┘
│
▼
┌────────────────────┐
│ detect-engineer │ Build: Sigma + KQL + SPL rules grounded in ART + LOLBAS + LOLFarm
└────────────────────┘
│
▼
┌────────────────────┐
│detection-validator │ Prove: ART-mapped test runbook, DEPLOY-READY verdict
└────────────────────┘
│
▼
┌────────────────────┐
│ killchain-synth │ Correlate: single multi-phase query across all phases
└────────────────────┘
│
▼
┌────────────────────┐
│ coverage-reporter │ Document: hunt cards + optional Word (.docx) export
└────────────────────┘
│
▼
┌────────────────────┐
│navigator-layer-gen │ Visualize: ATT&CK Navigator JSON layers
└────────────────────┘
│
▼
Production SIEMSkill | What It Does | Trigger |
detect-engineer | Writes production-ready Sigma, KQL, SPL, ESCU YAML, or Elastic TOML rules. LOLBAS is a hard gate — every binary-scoped rule must enumerate all known abuse patterns first. LOLFarm enriches with driver, DLL hijack, RMM, and FP intelligence. 6-dimension validation (Evasion, Fields, Paths, FP, Syntax, LOLFarm). | "Write a detection for X", "Sigma for T1003", "my rule FPs too much" |
advisory-ingest | Parses CISA advisories, vendor reports, DFIR writeups. Extracts T-IDs, CVEs, IOCs, validates against local data, produces prioritized gap table. | "New CISA advisory dropped", "check this report" |
threat-report-parser | Turns unstructured intel (vendor blogs, Red Team writeups, malware analysis, conference talks) into scored, deployment-ready Sigma/KQL/SPL detection rules. Deeper than advisory-ingest — fully operationalizes a report. | "Parse this Mandiant blog into rules", "operationalize this Red Team writeup" |
killchain-synth | Stitches atomic rules into correlated multi-phase queries (KQL let-join, SPL phase-scored, Sigma correlation). Only fires when the full attack sequence is observed on the same host/identity within a time window. | "Correlate these techniques into one alert" |
detection-validator | Maps detection conditions to ART test artifacts, scores field-level coverage, generates executable test runbooks. Issues DEPLOY-READY / DEPLOY-WITH-CAUTION / DO NOT DEPLOY verdict. | "Will this rule actually fire?" |
data-source-mapper | Maps techniques to required MITRE data sources, identifies collection gaps, outputs exact Sysmon XML / audit policy / GPO configuration. | "Do I have the logs needed for T1003?" |
coverage-reporter | Produces structured hunt cards with confidence and priority scores, optionally exports as Word document. | "Generate hunt report", "export to Word" |
navigator-layer-gen | Generates ATT&CK Navigator-compatible JSON layers: coverage heatmaps, actor mapping, gap analysis overlays. | "Generate a navigator layer" |
Data Indexed
Detection Rules — 12,810
Source | Rules | Format |
Azure Sentinel (KQL) | 5,051 | KQL/YAML |
SigmaHQ | 3,108 | YAML |
Splunk ESCU | 1,966 | YAML |
Elastic | 1,689 | TOML/YAML |
Sublime Security | 996 | YAML |
MITRE technique coverage: 602 of 835 techniques (72.1%) have at least one detection rule mapped.
MITRE ATT&CK v18.1
Entity | Count |
Techniques | 835 |
Threat Groups | 187 |
Malware | 696 |
Tools | 91 |
Campaigns | 52 |
Mitigations | 268 |
Data Sources | 38 |
Data Components | 109 |
Relationships | 20,048 |
Atomic Red Team — 1,770 Tests
Platform | Tests |
Windows | 1,205 |
Linux | 384 |
macOS | 245 |
Cloud (AWS/Azure/GCP) | 42 |
Container | 19 |
LOLFarm — 7 Sources
Aggregated Living-Off-The-Land intelligence from lolol.farm:
Source | What It Covers | Seed Entries |
LOLDrivers | Vulnerable kernel drivers used in BYOVD attacks (hashes, CVEs, actor attribution) | 10 |
HijackLibs | DLL hijacking opportunities (phantom, sideloading, search order, env variable) | 10 |
LOLRMM | Legitimate RMM tools abused for C2/persistence (executables, network artifacts, registry) | 10 |
LoFP | Known false positives mapped to ATT&CK techniques with suppression logic | 20 |
WADComs | Offensive AD tools and commands (Impacket, BloodHound, Rubeus, Mimikatz, CrackMapExec) | 10 |
LOTS | Legitimate domains/services abused for data exfil and C2 (pastebin, Discord, ngrok, etc.) | 14 |
MalAPI | Windows API calls commonly used by malware (process injection, credential access, MBR wipe) | 12 |
Seed data provides instant offline availability for the most critical entries. Full databases are expandable via GitHub sync.
Coverage Engine — 138 Telemetry Mappings
Pre-seeded mappings that bridge EventID → MITRE Data Source/Component across 19 event sources: Windows Security, Sysmon, PowerShell, MDE, CrowdStrike, Linux auditd, AWS CloudTrail, Azure AD, and more.
Tools
Detection Tools (15)
Tool | Description |
| Full-text search across all enriched fields (FTS5) |
| Get full rule details by ID |
| List detections by ATT&CK technique ID (includes logsource, data_sources, process_names) |
| Filter by severity level |
| Filter by ATT&CK tactic |
| Find rules referencing a specific executable |
| Find rules tagged with a CVE |
| Filter Sigma rules by logsource (product/category/service) |
| Find rules by required data source |
| Detection statistics by source and severity |
| ATT&CK technique coverage analysis |
| Detection gaps for threat profiles |
| Generate KQL/SPL/Sigma from CVE ID |
| Convert YARA to Sigma (draft — always refine) |
| Convert Sigma to KQL for Sentinel |
MITRE ATT&CK Tools (11)
Tool | Description |
| APT details, aliases, techniques |
| Search groups by keyword |
| Malware/tool details with technique mapping |
| Search software by keyword |
| Full technique details, detection notes, data sources |
| Search techniques by keyword |
| All groups using a specific technique |
| All software using a specific technique |
| Defensive controls per technique |
| Required data sources for detection |
| All MITRE data sources with components |
Atomic Red Team Tools (6)
Tool | Description |
| All ART tests for a technique (with platform filter) |
| Full-text search across 1,770+ tests |
| Full test details by GUID |
| Cross-reference ART tests against detection rules |
| Index statistics |
| Batch coverage validation across technique sets |
LOLFarm Tools (12)
Tool | Description |
| Look up a vulnerable driver by name or SHA256 hash |
| Look up DLL hijacking opportunities by DLL or executable name |
| Look up RMM tool abuse details (executables, network artifacts, registry) |
| Get known false positives for a technique ID with suppression logic |
| Look up offensive AD tool/command details |
| Check if a domain is a known legitimate service abused for C2/exfil |
| Look up a Windows API for malware usage context |
| Unified cross-source search across all 7 LOLFarm databases |
| List all indexed vulnerable drivers |
| List all indexed RMM tools |
| List all indexed DLL hijack opportunities |
| Key tool — get all LOLFarm intelligence for a technique ID (queries all 7 tables, returns only sources with data) |
Threat Intelligence Tools (59)
Category | Tools |
Core Intel (7) |
|
abuse.ch (12) |
|
AlienVault OTX (7) |
|
Government/CERT (10) |
|
Correlation Engine (4) |
|
Vulnerability Intel (10) |
|
Malware Research (9) |
|
Coverage Engine Tools (6)
Tool | Description |
| Parse raw logs or structured input, map to MITRE data sources |
| Full ATT&CK matrix assessment — classifies every technique into 4 states |
| Detailed gap report with missing data sources and remediation |
| Compare before/after sessions — shows improvement |
| Pareto-optimal log source recommendations ranked by gap closure |
| View all 138 telemetry mappings and session history |
Knowledge Graph Tools (8)
Tool | Description |
| Create entity in knowledge graph |
| Search entities by name/description |
| Create relation between entities |
| Log analytical decision with reasoning |
| Retrieve logged decisions |
| Store insight/learning from analysis |
| Get learnings by topic |
| Summary of knowledge graph contents |
Sublime Security & Report Generator
Tool | Description |
| Search Sublime Security email detection rules |
| Get full Sublime rule details |
| Sublime index statistics |
| Sync Sublime rules from GitHub |
| Generate threat hunt report (Word .docx export) |
Prompts (6)
Prompt | Description | Parameters |
| Analyze a MITRE ATT&CK technique |
|
| Generate threat hunting plan |
|
| Generate detection coverage report |
|
| Investigate an indicator of compromise |
|
| Review and analyze a detection rule |
|
| Convert YARA rule to Sigma |
|
Example Workflows
Write a Detection Rule
"Write a Sigma rule for LSASS credential dumping"
"KQL detection for T1059.001 PowerShell abuse — MDE, no Sysmon"
"ESCU YAML for scheduled task persistence"
"Elastic TOML rule for lateral movement via WMI"
"My rule FPs on SCCM — help me tune it"Hunt an APT
"Full profile on APT29 — what's my coverage?"
"Generate detections for all Volt Typhoon techniques I'm missing"
"Kill-chain correlation query for Lazarus Group attack sequence"Respond to an Advisory
"Parse this CISA advisory and show me coverage gaps"
"Do I have the telemetry to detect these techniques?"
"Generate a navigator layer showing my gaps vs this threat"Assess Coverage
"Ingest this Windows Event 4688 log and map it to MITRE"
"What log sources should I enable to close the most gaps?"
"Compare my coverage before and after adding Sysmon"Investigate IOCs
"Look up this hash in MalwareBazaar and ThreatFox"
"Pivot on this IP across OTX"
"Is this domain on any MISP warninglist?"Project Structure
security-detections-mcp/
├── src/
│ ├── index.ts # Entry point — schema init, auto-indexing, server start
│ ├── server.ts # MCP server setup
│ ├── indexer.ts # Detection rule indexer (enriched fields, FTS5)
│ ├── db/
│ │ ├── connection.ts # SQLite (sql.js WASM) + FTS5 + migrations
│ │ ├── threat-intel.ts # Threat intel schema (LOLBAS, CISA KEV)
│ │ ├── knowledge.ts # Knowledge graph schema
│ │ ├── mitre-attack.ts # MITRE ATT&CK STIX v18.1 parser
│ │ ├── atomic-red-team.ts # ART repo sync + YAML indexer
│ │ ├── coverage-engine.ts # Coverage engine + 138 telemetry mappings
│ │ ├── lolfarm.ts # LOLFarm 7-table schema + query functions
│ │ └── sublime-rules.ts # Sublime Security rules
│ ├── handlers/
│ │ ├── tools.ts # Tool dispatch handler
│ │ ├── prompts.ts # Prompt definitions (6)
│ │ └── resources.ts # Resource handler (stats, coverage, LOLFarm)
│ └── tools/
│ ├── registry.ts # Tool registry + defineTool pattern
│ ├── index.ts # Tool aggregation — registerAllTools()
│ ├── detections/ # 15 detection search/analysis tools
│ ├── threat-intel/ # 59 TI tools
│ │ ├── index.ts # Core: abuse.ch, OTX, LOLBAS, IOC analysis
│ │ ├── government/ # CISA, FBI, NSA, NCSC-UK, CERT-EU, ANSSI, JPCERT, ACSC, CCCS
│ │ ├── correlation/ # Multi-source correlation engine
│ │ ├── exploit/ # NVD, EPSS, Exploit-DB, Rapid7, Qualys, Tenable, ZDI
│ │ └── community/ # Malpedia, ANY.RUN, SANS ISC, BleepingComputer
│ ├── mitre-attack/ # 11 MITRE ATT&CK query tools
│ ├── atomic-red-team/ # 6 ART validation tools
│ ├── coverage-engine/ # 6 coverage assessment tools
│ │ ├── parser.ts # Log parser (XML, JSON, auditd, CEF, k=v)
│ │ ├── mapper.ts # Telemetry → MITRE data component mapper
│ │ └── assessor.ts # Graph traversal + 4-state classifier
│ ├── lolfarm/ # 12 LOLFarm tools
│ │ ├── index.ts # Tool definitions + lazy seed loading
│ │ └── seed.ts # Curated seed data (86 entries across 7 sources)
│ ├── knowledge/ # 8 knowledge graph tools
│ ├── sublime/ # Sublime Security rule tools
│ └── report-generator/ # Hunt report generator (Word .docx)
├── rules/ # Downloaded detection rule repos
│ ├── sigma/ # SigmaHQ
│ ├── splunk/ # Splunk ESCU + analytic stories
│ ├── elastic/ # Elastic detection rules + MITRE STIX bundle
│ └── sentinel/ # Azure Sentinel KQL
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
~/.claude/skills/ # Claude Code skills (per-user, not in repo)
├── detect-engineer/
│ ├── SKILL.md # 7-step pipeline, 5-platform output, LOLBAS gate, LOLFarm validation
│ └── references/ # sigma-template, fp-*, kql-patterns, spl-patterns, validation-rubric, etc.
├── advisory-ingest/
├── threat-report-parser/
├── killchain-synth/
├── detection-validator/
├── data-source-mapper/
├── coverage-reporter/
└── navigator-layer-gen/How the detect-engineer Skill Works
The detect-engineer skill is the core rule authoring pipeline. When you ask "write a detection for X", it runs a 7-step process:
Classify — New rule, fix/tune, convert, or validate? Which platform(s)?
Coverage assessment — Parallel queries:
list_by_mitre,search_entities,get_learnings,get_lolfarm_context, andlookup_lolbas(for binaries)Coverage gate — Score existing coverage. ≥95% = refine path. <95% = build path. Zero = full build.
Author — Behavioral invariant analysis (what's hard for the attacker to change?), narrowing test (would an admin trigger this?), evasion test (can the attacker bypass by renaming one thing?). FP filters sourced per-logsource from reference files.
Validate — 6-dimension scoring: Evasion, Fields, Paths, FP, Syntax, LOLFarm. Composite < 3.0 triggers iteration.
Output — Structured format with coverage score, validation matrix, FP documentation, data requirements, and gaps.
Persist — Entities, learnings, and decisions saved to knowledge graph for future sessions.
Platform disambiguation: "Splunk"/"SPL" → bare SPL query. "ESCU"/"security_content" → full YAML with tstats + RBA + tests. "Elastic TOML" → .toml rule file. "KQL"/"Sentinel" → bare KQL. Default = Sigma only.
Technology
Runtime: Node.js 18+ with TypeScript (ES modules)
Database: sql.js — SQLite compiled to WebAssembly, runs in-process with no native dependencies
Protocol: Model Context Protocol (MCP) over stdio
Indexing: Auto-indexes on first startup, incremental re-index on source changes
Storage:
~/.cache/security-detections-mcp/detections.db(~97 MB)
License
MIT
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/legionultramax/Detection-Engineering-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server