Security Detections MCP
Search and map Sigma, Splunk, Elastic, KQL and other detection rules against MITRE ATT&CK
Query MITRE ATT&CK data and build Navigator layers for detection coverage and gap analysis
By Michael Haag (individual) TypeScript Local · stdio Security
28 popularity score ★ 18 ↓ 35/wk
Opens the app, which asks before it adds the server.
claude mcp add mitre-att-ck -- npx -y mitre-attack-mcp{
"mcpServers": {
"mitre-att-ck": {
"command": "npx",
"args": [
"-y",
"mitre-attack-mcp"
]
}
}
}{
"mcpServers": {
"mitre-att-ck": {
"command": "npx",
"args": [
"-y",
"mitre-attack-mcp"
]
}
}
}{
"servers": {
"mitre-att-ck": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mitre-attack-mcp"
]
}
}
}[mcp_servers.mitre-att-ck]
command = "npx"
args = ["-y", "mitre-attack-mcp"]gemini mcp add --scope user mitre-att-ck npx -- -y mitre-attack-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/MHaggis/mitre-attack-mcp.git
cd mitre-attack-mcp
npm install
npm run buildclaude mcp add mitre-att-ck -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'{
"mcpServers": {
"mitre-att-ck": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
]
}
}
}{
"mcpServers": {
"mitre-att-ck": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
]
}
}
}{
"servers": {
"mitre-att-ck": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"
]
}
}
}[mcp_servers.mitre-att-ck]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/index.js"]gemini mcp add --scope user mitre-att-ck node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js'ATTACK_DOMAIN |
Optional: ATT&CK domain to index: enterprise-attack (default), mobile-attack or ics-attack. |
|---|---|
CUSTOM_ATTACK_PATH |
Optional: Path to a local STIX JSON bundle to load instead of downloading from MITRE. |
MITRE ATT&CK MCP is a local server by Michael Haag that loads the MITRE ATT&CK knowledge base into a SQLite index on your machine and answers questions about it: techniques and sub-techniques, tactics, threat groups, malware and tools, mitigations and data sources. On first start it downloads the STIX bundle for the chosen domain (enterprise, mobile or ICS) from MITRE's attack-stix-data repository on GitHub, and reuses the cached copy for seven days before fetching again.
Beyond lookups, it is built for detection engineers measuring coverage. You pass in the technique IDs your detection rules cover, and it reports coverage per tactic, lists the techniques you miss against a given threat group, compares several groups at once, and produces ATT&CK Navigator layer JSON (coverage, group, gap or custom-scored layers) that you paste into the Navigator web app. Layers are returned as text; the server does not write them to disk.
The published 1.0.1 release registers 29 tools in src/index.ts, seven more than the README's tables list: list_groups, rebuild_index, get_technique_ids_by_tactic, get_technique_ids_by_platform, quick_coverage_check, batch_coverage_check and get_common_groups. The author pairs it with security-detections-mcp, which supplies the technique IDs from Sigma, Splunk and Elastic rules.
| Runtime | Node.js 18+ |
|---|
Node.js 18 or newer (npx). Internet access to raw.githubusercontent.com on first run and after the seven-day cache expires, unless CUSTOM_ATTACK_PATH points at a local STIX JSON file. It depends on better-sqlite3, a native module that npm must be able to install or build for your platform. No account or key.
Covers one ATT&CK domain per running instance, set by ATTACK_DOMAIN (enterprise-attack by default); run a second instance for mobile or ICS. Search and list tools return 50 or 100 results by default (search_techniques, search_groups, search_software: 50; list tools: 100), raised with limit. It does not read your detection rules itself: you supply the covered technique IDs. The README's ATT&CK v19 notes (Defense Evasion split into Stealth and Defense Impairment, auto-rebuild of older indexes) describe main-branch code that is not in the npm release 1.0.1.
Suits detection engineers and threat-intel analysts who want an assistant to look up ATT&CK entries, score their rule coverage against a framework or a named group, and get Navigator layers without hand-editing JSON. It runs locally, needs no sign-in and only reads public MITRE data, so it fits locked-down machines once the data is cached or supplied with CUSTOM_ATTACK_PATH. If you need the newest ATT&CK v19 tactic names, note that the npm release predates that change. Pick something else if you want it to pull coverage from a SIEM directly; pair it with security-detections-mcp for rule data.
get_techniquesearch_techniqueslist_techniqueslist_techniques_by_tacticlist_techniques_by_platformget_tacticlist_tacticsget_groupsearch_groupslist_groupsget_group_techniquesget_softwaresearch_softwareget_mitigationsget_data_sourcesgenerate_layergenerate_coverage_layergenerate_group_layergenerate_gap_layeranalyze_coveragefind_group_gapsget_all_technique_idsget_statsrebuild_indexget_technique_ids_by_tacticget_technique_ids_by_platformquick_coverage_checkbatch_coverage_checkget_common_groups