Skip to content

Container

WRG-11 edited this page Aug 19, 2026 · 1 revision

Container

The MCP server ships as a container image. It speaks MCP over stdio, so there is no port to expose and no HTTP surface to secure.

ghcr.io/wrg-11/wrg-sigma-rules-mcp

Pull and run

docker pull ghcr.io/wrg-11/wrg-sigma-rules-mcp:latest
docker run --rm -i --network none ghcr.io/wrg-11/wrg-sigma-rules-mcp:latest

-i keeps stdin open, which the stdio transport needs. --rm discards the container when the session ends.

Why --network none works

The three tools — draft_rule, validate_rule, convert_rule — do their work entirely in-process: YAML parsing, schema checks, and pySigma conversion. None of them fetches anything at runtime. So the server runs with the network switched off, and that is not a degraded mode — it is the normal one.

This is worth stating plainly because it is the property that makes the image safe to run against rules you have not read yet: a malicious rule cannot make the container call home, because the container has nowhere to call.

Tags

Tag What it points at
latest the most recent published release
vX.Y.Z that specific release, immutable

Pin the version tag in anything automated. latest moves.

Verifying a session by hand

An MCP session is three steps: initialize, the notifications/initialized notification, then tools/list or tools/call. scripts/mcp_stdio_smoke.py in the repository performs exactly that handshake and prints what came back, if you would rather not drive the protocol yourself.

A useful first check is that tools/list returns three tools and that validate_rule reports pysigma_available: true. A server that answers but has no pySigma will still validate schemas — it just cannot tell you whether pySigma would accept the rule, which is usually the question you came with.

What the image does not do

  • No network access is required or used at runtime.
  • Nothing is written outside the container.
  • No telemetry, no phone-home, no usage counter.

The corpus itself is baked into the image, so the rules you convert are the rules from the release you pulled — not whatever is on main today.

Clone this wiki locally