mem-forensics-mcp
Analyze memory dumps with automated triage, process/network/credential hunting, and extensible plugin execution.
Initialize and manage memory analysis sessions with engine detection
Run full automated triage with risk scoring, prioritized findings, and IOCs
Hunt process anomalies and build process trees with suspicious highlighting
Detect code injection (malfind + YARA) and suspicious C2 network connections
Recover command history and extract credentials (NTLM, LSA, cached domain)
Execute Rust or Volatility3 plugins (pslist, malfind, filescan, etc.) with server-side filtering
List available plugins, dump process/VAD details, and list dumpable cached files
Check engine status and capabilities (Rust/Vol3 availability)
Provides threat intelligence capabilities by enabling lookups of file hashes, IP addresses, domains, and files against VirusTotal's database for reputation analysis.
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., "@mem-forensics-mcp run full triage on /cases/memory.raw"
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.
mem-forensics-mcp
Unified Memory Forensics MCP Server - Multi-tier engine combining Rust speed with Vol3 coverage.
Architecture
Three-tier engine automatically routes each tool to the fastest backend:
LLM <-> [mem-forensics-mcp (Python)] <-> memoxide (Rust child, stdio MCP)
<-> Volatility3 (Python library)Tier | Engine | Speed | Coverage |
Tier 1 | Rust (memoxide) | Fast | pslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds |
Tier 2 | Python analyzers | Medium | Process anomalies, C2 detection, credentials, YARA, VT integration |
Tier 3 | Volatility3 | Slower | Any vol3 plugin (filescan, handles, svcscan, driverscan, ...) |
Related MCP server: Protocol-SIFT-Async-Bridge
Installation
Prerequisites
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Ensure Python 3.10+
python3 --versionInstall from PyPI
uv venv .venv
uv pip install --python .venv/bin/python3 mem-forensics-mcpInstall from source
git clone https://github.com/x746b/mem_forensics-mcp.git
cd mem_forensics-mcp
# Full install (recommended)
uv sync --extra full
# Minimal (Vol3 only, no YARA/VT)
uv sync --extra volatility3Build Rust Engine (optional)
Prebuilt binaries ship for aarch64-linux and x86_64-linux in engines/memoxide/. The server auto-detects the host architecture. To build from source:
# Requires Rust toolchain (https://rustup.rs)
cd engines/memoxide-src
cargo build --release
# Binary lands at engines/memoxide-src/target/release/memoxide
# The server auto-detects it (prefers local build over prebuilt)Configure Volatility3 (optional)
If Vol3 is installed at /opt/volatility3 it's auto-detected. Otherwise: export VOLATILITY3_PATH="/path/to/volatility3"
Verify
uv run python -m mem_forensics_mcp.server
# Should show: Rust engine: available, Volatility3: availableAdd to an MCP client
Register mem-forensics-mcp as a local stdio server in your MCP client's settings. Configuration format and location depend on the client. For clients that accept mcpServers JSON, use:
{
"mcpServers": {
"mem-forensics-mcp": {
"command": "/absolute/path/to/.venv/bin/python3",
"args": ["-m", "mem_forensics_mcp.server"]
}
}
}Replace the command with the absolute path to the virtual environment's Python interpreter. For a source checkout, this is /path/to/mem_forensics-mcp/.venv/bin/python3 after uv sync. For a PyPI install, use the .venv created during installation. If your client uses a different configuration format, enter the same command and arguments through its MCP server settings.
If Volatility3 is installed in a custom location, set VOLATILITY3_PATH to its absolute path in the server's environment settings (for example, "env": {"VOLATILITY3_PATH": "/path/to/volatility3"} in the JSON example). Use the client's MCP server list to confirm it connects.
Quick Start
# 1. Initialize
memory_analyze_image(image_path="/evidence/memory.raw")
# 2. Full triage
memory_full_triage(image_path="/evidence/memory.raw")
# 3. Drill down
memory_run_plugin(image_path="/evidence/memory.raw", plugin="malfind", pid=1234)memory_analyze_image reports readiness at two levels:
readyandsession_ready: an engine opened the image and the session can be reused.raw_ready: OS-agnostic Rust operations such assearchandreadraware available.structured_ready: symbols/profile data is sufficient for structure-aware plugins.
ready remains a compatibility alias for session_ready; it does not imply that
Volatility process, network, or command plugins can run. Check os_type,
structured_ready, capabilities, and warnings before choosing those tools.
For Linux structure-aware analysis, provide either a symbol directory or an explicit ISF file. Linux ISFs are never downloaded or generated automatically:
memory_analyze_image(
image_path="/evidence/memory.lime",
symbols_root="/evidence/symbols",
# or: isf_path="/evidence/symbols/5.10.0-35-amd64.json.xz",
)Without a matching ISF, LiME images still expose raw search and readraw.
The analysis response includes the exact kernel banner and a suggested ISF
filename. With symbols loaded, process tree routes to linux.pslist.PsList,
command history routes to linux.bash.Bash, and generic Linux Volatility
plugins are available through memory_run_plugin.
Tool Reference
Core
Tool | Tier | Description |
| 1->2 | Initialize image, auto-detect profile |
| 1->3 | Run any plugin (Rust or Vol3) |
| - | List available plugins |
| - | List active sessions |
| - | Show engine status |
Analysis
Tool | Tier | Description |
| 1+2 | Complete automated investigation |
| 2 | DKOM detection, parent-child validation |
| 2 | Process tree with suspicious highlighting |
| 1->2 | Code injection + YARA scanning |
| 1+2 | Network C2 detection |
| 1+2 | Command recovery + classification |
| 2 | Hash/secret extraction via Vol3 |
Extraction
Tool | Tier | Description |
| 2 | Process info and loaded DLLs |
| 2 | Examine memory region details |
| 3 | List cached files |
Threat Intelligence
Tool | Description |
| VirusTotal hash lookup |
| VirusTotal IP reputation |
| VirusTotal domain reputation |
| Hash file + VT lookup |
Example: Full Triage Output
Running memory_full_triage on a Windows 10 memory dump (Win10 19041, x64, VMware):
{
"threat_level": "critical",
"risk_score": 100,
"summary": "Processes: 115 found. Process Anomalies: 4 info-level. Network: 4 flagged of 79 connections. Commands: 56 memory fragments. Injected Code: 12 RWX regions. Correlations: 2 critical.",
"engine": "rust+python"
}Key findings:
Category | Detail |
Suspicious process |
|
Injected code | 4 RWX private memory regions in mmc.exe, 2 in EXCEL.EXE |
Child process |
|
Network | svchost.exe connections to external IPs on ports 443/80 |
Correlations |
|
IOCs | Suspicious external IPs extracted automatically |
Drill-down with filtered filescan:
memory_run_plugin(image_path="memory.raw", plugin="filescan", filter="notepad")
# Returns: 2 of 7612 results matched (server-side grep before truncation)Related Projects
winforensics-mcp — Windows disk forensics (EVTX, Registry, MFT, Prefetch, YARA, PCAP)
mac_forensics-mcp — macOS DFIR (Unified Logs, FSEvents, Spotlight, Plists)
MIT License | xtk | Built for the DFIR community. No Windows required >)
Available Tools
15 toolsmemory_analyze_imageA
Initialize memory image analysis. Tries Rust engine first (fast ISF auto-detection), falls back to Vol3. Returns session ID for subsequent operations.
Inputs: image_path (required), dtb, kernel_base.
memory_dump_processC
Get process info including memory regions and loaded DLLs.
Inputs: pid (required), image_path (required), output_dir.
memory_dump_vadB
Examine a specific VAD (memory region). Useful for injected code regions.
Inputs: pid (required), image_path (required), vad_address (required).
memory_extract_credentialsB
Extract credential artifacts via Vol3: NTLM hashes (SAM), LSA secrets, cached domain credentials.
Inputs: image_path (required), include_machine_accounts.
memory_find_c2_connectionsC
Find suspicious network connections. Uses Rust netscan for data, Python for C2 analysis.
Inputs: image_path (required), include_listening, include_legitimate.
memory_find_injected_codeB
Scan for code injection. Uses Rust malfind (fast), falls back to Vol3 malfind + YARA.
Inputs: image_path (required), pid, yara_scan, dump_payloads.
memory_full_triageA
Run complete automated triage of memory dump. Uses Rust engine for fast data collection and Python analyzers for correlation. Produces executive summary with risk level, prioritized findings, and IOCs.
Inputs: image_path (required), quick_scan.
memory_get_command_historyA
Recover attacker commands from cmd.exe history and process command lines. Uses Rust cmdscan, enriched by Vol3.
Inputs: image_path (required), pid, include_benign.
memory_get_process_treeB
Get process tree showing parent-child relationships. Highlights suspicious processes.
Inputs: image_path (required), root_pid, highlight_suspicious.
memory_get_statusA
Get status and capabilities. Shows available engines (Rust/Vol3) and what analyses can be performed.
Inputs: no named parameters.
memory_hunt_process_anomaliesB
Detect hidden processes, unusual parent-child relationships, and suspicious process attributes. Uses Rust pslist+psscan for data, Python analyzer for correlation.
Inputs: image_path (required), include_normal.
memory_list_dumpable_filesC
List files that can be extracted from memory cache.
Inputs: image_path (required), pid.
memory_list_pluginsB
List all available plugins (Rust + Vol3).
Inputs: image_path (required).
memory_list_sessionsA
List all active memory analysis sessions. Shows session IDs, image paths, and engine status.
Inputs: no named parameters.
memory_run_pluginA
Run a forensics plugin. Tier 1 (Rust, fast): pslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds — use short names. Tier 3 (Vol3): any other plugin — short names auto-resolve (e.g. 'filescan', 'handles', 'envars'). If a short name fails, use full Vol3 path: 'windows.category.PluginName' (e.g. 'windows.mftscan.MFTScan'). Use 'filter' param to grep results server-side (avoids truncation). For search: use params={"pattern": "text", "encoding": "ascii|utf16le|hex", "limit": N, "context": N}.
Inputs: plugin (required), image_path (required), pid, filter, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
While most tools target distinct high-level tasks, the generic `memory_run_plugin` overlaps with specialized tools like `memory_find_injected_code` and `memory_get_command_history`, since these can also be replicated via plugin execution. Additionally, `memory_full_triage` and `memory_analyze_image` both serve as entry points for analysis, creating potential confusion despite different workflows.
All tools consistently use the `memory_` prefix and snake_case, with most following a verb_noun pattern (e.g., `list_sessions`, `dump_process`). However, `memory_full_triage` deviates as an adjective_noun phrase, and the mix of `list` vs. `get` for similar enumeration actions (e.g., `list_plugins` vs. `get_process_tree`) introduces minor inconsistency.
With 15 tools, the server sits at the upper boundary of the optimal 3-15 range, but each tool covers a meaningful part of the memory forensics workflow. Administrative tools (list_sessions, get_status, list_plugins) are not redundant, and the count remains manageable for agent navigation.
The toolkit covers major memory forensics tasks including image analysis, process inspection, anomaly detection, code injection, C2 discovery, credential extraction, and memory dumping. The generic `memory_run_plugin` provides extensibility to Vol3 plugins, but a dedicated file extraction tool is missing (only listing is available), and registry analysis is not directly exposed.
Maintenance
Related MCP Connectors
MCP server for the Vulners.com API
MCP server for static security analysis of Android source code
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA governed MCP server for digital-forensics and incident-response (DFIR) work, exposing curated forensic tools (Volatility 3, Plaso, RegRipper, etc.) through a single FastMCP HTTP endpoint with bearer-token authentication and tamper-evident audit logging.MIT
- AlicenseNot gradedqualityDmaintenanceA production-grade, type-safe MCP server for memory forensics via Volatility 3, enabling LLM-assisted incident response without timeouts or evidence spoliation.1MIT
- AlicenseBqualityDmaintenanceComprehensive forensic analysis MCP server enabling AI agents to analyze files, Chromium and Firefox browser artifacts, with VirusTotal, DIE, Binwalk integrations.51MIT
- FlicenseAqualityDmaintenanceMCP server for read-only forensic analysis of evidence files using local utilities (file, ExifTool, strings, Volatility).3-