mcp-hayabusa
mcp-hayabusa is an MCP server that wraps the Hayabusa Windows event log forensics tool, enabling MCP clients to run detection scans over .evtx files and explore detection rules.
scan_evtx — Run Hayabusa detection scans on a single .evtx file or a directory of .evtx files.
Output format: CSV, JSON, or JSONL
Filter rules by keyword (e.g.,
"mimikatz","lateral")Set a minimum alert level (
informational,low,medium,high,critical)Toggle UTC timestamps and optional persistent output to disk
Choose a summary view (counts, top rules, condensed preview) or full view (all fields)
get_hayabusa_rules — List available Hayabusa/Sigma detection rules, optionally filtered by keyword.
Returns metadata: path, ID, title, level, status, description, author, tags, and logsource
Supports custom rule directories or bundled defaults
hayabusa://attack — Static resource listing every MITRE ATT&CK technique ID present in the rule set with rule counts.
hayabusa://attack/{technique_id} — Template resource showing all rules tagged with a specific ATT&CK technique ID (case-insensitive).
hayabusa://rules/{path} — Template resource returning the raw Sigma rule YAML for a given rule file path.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-hayabusaScan system.evtx for high-severity alerts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-hayabusa
An MCP (Model Context Protocol) server that wraps Hayabusa,
the Windows event log fast forensics timeline and threat-hunting tool, so an
MCP client (e.g. Claude Code) can run detection scans over .evtx files.
Prerequisites
Python 3.10+
The
hayabusabinary, downloaded from the Hayabusa releases page (or built from source), available onPATH, or pointed to via theHAYABUSA_BINenvironment variable.scripts/download_hayabusa.pywill fetch the latest release for your platform and extract it to./hayabusa/:python scripts/download_hayabusa.py # then either add ./hayabusa to PATH, or: export HAYABUSA_BIN=./hayabusa/hayabusa # ./hayabusa/hayabusa.exe on WindowsPass
--version vX.Y.Zto pin a release,--muslfor a musl build on Linux, or--forceto re-download.
Related MCP server: mcp-hayabusa
Install
pip install -e .Run
mcp-hayabusaOr point an MCP client's config at the installed console script
(mcp-hayabusa) or at python -m mcp_hayabusa.server.
Configuration
Env var | Purpose |
| Full path (or PATH-resolvable name) of the hayabusa binary to invoke. |
Copy .env.example to .env and fill it in as a reference for what to set. Nothing auto-loads
.env: export the variables yourself (or use a tool like direnv) before running mcp-hayabusa/
mcp dev/mcp run, or, if installing into the Claude Desktop app, pass it straight to
mcp install src/mcp_hayabusa/server.py --env-file .env.
Tools
scan_evtx
Runs hayabusa csv-timeline or hayabusa json-timeline against a single
.evtx file or a directory of .evtx files, always non-interactively.
Parameters: target, is_file, output_format (csv/json/jsonl),
rules_dir, min_level, utc, output_path.
Returns the command that was run, exit code, a preview of up to 20 result
records, the total record count, and truncated stdout/stderr. Pass
output_path explicitly to keep the full result file on disk; otherwise a
temporary file is used and removed after the preview is extracted.
get_hayabusa_rules
Lists Hayabusa/Sigma detection rules, optionally filtered by keyword — useful
for browsing/searching what's available before running scan_evtx with a
rule_filter, since both use the same case-insensitive text match.
Parameters: keyword, rules_dir, max_results.
Returns total_matched (true count) and up to max_results rules, each with
path, id, title, level, status, description, author, tags, and
logsource.
Resources
A read-only, browsable detection knowledge base — Sigma rules and their ATT&CK mappings — for a client to navigate directly instead of only through tool calls.
URI | Kind | Description |
| static | Every ATT&CK technique ID present in the loaded rule set, with a rule count each. |
| template | Rules tagged with one technique, e.g. |
| template | Raw Sigma rule YAML (including its |
path in hayabusa://rules/{path} is a rule's path field from
get_hayabusa_rules or an ATT&CK resource, with every / percent-encoded
(%2F) — MCP resource URI templates only match a single path segment.
Available Tools
2 toolsget_hayabusa_rulesA
List available Hayabusa/Sigma detection rules, optionally filtered by keyword.
Useful for understanding what rules exist before running scan_evtx — e.g. call with keyword="mimikatz" to see which rules would be loaded by scan_evtx(rule_filter="mimikatz"), since both use the same case-insensitive match against rule file text.
Args: keyword: Only return rules whose rule file text contains this string (case-insensitive), e.g. "lateral" or "mimikatz". Omit to list all rules (subject to max_results). rules_dir: Optional path to a custom Sigma/Hayabusa rules directory. Defaults to Hayabusa's bundled ./rules. max_results: Cap on the number of rules returned (default 50). total_matched in the response is always the true match count.
Returns: A dict with total_matched (true count of matching rule files) and rules: a list of {path, id, title, level, status, description, author, tags, logsource}, capped at max_results.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | ||
| rules_dir | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses case-insensitive matching, default max_results (50), and the meaning of total_matched. It does not mention read-only nature or auth requirements, but for a listing tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: purpose sentence, usage paragraph, then bulleted parameters (though not in markdown), and return format. Every sentence adds value with no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: inputs, outputs, relationship to sibling, example usage, default behaviors. Given 3 optional params and no output schema, the description is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description compensates fully: explains keyword filtering (case-insensitive, examples), rules_dir default path, and max_results cap with response field clarification. Each parameter gets detailed, contextualized meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List available Hayabusa/Sigma detection rules, optionally filtered by keyword.' It identifies the specific verb (list) and resource (rules), and distinguishes from sibling tool scan_evtx by explaining the relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it's 'useful for understanding what rules exist before running scan_evtx' and provides an example with keyword='mimikatz'. It could be improved by mentioning when not to use (e.g., for scanning logs), but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_evtxA
Run a Hayabusa detection scan over Windows Event Log (.evtx) data.
Wraps hayabusa csv-timeline / hayabusa json-timeline, always run
non-interactively (no rule-config wizard, no launch banner).
Args:
target: Path to a single .evtx file (set is_file=True) or a
directory containing .evtx files.
is_file: True if target is a single .evtx file rather than a
directory.
output_format: "csv" (uses csv-timeline), or "json"/"jsonl"
(both use json-timeline; jsonl adds Hayabusa's -L flag). This
controls Hayabusa's own output format, not the shape of the
dict returned by this tool — see result_detail for that.
rules_dir: Optional path to a custom Sigma/Hayabusa rules
directory or file (passed as -r). Defaults to Hayabusa's
bundled ./rules. Ignored if rule_filter is set (see below).
rule_filter: Only run rules whose rule file text contains this
string (case-insensitive), e.g. "lateral" or "mimikatz".
Hayabusa has no native free-text rule filter, so this copies
matching rule files from rules_dir (or Hayabusa's default
./rules) into a temporary rules directory and scans with just
those loaded.
min_level: Optional minimum alert level to load: "informational",
"low", "medium", "high", or "critical" (passed as -m).
utc: Output timestamps in UTC instead of local time (-U).
output_path: Where to write the full result file. If omitted, a
temporary file is used and deleted after a preview is
extracted, so the full result set is only kept on disk when
you pass this explicitly.
result_detail: "summary" (default) returns counts by level, the
top matching rules, and a condensed preview (key fields only);
stdout/stderr tails are only included on non-zero exit. "full"
returns the complete record preview with all fields plus
stdout/stderr tails, as before.
max_results: Cap on the number of preview records returned
(default 20). Does not affect record_count, which is always
the true total.
Returns: A dict shaped per result_detail; see above.
| Name | Required | Description | Default |
|---|---|---|---|
| utc | No | ||
| target | Yes | ||
| is_file | No | ||
| min_level | No | ||
| rules_dir | No | ||
| max_results | No | ||
| output_path | No | ||
| rule_filter | No | ||
| output_format | No | json | |
| result_detail | No | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses key behaviors: wraps hayabusa commands, runs non-interactively, temporary file handling for output_path, rule_filter copying, and result_detail controls. Could add error handling or permissions but is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose first, then parameter details, then return. Each sentence adds value, though slightly lengthy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (10 params, no annotations, no output schema), description covers parameters, return shape, and behavioral nuances. Lacks error cases or performance notes but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description fully explains all 10 parameters with context, defaults, and relationships to underlying tool. Adds meaning beyond field names, e.g., rule_filter copies files, result_detail controls preview.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it runs a Hayabusa detection scan on .evtx files, distinguishing it from sibling tool 'get_hayabusa_rules' which retrieves rules. Verb 'scan' and resource 'Windows Event Log (.evtx) data' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when to use the tool (scanning evtx files) and contrasts with sibling tool. Provides context on interactive vs non-interactive, default behaviors, and output handling. Lacks explicit when-not-to-use or alternative tools beyond the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
get_hayabusa_rules - First observed
scan_evtx
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one lists available rules, the other performs a scan. There is no overlap or ambiguity.
Both tools use consistent snake_case naming with a verb_noun pattern (get_hayabusa_rules, scan_evtx), which is predictable and clear.
Two tools is slightly on the low side, but it aligns with the focused scope of the MCP server (rule listing and scanning). It is reasonable for a targeted purpose.
The core workflow of listing rules and scanning EVTX files is covered. Minor gaps exist (e.g., no tool for retrieving previous scan results or managing rules), but the essential functionality is present.
Maintenance
Related MCP Connectors
A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs
A paid remote MCP for ClawManager, built to return verdicts, receipts, usage logs, and audit-ready J
VirusTotal MCP — file / URL / domain / IP reputation (BYO key)
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables an LLM client to scan Windows event log files (EVTX) for suspicious activity using Hayabusa, and browse its detection rules directly in conversation.-
- FlicenseNot gradedqualityBmaintenanceEnables scanning Windows EVTX event log files with Hayabusa, returning structured detection results through an MCP tool.-
- FlicenseNot gradedqualityBmaintenanceAn MCP server that wraps the Hayabusa CLI, enabling analysis of Windows EVTX event log files and browsing of its detection rule set.-
- FlicenseNot gradedqualityCmaintenanceEnables EVTX (Windows Event Log) analysis via Hayabusa, providing tools to scan event logs and retrieve detection rules.-