npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@modular-intelligence/volatility

v1.0.2

Published

MCP server wrapping Volatility 3 for memory forensics analysis

Readme

Volatility 3 MCP Server

A comprehensive memory forensics analysis server that integrates with Volatility 3 for deep inspection of memory dumps. This MCP (Model Context Protocol) server enables Claude to perform advanced memory forensic analysis including process enumeration, malware detection, network connection tracking, and system artifact extraction from memory dumps captured from Windows and Linux systems.

Overview

This server provides access to Volatility 3, a leading open-source memory forensics framework, through a unified interface:

  • Volatility 3 - Memory dump analysis including process listing, malware detection, network scanning, and registry analysis

Perfect for incident response, malware analysis, forensic investigations, and security research.

Tools

| Tool | Description | |------|-------------| | vol_pslist | List all running processes from memory dump | | vol_netscan | Scan for network connections in memory dump (Windows) | | vol_malfind | Find hidden or injected code in process memory | | vol_dlllist | List loaded DLLs for processes | | vol_handles | List open handles for processes | | vol_cmdline | Display command-line arguments for processes | | vol_filescan | Scan for file objects in memory | | vol_hivelist | List registry hives in memory | | vol_timeliner | Generate activity timeline from memory artifacts |

Process List (vol_pslist)

List all running processes from a memory dump, supporting both Windows and Linux targets.

Input Parameters:

{
  dump_path: string      // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  os: "windows" | "linux" // Target OS type (default: "windows")
  timeout: number        // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "os": "windows",
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.pslist",
  "dump_path": "/path/to/memory.dmp",
  "process_count": 42,
  "processes": [
    {
      "pid": "4",
      "ppid": "0",
      "name": "System",
      "offset": "0x8b00e000",
      "threads": "8",
      "handles": "1024",
      "session_id": "N/A"
    },
    {
      "pid": "396",
      "ppid": "4",
      "name": "smss.exe",
      "offset": "0x8a72d000",
      "threads": "2",
      "handles": "56",
      "session_id": "0"
    },
    {
      "pid": "2840",
      "ppid": "1968",
      "name": "malware.exe",
      "offset": "0x8c91f000",
      "threads": "4",
      "handles": "128",
      "session_id": "1"
    }
  ]
}

Network Scan (vol_netscan)

Scan for network connections in Windows memory dumps, including TCP and UDP connections.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.netscan",
  "dump_path": "/path/to/memory.dmp",
  "connection_count": 15,
  "connections": [
    {
      "offset": "0x8cd5f6a8",
      "protocol": "TCPv4",
      "local_address": "192.168.1.100",
      "local_port": "49320",
      "remote_address": "10.0.0.50",
      "remote_port": "443",
      "state": "ESTABLISHED",
      "pid": "2840",
      "owner": "malware.exe",
      "timestamp": "2024-01-15T10:30:45.000Z"
    },
    {
      "offset": "0x8cd5f720",
      "protocol": "TCPv4",
      "local_address": "192.168.1.100",
      "local_port": "49321",
      "remote_address": "192.0.2.1",
      "remote_port": "8080",
      "state": "ESTABLISHED",
      "pid": "2840",
      "owner": "malware.exe",
      "timestamp": "2024-01-15T10:31:22.000Z"
    }
  ]
}

Malware Detection (vol_malfind)

Find hidden or injected code in process memory, detecting code caves, suspicious memory regions, and injected malware.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  pid: number        // Process ID to filter (optional)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.malfind",
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "finding_count": 3,
  "findings": [
    {
      "pid": "2840",
      "process": "malware.exe",
      "address": "0x400000",
      "size": "4096",
      "reason": "Suspicious executable code in injected region",
      "protection": "PAGE_EXECUTE_READWRITE",
      "mem_state": "MEM_COMMIT",
      "mem_type": "MEM_PRIVATE",
      "signature": "4d5a9000",
      "hex_dump": "4d 5a 90 00 03 00 00 00..."
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "address": "0x500000",
      "size": "8192",
      "reason": "Executable code detected in heap",
      "protection": "PAGE_EXECUTE_READ",
      "mem_state": "MEM_COMMIT",
      "mem_type": "MEM_PRIVATE",
      "signature": "55894ec8",
      "hex_dump": "55 89 4e c8 c9 c3..."
    }
  ]
}

DLL List (vol_dlllist)

List all loaded DLLs for specified processes or all processes.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  pid: number        // Process ID to filter (optional)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.dlllist",
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "dll_count": 28,
  "dlls": [
    {
      "pid": "2840",
      "process": "malware.exe",
      "base": "0x400000",
      "size": "1720320",
      "path": "C:\\malware.exe",
      "load_order": "1"
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "base": "0x77000000",
      "size": "2101248",
      "path": "C:\\Windows\\System32\\ntdll.dll",
      "load_order": "2"
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "base": "0x762f0000",
      "size": "966656",
      "path": "C:\\Windows\\System32\\kernel32.dll",
      "load_order": "3"
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "base": "0x67890000",
      "size": "32768",
      "path": "C:\\malicious.dll",
      "load_order": "4"
    }
  ]
}

Process Handles (vol_handles)

List all open handles for processes, including files, registry keys, events, and other system objects.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  pid: number        // Process ID to filter (optional)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.handles",
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "handle_count": 156,
  "handles": [
    {
      "pid": "2840",
      "process": "malware.exe",
      "offset": "0x8c91f000",
      "handle": "4",
      "type": "File",
      "obj_offset": "0x8c92a000",
      "access": "0x001f0000",
      "name": "\\Device\\HarddiskVolume1\\Windows\\Temp\\payload.exe"
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "offset": "0x8c91f000",
      "handle": "8",
      "type": "Key",
      "obj_offset": "0x8c92b000",
      "access": "0x00020000",
      "name": "\\Registry\\Machine\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
    },
    {
      "pid": "2840",
      "process": "malware.exe",
      "offset": "0x8c91f000",
      "handle": "12",
      "type": "Event",
      "obj_offset": "0x8c92c000",
      "access": "0x001fffff",
      "name": "Global\\MalwareEvent123"
    }
  ]
}

Command Line (vol_cmdline)

Display command-line arguments for processes, revealing how processes were executed.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  pid: number        // Process ID to filter (optional)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.cmdline",
  "dump_path": "/path/to/memory.dmp",
  "pid": 2840,
  "process_count": 1,
  "cmdlines": [
    {
      "pid": "2840",
      "process": "malware.exe",
      "args": "C:\\malware.exe -s http://attacker.com:8080 -d C:\\Windows\\Temp\\data.bin"
    }
  ]
}

File Scan (vol_filescan)

Scan for file objects in memory, revealing recently accessed files and file operations.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.filescan",
  "dump_path": "/path/to/memory.dmp",
  "file_count": 487,
  "files": [
    {
      "offset": "0x8ca52000",
      "name": "\\Device\\HarddiskVolume1\\Windows\\System32\\kernel32.dll",
      "access": "Read",
      "size": "966656"
    },
    {
      "offset": "0x8ca52100",
      "name": "\\Device\\HarddiskVolume1\\Windows\\Temp\\malware.exe",
      "access": "Write",
      "size": "1720320"
    },
    {
      "offset": "0x8ca52200",
      "name": "\\Device\\HarddiskVolume1\\Users\\Administrator\\AppData\\Local\\Temp\\cache.dat",
      "access": "Read",
      "size": "512000"
    }
  ]
}

Registry Hive List (vol_hivelist)

List registry hives in memory, providing registry hive locations and offsets for further analysis.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "timeout": 300
}

Example Output:

{
  "plugin": "windows.registry.hivelist",
  "dump_path": "/path/to/memory.dmp",
  "hive_count": 8,
  "hives": [
    {
      "offset": "0x8c000000",
      "registry_path": "\\Registry\\Machine\\SAM",
      "file_path": "C:\\Windows\\System32\\config\\SAM",
      "user": "N/A",
      "virtual": "N/A"
    },
    {
      "offset": "0x8c100000",
      "registry_path": "\\Registry\\Machine\\Security",
      "file_path": "C:\\Windows\\System32\\config\\Security",
      "user": "N/A",
      "virtual": "N/A"
    },
    {
      "offset": "0x8c200000",
      "registry_path": "\\Registry\\Machine\\System",
      "file_path": "C:\\Windows\\System32\\config\\System",
      "user": "N/A",
      "virtual": "N/A"
    },
    {
      "offset": "0x8c300000",
      "registry_path": "\\Registry\\Machine\\Software",
      "file_path": "C:\\Windows\\System32\\config\\Software",
      "user": "N/A",
      "virtual": "N/A"
    }
  ]
}

Timeline (vol_timeliner)

Generate a timeline of system activity from memory artifacts, correlating events across multiple sources.

Input Parameters:

{
  dump_path: string  // Path to memory dump file (.raw/.dmp/.vmem/.lime/.mem)
  timeout: number    // Timeout in seconds (30-600, default: 300)
}

Example Request:

{
  "dump_path": "/path/to/memory.dmp",
  "timeout": 300
}

Example Output:

{
  "plugin": "timeliner.Timeliner",
  "dump_path": "/path/to/memory.dmp",
  "event_count": 89,
  "events": [
    {
      "timestamp": "2024-01-15T08:30:15.000Z",
      "source": "Process Create",
      "description": "svchost.exe (PID: 1024) created",
      "pid": "1024",
      "process": "svchost.exe"
    },
    {
      "timestamp": "2024-01-15T09:15:42.000Z",
      "source": "File Activity",
      "description": "malware.exe written to C:\\Windows\\Temp",
      "pid": "2840",
      "process": "explorer.exe"
    },
    {
      "timestamp": "2024-01-15T09:16:03.000Z",
      "source": "Process Create",
      "description": "malware.exe (PID: 2840) created",
      "pid": "2840",
      "process": "malware.exe"
    },
    {
      "timestamp": "2024-01-15T09:16:15.000Z",
      "source": "Network Connection",
      "description": "Network connection established to 10.0.0.50:443",
      "pid": "2840",
      "process": "malware.exe"
    }
  ]
}

Configuration

Environment Variables

This server requires Volatility 3 to be installed and accessible in the system PATH. No API keys are required.

export PATH="/path/to/volatility3:$PATH"

Volatility 3 Installation

Volatility 3 is the foundational requirement for this server. Install it following the official documentation:

Official Installation

  • Repository: https://github.com/volatilityfoundation/volatility3
  • Documentation: https://volatility3.readthedocs.io/
  • Requirements: Python 3.6+ and pip
  • Installation: pip install volatility3

Prerequisites

  • Bun runtime (version 1.x or later) or Node.js 18+
  • Volatility 3 installed and accessible as vol command
  • Memory dump files in supported formats (.raw, .dmp, .vmem, .lime, .mem)

Installation

Prerequisites Check

Ensure Volatility 3 is installed:

vol --version

Steps

  1. Clone or download this repository:
git clone <repo-url>
cd volatility
  1. Install dependencies:
bun install
  1. Build the project:
bun run build
  1. Run the server:
bun run start

The server will start listening on stdio transport.

Usage

Running the Server

Start the server with Bun:

bun run src/index.ts

The server implements the Model Context Protocol (MCP) and communicates via stdio transport. It can be integrated with Claude or other MCP clients.

Claude Desktop Configuration

Add the server to your Claude Desktop configuration at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "volatility": {
      "command": "bun",
      "args": [
        "run",
        "/path/to/volatility/src/index.ts"
      ]
    }
  }
}

Claude Code MCP Settings

Configure the server in Claude Code's MCP settings (typically in .mcp.json or via settings UI):

{
  "servers": {
    "volatility": {
      "transport": "stdio",
      "command": "bun",
      "args": ["run", "/path/to/volatility/src/index.ts"]
    }
  }
}

Example Usage in Claude

Once configured, you can use the tools directly in conversations with Claude:

Request: "Analyze the memory dump at /path/to/memory.dmp and list all running processes"

Claude will call:

{
  "tool": "vol_pslist",
  "input": {
    "dump_path": "/path/to/memory.dmp",
    "os": "windows",
    "timeout": 300
  }
}

Request: "Check for malware in process ID 2840 from the memory dump"

Claude will call:

{
  "tool": "vol_malfind",
  "input": {
    "dump_path": "/path/to/memory.dmp",
    "pid": 2840,
    "timeout": 300
  }
}

Request: "Show me all network connections detected in the memory dump"

Claude will call:

{
  "tool": "vol_netscan",
  "input": {
    "dump_path": "/path/to/memory.dmp",
    "timeout": 300
  }
}

Request: "List all DLLs loaded by process explorer.exe (PID 1024)"

Claude will call:

{
  "tool": "vol_dlllist",
  "input": {
    "dump_path": "/path/to/memory.dmp",
    "pid": 1024,
    "timeout": 300
  }
}

Security

This server implements comprehensive input validation and security measures to prevent path traversal attacks, arbitrary command execution, and system resource abuse:

Input Validation

Dump Path Validation

  • Validates file path format and resolves to absolute paths
  • Enforces whitelist of allowed extensions: .raw, .dmp, .vmem, .lime, .mem
  • Requires file existence before processing
  • Prevents access to system-critical directories (/proc, /sys, /dev)
  • Blocks access to sensitive files (/etc/shadow, /etc/passwd)
  • Enforces maximum file size limit of 10GB

Process ID Validation

  • Accepts only positive integers
  • Validates ID is in valid process ID range
  • Filters processes by specified PID when provided

Timeout Validation

  • Enforces minimum timeout of 30 seconds
  • Enforces maximum timeout of 600 seconds (10 minutes)
  • Defaults to 300 seconds (5 minutes)
  • Prevents resource exhaustion from infinite execution

Plugin Whitelist

Only pre-approved Volatility plugins are allowed:

  • windows.pslist
  • windows.pstree
  • windows.netscan
  • windows.malfind
  • windows.dlllist
  • windows.handles
  • windows.cmdline
  • windows.filescan
  • windows.registry.hivelist
  • linux.pslist
  • linux.pstree
  • timeliner.Timeliner

What Gets Blocked

The server rejects:

  • Invalid dump file paths (non-existent, wrong extension)
  • Attempts to access system directories or sensitive files
  • Dump files exceeding 10GB
  • Out-of-range process IDs
  • Timeouts outside 30-600 second range
  • Plugins not on the whitelist
  • Path traversal attempts (../, etc.)

Error Handling

  • Invalid inputs return descriptive error messages
  • Volatility execution errors are caught and reported with stderr
  • Timeout violations trigger process termination and clear error messages
  • File system errors are handled gracefully

License

ISC License - see LICENSE file for details