MCP tools for drafting, validating, and converting Sigma detection rules across five SIEM query formats.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Wrg Sigma Rules.
mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__draft_ruleNL description โ sigma YAML scaffold
mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__validate_ruleYAML schema + pySigma compat + best-practice linter
mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__convert_rulesigma โ Splunk/Elastic/OpenSearch/Wazuh/Kibana query
Sigma detection-rule authoring, validation and multi-backend conversion, delivered as a Model Context Protocol (MCP) server with a published rule corpus. It runs under Claude Code, Codex, Cursor and any MCP-capable client.
draft_rule turns a natural-language description into a Sigma
YAML scaffold. validate_rule checks a rule against pySigma plus a
best-practice linter. convert_rule compiles a rule to a Splunk, Elastic,
OpenSearch, Wazuh or Kibana query.sigma-rule-writer, sigma-rule-reviewer and
threat-coverage-gap-analyzer.status:
(see Rule status).convert_rule reports the
52
correlation rules in the corpus as a capability gap and names the backends that
can convert them.The plugin is installed directly from this repository; it is not yet listed in a plugin marketplace.
The server is a single stdio MCP process (server.py). Each client points at it
in its own way.
requirements.txt is not optional: validate_rule needs pySigma, convert_rule
needs the backend packages, and the pipeline packages drive the logsource
mapping. The repo ships .claude-plugin/plugin.json and .mcp.json (which wires
server.py through ${CLAUDE_PLUGIN_ROOT}). Point your Claude Code plugin
configuration at this checkout per
the plugin docs.
The Codex plugin carries a self-contained runtime snapshot of the server and
corpus, so its installed cache does not rely on checkout-relative paths. Keep it
current with python scripts/sync_codex_runtime.py; CI fails if it drifts.
Cursor speaks MCP directly, so the same server works with no plugin manifest. Add
it to your project .cursor/mcp.json (or the global ~/.cursor/mcp.json):
Replace the path with your clone, then reload Cursor's MCP servers.
server.py is a standard stdio MCP server, so Cline, Continue, Zed and Windsurf
load it with the same mcpServers block shown for Cursor. MCP is model-agnostic:
the client's backend model does not change what the server exposes.
Validate and convert a corpus rule end to end, from the repo root:
Full captured output (validate JSON, Splunk SPL, Elasticsearch Lucene) is in
DEMO.md.
Every rule lives under resources/examples/<tactic>/ and is one of two kinds:
template_*: a canonical detection shape to adapt to your own environment.observed_*: derived from a specific, cited incident. CONTRIBUTING.md sets
the bar these must clear.resources/examples/INDEX.json enumerates every
rule, and the wrg-sigma://coverage/mitre-attack-matrix resource computes the
technique-by-tactic breakdown from the corpus at read time. Some rules add a
prose write-up under docs/detection-notes/.
This corpus uses Sigma's status: field literally rather than aspirationally:
status: | Count | Meaning here |
|---|---|---|
test | 82 | Derived from a real, cited incident (the observed_* rules) |
experimental | 214 | Canonical detection shapes, many self-described as synthetic exemplars |
stable | 0 | Unused, deliberately |
stable in the Sigma specification means a rule runs in production and is well
tested. Nothing here has earned that, so nothing claims it. Treat every rule as a
starting point to bind to your own logsource and tune; each rule's
falsepositives: block names the benign activity to expect first.
wrg-sigma://patterns/canonical-5 and wrg-sigma://patterns/canonical-5/{01..05}:
canonical detection-pattern definitions.wrg-sigma://coverage/mitre-attack-matrix: an ATT&CK coverage rollup computed
from the corpus at read time.python readme_stamp.py --check
fails CI on any drift, so the numbers here cannot silently go stale.Contributions are welcome. Add YAML under resources/examples/<tactic>/ with an
ATT&CK mapping in tags: (for example attack.t1071), the observed_* or
template_* prefix, and a passing validate_rule. Corpus CI rejects broad empty
matches, unsafe regex, unroutable logsource blocks, draft scaffolding and
deprecated aggregation-pipe syntax.
Read CONTRIBUTING.md before submitting an observed_* rule.
It sets the sourcing bar (attribution, platform and manifestation, each matched
against the cited source) and documents the three upstream rejections that
produced it.
MIT; see LICENSE. One license covers both the tooling (server.py,
tools/, scripts/) and the corpus (resources/). That is a deliberate choice
for frictionless reuse by SOC teams adapting a rule into their own tooling, over
the attribution-preserving split that some Sigma corpora use.
Runtime dependencies bring in LGPL-2.1/3.0 packages (pySigma and its backends)
alongside MIT, BSD and Apache ones. Importing an LGPL library does not make this
repo's own code LGPL. The dependency-licenses CI job carries the re-derivable
list.
Full index at github.com/WRG-11.
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/wrg-11-wrg-sigma-rules)<a href="https://allmcps.com/mcp/wrg-11-wrg-sigma-rules"><img src="https://allmcps.com/api/badge/wrg-11-wrg-sigma-rules?style=directory" alt="Wrg Sigma Rules on AllMCPs" /></a>