mcp-hayabusa
Click on "Install 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 sysmon_lsass_mimikatz.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
Project layout
server.py— the MCP server entry point; both tools are defined hererequirements.txt— Python dependencies (mcp,pyyaml)hayabusa/— the Hayabusa binary, rule set, and config, installed byscripts/download_hayabusa.py(gitignored; not checked in)scripts/download_hayabusa.py— downloads the latest Hayabusa release for the current platform and extracts it intohayabusa/samples/— sample EVTX files for manual testing (e.g.sysmon_lsass_mimikatz.evtx).mcp.json— registers thehayabusaMCP server (python server.py) for this project.claude/settings.json— allowlists (enabledMcpjsonServers) the server defined in.mcp.jsonso Claude Code doesn't prompt for approval on every session
Related MCP server: hayabusa-mcp
Setup and running locally
pip install -r requirements.txt
python scripts/download_hayabusa.py # installs hayabusa/ (binary + rules), if not presentThe server is launched by Claude Code via .mcp.json (python server.py, stdio transport) —
there's no separate "start the server" step when working through Claude Code. To run/debug it
standalone, python server.py starts it directly.
There is no formal test suite (no pytest config) — verify behavior by calling the tools directly, e.g.:
python -c "from server import scan_evtx; print(scan_evtx('samples/sysmon_lsass_mimikatz.evtx'))"
python -c "from server import get_hayabusa_rules; print(get_hayabusa_rules(keyword='mimikatz'))"Note: an already-running MCP connection does not pick up server.py edits — reconnect/restart
the MCP server (e.g. /mcp reconnect in Claude Code) to see code changes reflected in tool calls.
MCP tools
scan_evtx(evtx_path, min_severity="informational", rule_filter="", output_format="summary", max_results=0)
Runs hayabusa json-timeline against a single EVTX file and returns structured JSON detections.
Invokes the binary with
-L(JSONL output),-w(no interactive wizard),-q/-N/-K(quiet, no summary table, no color codes),-C(clobber output file),-b(disable Level abbreviations) — output is written to a temp file and parsed line by line.min_severityis post-filtered in Python againstSEVERITY_LEVELS(informational < low < medium < high < critical), not passed to Hayabusa as a CLI flag.LEVEL_ALIASESmaps abbreviated Level values back to full names as a defensive fallback.rule_filteris a case-insensitive substring match against each finding'sRuleTitle.output_format="summary"(default) trims each finding toSUMMARY_FIELDS(Timestamp, RuleTitle, Level, Computer, Channel, EventID, RecordID, RuleID);"full"returns every field Hayabusa produced, includingDetailsandExtraFieldInfo.max_resultstruncates the returned list after severity/rule filtering; the response'stotal_findingsstill reports the full filtered count so callers can tell when results were capped.Scans time out after
SCAN_TIMEOUT_SECONDS(600s).
get_hayabusa_rules(keyword="", max_results=100)
Lists Hayabusa's bundled Sigma/built-in detection rules by parsing every YAML file under
hayabusa/rules/**/*.yml (~5000 files). Useful for discovering rule titles (to feed into
scan_evtx's rule_filter) or understanding what a rule detects before scanning.
Parsed rule metadata (
id,title,level,status,description,tags,logsource,path) is cached in_rules_cachefor the life of the process — the first call takes several seconds (full YAML parse), subsequent calls are near-instant. The cache is invalidated only by restarting the server.keywordis a case-insensitive substring match against title, description, rule ID, and tags.max_resultsdefaults to 100 (there are thousands of rules);0means no limit. Response includestotal_rules,total_matched, andreturned_count.Malformed rule YAML, or files without a
titlefield, are silently skipped.
Error handling conventions
Both tools return _error(message) — {"success": false, "error": "..."} — rather than raising,
for: invalid enum/range arguments (min_severity, output_format, negative max_results),
missing/non-file evtx_path, missing Hayabusa binary or rules directory, non-zero Hayabusa exit
code, missing output file, malformed JSONL output line, subprocess timeout, and OSError/
FileNotFoundError when invoking the binary. Successful responses always include "success": true.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sourab17/mcp-hayabusa'
If you have feedback or need assistance with the MCP directory API, please join our Discord server