Skip to main content
Glama
mem-forensics-mcp

mem-forensics-mcp

by x746b

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 --version

Install from PyPI

uv venv .venv
uv pip install --python .venv/bin/python3 mem-forensics-mcp

Install 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 volatility3

Build 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: available

Add 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:

  • ready and session_ready: an engine opened the image and the session can be reused.

  • raw_ready: OS-agnostic Rust operations such as search and readraw are 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

memory_analyze_image

1->2

Initialize image, auto-detect profile

memory_run_plugin

1->3

Run any plugin (Rust or Vol3)

memory_list_plugins

-

List available plugins

memory_list_sessions

-

List active sessions

memory_get_status

-

Show engine status

Analysis

Tool

Tier

Description

memory_full_triage

1+2

Complete automated investigation

memory_hunt_process_anomalies

2

DKOM detection, parent-child validation

memory_get_process_tree

2

Process tree with suspicious highlighting

memory_find_injected_code

1->2

Code injection + YARA scanning

memory_find_c2_connections

1+2

Network C2 detection

memory_get_command_history

1+2

Command recovery + classification

memory_extract_credentials

2

Hash/secret extraction via Vol3

Extraction

Tool

Tier

Description

memory_dump_process

2

Process info and loaded DLLs

memory_dump_vad

2

Examine memory region details

memory_list_dumpable_files

3

List cached files

Threat Intelligence

Tool

Description

vt_lookup_hash

VirusTotal hash lookup

vt_lookup_ip

VirusTotal IP reputation

vt_lookup_domain

VirusTotal domain reputation

vt_lookup_file

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

mmc.exe launched from explorer.exe, loading a .msc file from browser downloads

Injected code

4 RWX private memory regions in mmc.exe, 2 in EXCEL.EXE

Child process

dllhost.exe spawned by mmc.exe with executable RWX region

Network

svchost.exe connections to external IPs on ports 443/80

Correlations

active_implant + active_c2_session flagged as critical

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)

  • 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 tools
memory_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

    B3.4/5.0

    Scored across 15 tools

    Disambiguation3/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      A 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
    • A
      license
      Not graded
      quality
      D
      maintenance
      A production-grade, type-safe MCP server for memory forensics via Volatility 3, enabling LLM-assisted incident response without timeouts or evidence spoliation.
      1
      MIT