The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Intelthreadlinqs MCP listing page.
Unified Detection Engineering Platform
7,283+ detections across Sigma, Splunk ESCU, Elastic & KQL — powered by MCP
Quick Start • Workbench • 106 Tools • 22 Workflows • Agents • Config
Built on Security Detections MCP by MHaggis • Threat Intelligence by Threadlinqs

Security Detections MCP is an open-source platform that unifies 7,283+ detection rules from four major sources into a single queryable interface using the Model Context Protocol (MCP). It combines:
| Source | Rules | Format | Description |
|---|---|---|---|
| Sigma | 3,200+ | YAML | Community-driven, platform-agnostic detection rules |
| Splunk ESCU | 1,800+ | YAML/SPL | Splunk's Enterprise Security Content Update detections |
| Elastic | 1,400+ | TOML/EQL | Elastic Security detection rules |
| KQL | 880+ | KQL | Microsoft Sentinel / Defender analytics rules |
Open http://localhost:3000 in your browser.
Navigate to Settings in the workbench sidebar and configure:
Without an LLM API key, ad-hoc queries and
llm_promptworkflow steps won't function. Without a Threadlinqs key, threat intelligence workflows will skip intel steps but detection tools will work normally.
The workbench is a full-featured web dashboard built with Next.js 15, React 19, and Tailwind CSS v4. It features a terminal-inspired hacker aesthetic with JetBrains Mono font, colored status indicators, and // section headers.
The command center with real-time stats, quick-launch workflows, recent activity, and server status at a glance.

| Metric | Value |
|---|---|
| Total Tools | 106 |
| Indexed Detections | 7,283+ |
| Pre-built Workflows | 22 |
| MCP Servers | 2 |
Browse, search, and execute all 106 tools across both MCP servers. Blue indicators for security-detections, purple for threadlinqs-intel.

Click any tool to inspect its schema, parameters, and test it directly from the browser.

Filter by server to see the 32 Threadlinqs Intel tools — threat feeds, C2 tracking, simulations, and more.

22 pre-built detection engineering workflows spanning threat hunting, coverage analysis, CVE assessment, and intelligence operations.

Drag-and-drop canvas for designing custom detection pipelines. Connect tool calls, transforms, LLM analysis steps, conditionals, loops, and parallel branches.

Execute workflows against live MCP servers with real-time step-by-step progress tracking. Each step shows its type (tool_call, transform, llm_prompt), target server, and execution status.

Results include LLM-generated analysis with executive summaries, threat inventories, MITRE coverage matrices, and prioritized recommendations.

Natural language interface powered by your configured LLM. Ask questions about your detections, threats, and coverage — the system automatically selects and calls the right MCP tools, then synthesizes the results.

Example queries:

| Page | Path | Description |
|---|---|---|
| Dashboard | / | Stats, quick-launch, recent activity, server status |
| Ad-Hoc Terminal | /adhoc | Natural language queries with automatic tool orchestration |
| Tool Explorer | /tools | Browse and execute all 106 MCP tools |
| Workflow Library | /workflows | View and run 22 pre-built workflows |
| Workflow Builder | /workflows/builder | Visual drag-and-drop pipeline designer |
| Threats | /threats | Real-time threat intelligence feed |
| Coverage | /coverage | MITRE ATT&CK coverage analysis |
| History | /history | Execution history and past results |
| Settings | /config | LLM provider, API keys, MCP server status |
| Tool | Params | Description |
|---|---|---|
search | query, limit, source_type | Full-text search across all detection fields |
get_by_id | id | Get detection by unique identifier |
get_raw_yaml | id | Get original YAML/TOML source |
list_all | limit, offset | List all detections with pagination |
list_by_source | source, limit, offset | Filter by source (sigma, splunk_escu, elastic, kql) |
list_by_mitre | technique_id, limit | Filter by MITRE ATT&CK technique |
list_by_logsource | category, product, service, limit, offset | Filter by log source fields |
list_by_severity | severity, limit, offset | Filter by severity level |
list_by_cve | cve_id, limit | Find detections related to a CVE |
list_by_analytic_story | story, limit | Filter by Splunk analytic story |
list_by_process_name | process, limit, offset | Filter by process name |
list_by_detection_type | type, limit, offset | Filter by detection type |
list_by_data_source | data_source, limit, offset | Filter by data source |
list_by_mitre_tactic | tactic, limit, offset | Filter by MITRE tactic |
list_by_kql_category | category, limit, offset | Filter KQL by category |
list_by_kql_tag | tag, limit, offset | Filter KQL by tag |
list_by_kql_datasource | datasource, limit, offset | Filter KQL by data source |
list_by_name_pattern | pattern, limit, offset | Wildcard search on detection name |
| Tool | Description |
|---|---|
get_stats | Platform-wide detection statistics |
get_technique_ids | All MITRE technique IDs with detection counts |
get_technique_count | Count detections for a specific technique |
analyze_coverage | Analyze MITRE coverage with gap identification |
identify_gaps | Find techniques with missing or thin coverage |
suggest_detections | Get recommendations for new detections to build |
get_detection_list | Generate filterable detection inventory |
compare_sources | Compare coverage across Sigma, Splunk, Elastic, KQL |
count_by_source | Count detections per source type |
smart_compare | Intelligent cross-source comparison |
get_coverage_summary | Executive-level coverage summary |
get_top_gaps | Highest-priority detection gaps |
| Tool | Description |
|---|---|
search_stories | Full-text search across analytic stories |
get_story | Get detailed story information |
list_stories | List all analytic stories |
list_stories_by_category | Filter stories by category |
| Tool | Description |
|---|---|
create_entity | Create knowledge entities (threat actors, techniques, etc.) |
create_relation | Create relationships between entities with reasoning |
add_observation | Add facts with confidence scoring |
delete_entity | Remove entity and associated data |
delete_observation | Delete specific observation |
search_knowledge | Full-text search across all knowledge |
read_graph | Read entire graph or filtered subgraph |
open_entity | Full entity details with relations and observations |
log_decision | Record significant decisions with reasoning |
add_learning | Store reusable patterns and insights |
get_relevant_decisions | Find past decisions relevant to current context |
get_learnings | Get applicable learnings for current task |
| Tool | Description |
|---|---|
get_query_patterns | Common query patterns for a MITRE technique |
get_field_reference | Available fields for a Splunk data model |
get_macro_reference | Common Splunk macros and usage patterns |
find_similar_detections | Find detections similar to what you want to create |
suggest_detection_template | Generate detection template from technique + patterns |
| Tool | Description |
|---|---|
create_table | Create custom runtime tables |
insert_row | Insert data into dynamic table |
query_table | Query with filtering, sorting, pagination |
list_tables | List all tables (including pre-built analysis tables) |
drop_table | Remove table and data |
describe_table | Get schema and statistics |
Pre-built tables: gap_analyses, source_comparisons, threat_actor_profiles, detection_recommendations
| Tool | Description |
|---|---|
auto_analyze_coverage | Automatic coverage analysis across threat profiles |
auto_gap_report | Comprehensive gap report with prioritized recommendations |
auto_compare_sources | Detailed cross-source comparison with reasoning |
llm_enhanced_analysis | LLM-enhanced analysis via MCP sampling |
check_sampling_status | Check if MCP sampling is available |
| Tool | Description |
|---|---|
save_query | Cache query results with optional TTL |
get_saved_query | Retrieve cached results |
list_saved_queries | List all saved queries |
rebuild_index | Force re-index all detections |
save_template | Save reusable query templates with {{placeholders}} |
run_template | Execute template with parameter substitution |
list_templates | List all templates with usage stats |
get_template | Get template details and schema |
delete_template | Remove a template |
intelthreadlinqs-mcp@3.1.1| Tool | Description |
|---|---|
search_threats | Search threat intelligence database by keyword, CVE, MITRE technique, or actor |
get_threat | Get full threat report with TTPs, IOCs, detections, and attribution |
get_recent_threats | Get most recently published threats, ordered by creation date |
list_threat_categories | List all threat categories with counts |
get_threat_transcripts | Multi-agent intelligence analysis transcripts for a threat |
| Tool | Description |
|---|---|
get_detections | Get detection rules, filter by threat ID or type (SPL, KQL, Sigma) |
export_detection | Export detection in raw SIEM format |
get_mitre_coverage | Full MITRE ATT&CK framework coverage map |
get_mitre_technique | Detailed info for a specific MITRE ATT&CK technique |
| Tool | Description |
|---|---|
search_iocs | Search IOCs — IPs, domains, hashes, URLs, behavioral indicators |
enrich_iocs | Trigger DNS enrichment for IOCs (single, per-threat, or bulk) |
get_ioc_dns | Get passive DNS enrichment data for a specific IOC (IP or domain) |
get_enrichment_graph | DNS enrichment infrastructure graph — nodes and edges |
get_enrichment_overview | DNS enrichment overview — totals, discovered domains, cross-threat links |
| Tool | Description |
|---|---|
list_c2_beacons | Wild C2 beacons — command-and-control infrastructure intel |
get_c2_stats | C2 framework distribution, geographic spread, watermarks |
get_c2_operators | C2 operator cluster analysis — behavioral fingerprints |
get_c2_cross_correlations | Cross-intelligence correlations — IP, tag, MITRE matches |
get_c2_watermarks | Cobalt Strike watermark clusters |
get_c2_timeline | Monthly C2 framework version distribution |
get_c2_configs | Full C2 beacon configurations — sleep, jitter, user agents |
| Tool | Description |
|---|---|
get_correlations_overview | Aggregated intelligence from 7 correlation engines |
get_correlation_engine | Detailed data from a specific correlation engine |
get_cve_details | CVE lookup with severity, CVSS, and description |
get_cwe_details | CWE weakness lookup with description and mitigations |
| Tool | Description |
|---|---|
list_simulations | List attack simulation scenarios |
get_threat_simulations | Get simulation commands for a specific threat |
list_debriefs | List daily intelligence debriefs |
get_debrief | Get specific daily debrief by date |
| Tool | Description |
|---|---|
get_platform_stats | Platform statistics — threats, detections, IOCs, coverage |
get_roadmap | Platform roadmap — planned features and ideas |
get_changelog | Recent updates, features, and fixes |
The workflow engine supports 6 step types that can be chained into multi-step detection engineering pipelines:
| Step Type | Description | Example |
|---|---|---|
tool_call | Execute an MCP tool on a specified server | search on security-detections |
transform | Extract or reshape data between steps | $steps.threats[0].id |
llm_prompt | Send a prompt to the configured LLM for analysis | Coverage gap analysis |
conditional | Branch execution based on a condition | $steps.count > 0 |
loop | Iterate over an array, executing steps per item | Loop over techniques |
parallel | Execute multiple steps concurrently | Query multiple sources |
Steps can reference outputs from previous steps using $-expressions:
| Workflow | Tags | Description |
|---|---|---|
| Threat Coverage Check | threats, coverage, gaps | Get recent threats, extract MITRE techniques, identify detection gaps |
| CVE Impact Assessment | cve, threats, assessment | Assess CVE impact by finding related threats and detections |
| Daily Threat Debrief | daily, debrief, threats | Generate daily threat intelligence summary with coverage report |
| New Threat Triage | triage, threat, detections | Triage specific threat with detection check and recommendations |
| Threat Actor Profile | threat-actor, profile, techniques | Build complete threat actor profile with TTPs and coverage |
| IOC Enrichment | ioc, enrichment, threats | Enrich IOCs with threat context, technique mapping, coverage check |
| Weekly Security Report | weekly, report, summary | Comprehensive weekly report with stats and correlations |
| Workflow | Tags | Description |
|---|---|---|
| Detection Gap Analysis | gaps, coverage, mitre | Compare MITRE coverage between threat intel and detections |
| Coverage Sync | sync, coverage, mitre | Parallel sync of MITRE coverage across intel and detections |
| Detection Source Comparison | comparison, sources | Compare counts and coverage across Sigma, Splunk, Elastic, KQL |
| Detection Quality Report | quality, optimization | Find thin coverage, over-covered areas, rebalancing suggestions |
| Workflow | Tags | Description |
|---|---|---|
| C2 Framework Hunting | c2, hunting | Identify C2 frameworks and check detection coverage |
| Lateral Movement Hunt | lateral-movement, hunting | Map lateral movement techniques, build hunting plan |
| Credential Theft Audit | credentials, audit | Audit credential dumping, brute force, kerberoasting detections |
| Exfiltration Watchlist | exfiltration, dlp | Map exfiltration techniques, C2 channels, DLP blind spots |
| Workflow | Tags | Description |
|---|---|---|
| Ransomware Readiness | ransomware, readiness | Evaluate detection posture against ransomware TTPs |
| Initial Access Posture | initial-access, phishing | Assess phishing, drive-by, supply chain, valid account coverage |
| Privilege Escalation Review | privesc, escalation | Deep dive into UAC bypass, token manipulation, process injection |
| PowerShell Threat Matrix | powershell, lolbas | PowerShell attack analysis: obfuscation, AMSI bypass, LOLBins |
| Cloud Security Coverage | cloud, aws, azure, gcp | Cloud-specific attack coverage across AWS, Azure, GCP |
| Defense Evasion Deep Dive | evasion, defense | Exhaustive analysis of the largest MITRE tactic |
| Threat Simulation Readiness | simulation, purple-team | Check if detection stack catches simulated TTPs |
The agents/ directory contains a LangGraph-based autonomous pipeline for end-to-end detection generation and validation:
| Agent | Role |
|---|---|
| CTI Analyst | Analyzes threat intelligence and extracts TTPs |
| Coverage Analyzer | Maps existing detection coverage against threats |
| Detection Engineer | Generates new detection rules for gaps |
| Atomic Executor | Creates Atomic Red Team test cases |
| Splunk Validator | Validates SPL syntax and logic |
| SIEM Validator | Cross-platform SIEM validation |
| FP Analyst | Assesses false positive risk |
| QA Reviewer | Quality assurance review |
| Verifier | End-to-end verification |
| Data Dumper | Exports results to structured formats |
| PR Stager | Stages detection PRs for review |
| Attack Range Builder | Provisions test environments |
The MCP servers are configured in .cursor/mcp.json:
The workbench supports two LLM providers configured in the Settings page:
| Provider | Models | API Key Env Var |
|---|---|---|
| Anthropic | claude-sonnet-4-20250514, claude-haiku-4-20250414, claude-opus-4-20250514 | ANTHROPIC_API_KEY |
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo | OPENAI_API_KEY |
API keys can be set in three ways (in priority order):
ANTHROPIC_API_KEY, OPENAI_API_KEY, THREADLINQS_API_KEY).env.local file in the workbench/ directory| Setting | Default | Description |
|---|---|---|
max_prompt_size | 12,000 chars | Maximum prompt length sent to LLM |
per_binding_limit | 3,000 chars | Max chars per step binding in prompts |
llm_timeout | 180s | LLM request timeout |
error_policy | continue | continue or stop on step failure |
max_tokens | 4,096 | Maximum LLM response tokens |
Add the MCP servers to your Claude Code configuration:
Or add them directly to ~/.claude.json (global) or .claude/settings.json (project-level):
Add the servers to your MCP configuration file (.cursor/mcp.json, claude_desktop_config.json, etc.):
The workbench exposes a REST API for programmatic access:
| Method | Endpoint | Description |
|---|---|---|
GET | /api/mcp/servers | List MCP servers and status (auto-connects on first call) |
POST | /api/mcp/servers | Reconnect a server ({action: "reconnect", server: "name"}) |
GET | /api/mcp/tools | List all available tools |
POST | /api/mcp/{server}/{tool} | Execute a tool |
GET | /api/workflows | List all workflows |
POST | /api/workflows | Create a workflow |
GET | /api/workflows/{id} | Get workflow details |
PUT | /api/workflows/{id} | Update a workflow |
POST | /api/workflows/{id}/execute | Execute a workflow |
GET | /api/workflows/{id}/stream | Stream execution events (SSE) |
GET | /api/executions | List execution history |
DELETE | /api/executions | Clear execution history |
POST | /api/adhoc | Execute ad-hoc query (SSE stream) |
GET | /api/settings | Get settings (keys masked) |
POST | /api/settings | Update settings |
GET | /api/settings?test=true | Test LLM connection |
| Layer | Technology |
|---|---|
| MCP Server | Node.js, TypeScript, @modelcontextprotocol/sdk, better-sqlite3 |
| Workbench | Next.js 15, React 19, Tailwind CSS v4, Zustand, React Flow |
| LLM Integration | Anthropic Claude API, OpenAI API (configurable) |
| Threat Intel | Threadlinqs Intel MCP (intelthreadlinqs-mcp@3.1.1) |
| Agent Pipeline | LangGraph, TypeScript |
| Database | SQLite with FTS5 full-text search |
| Detection Formats | Sigma YAML, Splunk YAML/SPL, Elastic TOML/EQL, KQL |
git checkout -b feature/amazing-detection)git commit -m 'Add amazing detection workflow')git push origin feature/amazing-detection)Built with MCP • Open Source • Detection Engineering