mem-forensics-mcp
The server is a unified memory forensics MCP tool that analyzes memory dumps via a Rust engine, Python analyzers, and Volatility3, offering automated triage, deep plugin control, threat detection, and threat-intelligence lookups.
Analyze memory images:
memory_analyze_imageinitializes dumps, auto-detects OS/profile, and returns session readiness/capabilities.Run automated triage:
memory_full_triageproduces a risk score, executive summary, prioritized findings, and IOCs; optional quick scan skips slow steps.Execute forensic plugins:
memory_run_pluginsupports fast Rust plugins (pslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds) and any Vol3 plugin (filescan, handles, svcscan, etc.) with server-side filtering and extra params.Hunt process anomalies:
memory_hunt_process_anomaliesdetects hidden processes, DKOM, and unusual parent/child relationships.Build process trees:
memory_get_process_treeshows parent-child hierarchy with suspicious highlighting and optional root PID.Find injected code:
memory_find_injected_codescans for code injection using Rust malfind and YARA, optionally dumping payloads.Detect C2 connections:
memory_find_c2_connectionsanalyzes network connections for command-and-control indicators.Recover command history:
memory_get_command_historyretrieves cmd.exe history and process command lines, filterable and with benign entries toggle.Extract credentials:
memory_extract_credentialspulls NTLM hashes, LSA secrets, and cached domain credentials via Vol3.Dump process/VAD details:
memory_dump_processprovides process info, memory regions, and loaded DLLs;memory_dump_vadinspects specific VAD regions.List dumpable files:
memory_list_dumpable_filesidentifies cached files that could be extracted.Manage sessions and status:
memory_list_sessionsandmemory_get_statusshow active analysis sessions and available engine capabilities.Enumerate plugins:
memory_list_pluginslists all available Rust and Volatility3 plugins for a given image.
Provides threat intelligence capabilities by enabling lookups of file hashes, IP addresses, domains, and files against VirusTotal's database for reputation analysis.
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., "@mem-forensics-mcprun 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 pip install 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: availableAdding to Claude CLI
claude mcp add mem-forensics-mcp \
--scope user \
-- uv run --directory /opt/mem_forensics-mcp python -m mem_forensics_mcp.serverWith custom Volatility3 path:
claude mcp add mem-forensics-mcp \
--scope user \
-e VOLATILITY3_PATH=/opt/volatility3 \
-- uv run --directory /opt/mem_forensics-mcp python -m mem_forensics_mcp.serverQuick 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.
| Name | Required | Description | Default |
|---|---|---|---|
| dtb | No | Override DTB (hex or decimal, e.g., '0x1ad000') | |
| image_path | Yes | Path to memory dump file (.raw, .vmem, .dmp, .lime, .mem) | |
| kernel_base | No | Override kernel base address (hex or decimal) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals a significant behavioral trait: trying the Rust engine first with fast ISF auto-detection and falling back to Vol3. It also discloses the output (session ID), which is crucial for chaining operations. However, it does not mention side effects or failure modes, but the disclosed behaviors add substantial value.
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?
The description is two sentences with the core purpose front-loaded. Every clause earns its place: the engine fallback behavior and session ID return are both essential for understanding how to use the tool. There is no redundancy or filler.
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?
The tool is an initializer with a simple interface, and the description covers the essential workflow: initialize, receive a session ID, and use it for subsequent operations. It does not detail the return format, but the concept of a session ID is conveyed and no output schema exists. The description is complete enough for its scope.
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?
The schema already provides complete descriptions for all three parameters, including valid file extensions and override purposes. The description adds no extra parameter-specific semantics, relying on the schema's high coverage. A baseline score of 3 is appropriate.
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 the tool's purpose with a specific verb ('Initialize') and resource ('memory image analysis'). It also distinguishes itself from sibling tools by noting it returns a session ID for subsequent operations, making it the entry point in the memory analysis workflow.
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?
The description implies when to use this tool: before other memory analysis operations, as it provides a session ID for subsequent steps. It does not explicitly name alternative tools or state exclusions, but the context is clear enough for an agent to infer it is the first step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_dump_processC
Get process info including memory regions and loaded DLLs.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Process ID to dump | |
| image_path | Yes | Path to memory dump file | |
| output_dir | No | Directory for output files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states a high-level action. It does not mention potential side effects like writing output files (despite output_dir parameter), required permissions, or operational considerations such as whether it reads from a dump file or a live process. This leaves significant behavioral ambiguity.
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?
The description is a single, concise sentence that is front-loaded with the core action and key details. There is no superfluous text, making it efficient and easy to parse.
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 the lack of an output schema and the presence of numerous sibling tools, the description is too sparse to fully contextualize the tool's operation. It doesn't explain what the output looks like, how memory regions and DLLs are presented, or when to prefer this over more specific sibling tools, so it falls short of complete guidance.
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 100%, with each parameter having a description, so the baseline is 3. The tool description adds no extra parameter-level meaning beyond what the schema already provides, but it does loosely align with the notion of dumping process information.
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 the tool's action ('Get process info') and specifies content ('memory regions and loaded DLLs'), giving a clear sense of purpose. However, it does not differentiate from sibling tools like memory_dump_vad or memory_analyze_image, which may also involve process or memory details.
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?
No guidance is provided regarding when to use this tool versus alternatives such as memory_dump_vad or memory_analyze_image. The description offers no context for selection or exclusions, leaving the agent without criteria to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_dump_vadB
Examine a specific VAD (memory region). Useful for injected code regions.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Process ID | |
| image_path | Yes | Path to memory dump file | |
| vad_address | Yes | VAD start address (hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely says 'Examine' without stating whether it is read-only, what the return format is, potential side effects, or prerequisites. This is insufficient for a forensics tool.
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?
The description is a single sentence that is front-loaded with the core action, and every word earns its place. It is concise without being overly sparse, though it could be expanded with behavioral details without harming clarity.
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?
For a 3-parameter tool with no output schema and no annotations, this description is too minimal. It lacks details on output, workflow context, and how it differs from sibling memory-analysis tools. The 'useful for injected code regions' hint is not enough to guide an agent effectively.
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 descriptions cover 100% of parameters, so the baseline is 3. The description adds contextual meaning by interpreting VAD as 'memory region' and linking it to injected code, but it does not clarify parameter formatting or relationships beyond what the schema already provides.
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 uses a specific verb 'Examine' with a clear resource 'specific VAD (memory region)', which distinguishes it from sibling tools like memory_dump_process and memory_find_injected_code. However, 'examine' could imply a broader set of actions than just reading memory, leaving some ambiguity about the exact operation.
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?
The phrase 'Useful for injected code regions' implies a use case but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternative tools like memory_find_injected_code or memory_dump_process, so the agent must infer tool selection from minimal context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_extract_credentialsB
Extract credential artifacts via Vol3: NTLM hashes (SAM), LSA secrets, cached domain credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to memory dump file | |
| include_machine_accounts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of disclosing behavior, but it only lists artifact types. It does not state whether the operation is read-only, whether any prerequisites (e.g., Volatility installation) are needed, or what side effects or limitations exist.
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?
The description is a single, well-structured sentence that front-loads the action and artifact types. There is no redundant information or filler; every word contributes to understanding what the tool does.
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?
For a memory analysis tool with no annotations and no output schema, this description is too sparse. It leaves out how results are returned, what to do with the extracted data, and the purpose of include_machine_accounts, making it incomplete for an agent attempting a correct invocation without further assumptions.
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 only 50% (only image_path is described). The tool description adds no parameter meaning: it never mentions image_path or include_machine_accounts, so the boolean parameter remains ambiguous beyond its name. The description fails to compensate for the schema's incomplete parameter documentation.
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 the specific verb 'Extract' and the resource 'credential artifacts via Vol3', enumerating subcategories (NTLM hashes, LSA secrets, cached domain credentials). This gives a precise, distinctive purpose that sets it apart from sibling tools like memory_full_triage or memory_run_plugin.
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?
The implied usage is obvious: use this tool when you need to extract credential artifacts from a memory dump. However, there is no explicit comparison to alternative tools, no mention of when not to use it, and no prerequisites or context that would guide selection among the many memory_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_find_c2_connectionsC
Find suspicious network connections. Uses Rust netscan for data, Python for C2 analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to memory dump file | |
| include_listening | No | ||
| include_legitimate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states that it 'Finds suspicious network connections' and mentions implementation details, but does not reveal read-only status, output format, side effects, or any limitations. This is insufficient for a memory analysis tool.
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?
The description is concise at two sentences, with the main purpose front-loaded. However, the second sentence about implementation details is somewhat extraneous and could have been used for more useful operational context, but it does not significantly hurt the clarity.
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 no output schema, no annotations, and only 33% schema coverage, the description should provide much more context. It lacks information about return values, parameter semantics, when to use, and what the agent should expect. The description is minimal and does not compensate for these gaps.
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?
Only the required image_path parameter has a schema description. The booleans include_listening and include_legitimate are undocumented in both the schema and the description. The description does not clarify what these booleans control, leaving the agent to guess their semantics.
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 the verb 'Find' and the resource 'suspicious network connections', which distinguishes this tool from siblings like memory_find_injected_code or memory_hunt_process_anomalies. However, it does not explicitly mention that it operates on a memory dump (though implied by the parameter) or scope the meaning of 'suspicious'.
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?
No guidance is given on when to use this tool versus alternatives. It does not mention preconditions, exclusions, or that other memory tools might have overlapping functionality. The implementation detail (Rust/Python) does not help the agent decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_find_injected_codeB
Scan for code injection. Uses Rust malfind (fast), falls back to Vol3 malfind + YARA.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Scan specific process only | |
| yara_scan | No | ||
| image_path | Yes | Path to memory dump file | |
| dump_payloads | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does add useful context about the tool's implementation: 'Uses Rust malfind (fast), falls back to Vol3 malfind + YARA.' This reveals the dual-method approach and fallback behavior. However, it does not disclose whether the operation is read-only, what output to expect, or any side effects, leaving gaps in transparency.
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?
The description is extremely concise, consisting of two short sentences. It front-loads the primary purpose ('Scan for code injection') and immediately adds technical detail about the fallback mechanism. Every word contributes meaning, with no filler or redundancy.
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 the tool has 4 parameters, no annotations, and no output schema, the description is too minimal to be complete. It does not explain return values, potential side effects, or the meaning of key parameters like dump_payloads. The description fails to provide enough context for an agent to fully understand the tool's behavior and limitations.
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 description coverage is 50%, so the description must compensate for undocumented parameters. However, it mentions no parameters directly. The description's reference to Rust malfind and YARA hints at the yara_scan parameter but does not clarify the meanings of yara_scan or dump_payloads. The schema already describes image_path and pid, so the description adds no additional semantic value.
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 the tool's purpose: 'Scan for code injection.' The verb 'scan' and specific target 'code injection' make the function distinct from vague generic names. However, it does not explicitly distinguish itself from sibling tools like memory_hunt_process_anomalies, which might also detect injected code, so it loses a point.
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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where this tool is preferred. The context is limited to the tool's own functionality without comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to memory dump file | |
| quick_scan | No | Skip slower analyses (credentials) for faster results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining tool behavior. It discloses the use of Rust and Python engines and the production of an executive summary, but omits details about side effects, prerequisites, or performance implications. It provides a reasonable overview but lacks depth.
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?
The description is two sentences, front-loaded with the main action, and every sentence contributes meaning. There is no filler or redundancy, making it highly concise and well-structured.
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 the tool's complexity, the description adequately covers its purpose and outputs. Without an output schema, it effectively communicates the executive summary contents. It could mention the impact of quick_scan on results, but that detail is present in the parameter schema.
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 100%—both parameters (image_path and quick_scan) are described in the schema. The description itself adds no parameter-specific value, but the schema fully compensates, so the baseline score of 3 applies.
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 the tool's verb ('Run complete automated triage') and resource ('memory dump'), establishing a clear purpose. It differentiates from siblings by emphasizing the comprehensive, automated triage scope and specifying outputs (executive summary, risk level, findings, IOCs).
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?
The description implies use for full triage but provides no explicit guidance on when to choose this tool over more specialized siblings like memory_analyze_image or memory_extract_credentials. It does not mention alternatives or exclusions, leaving the usage context somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_get_command_historyA
Recover attacker commands from cmd.exe history and process command lines. Uses Rust cmdscan, enriched by Vol3.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Filter by PID | |
| image_path | Yes | Path to memory dump file | |
| include_benign | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions using 'Rust cmdscan' and Vol3, but doesn't clarify output format, filtering behavior (e.g., include_benign default), or any side effects. The phrase 'attacker commands' suggests filtering, but the parameter behavior is not transparent.
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?
Two concise sentences front-load the purpose and add implementation context without redundancy.
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?
Without annotations or an output schema, the description lacks critical context about output structure, filtering, and usage boundaries. It is too brief to fully guide an agent, especially with three parameters and no example usage.
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?
The schema covers pid and image_path, but not include_benign. The description's focus on 'attacker commands' implies the default filtering, adding some semantic meaning. Yet it doesn't explicitly explain the parameters or the include_benign toggle.
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 the tool's function: recovering attacker commands from cmd.exe history and process command lines. This distinct purpose differentiates it from sibling tools like memory_find_c2_connections or memory_extract_credentials.
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?
The description implies the tool is for extracting command history from memory dumps, providing clear context for when to use it. However, it doesn't explicitly mention alternatives or when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_get_process_treeB
Get process tree showing parent-child relationships. Highlights suspicious processes.
| Name | Required | Description | Default |
|---|---|---|---|
| root_pid | No | Show tree from this PID | |
| image_path | Yes | Path to memory dump file | |
| highlight_suspicious | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal an extra behavior of highlighting suspicious processes, which is useful. However, it doesn't explain the criteria for suspicion, the output structure, or the effect of the root_pid parameter. It is minimally adequate but lacks depth.
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?
The description is two concise sentences, front-loaded with the core purpose. No fluff, repetition, or unnecessary technical jargon.
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?
There is no output schema, and the description does not explain the returned tree structure or format. It also fails to position the tool within the broader memory analysis workflow, which is relevant given the many sibling tools.
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?
The description adds little beyond the schema. It hints at the highlight_suspicious parameter but doesn't explain root_pid or image_path. With only 67% schema description coverage, the description should compensate more but does not.
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 the tool's function with a specific verb ('Get') and resource ('process tree'), elaborating on parent-child relationships. It also mentions the highlighting of suspicious processes, which distinguishes it from simple listing tools. However, it doesn't explicitly compare to memory_hunt_process_anomalies, which may also deal with suspicious processes.
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?
The description provides no guidance on when to use this tool over its siblings. There is no mention of alternatives, prerequisites, or use cases. The agent must infer that it's for viewing process hierarchy from a memory dump, but no explicit conditional usage is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_get_statusA
Get status and capabilities. Shows available engines (Rust/Vol3) and what analyses can be performed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly indicates a non-mutating status operation by using 'Get' and 'Shows', which implies no side effects. While not explicitly stating 'read-only', the behavior is inherently transparent for a status tool.
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?
The description is two short sentences with the main purpose front-loaded in the first sentence. Every word adds value, and there is no redundancy or filler.
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?
For a simple zero-parameter status tool with no output schema, the description adequately communicates the tool's function and expected output content. It could mention the return format or whether it supports any flags, but given the low complexity, the description is sufficiently 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?
The tool has zero parameters and the schema coverage is 100% (empty schema). According to the rubric, a baseline of 4 is appropriate when no parameters exist, and the description does not need to compensate for parameter documentation.
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 the tool's purpose: 'Get status and capabilities' with a specific verb and resource. It further details what it shows (available engines and analyses), distinguishing it from sibling analysis tools that perform actual memory forensics.
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?
The description implies usage as a precursor to selecting analysis tools, since it shows which engines and analyses are available. However, it does not explicitly state when not to use it or name alternative tools, but the context is clear enough for a status/capability check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to memory dump file | |
| include_normal | No | Include normal processes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions the use of Rust pslist+psscan and a Python analyzer, but it does not disclose whether the operation is read-only, what side effects may occur, what permissions are required, or what the output contains. This is insufficient for a tool that analyzes potentially sensitive memory dumps.
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?
The description is concise, consisting of two sentences. The first sentence states the purpose, while the second adds implementation detail. Both sentences are relevant, though the second is somewhat optional. It is appropriately sized without unnecessary fluff.
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?
For a tool with no output schema, the description gives a clear high-level functionality, but it lacks details about the return format, how anomalies are presented, or any caveats about memory dump compatibility. Given the complexity of memory analysis and the large sibling set, more context on expected outputs or limitations would be helpful.
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?
The schema provides 100% coverage for both parameters, so the baseline is 3. The description adds no additional parameter-specific meaning beyond what the schema already states; it does not explain how 'include_normal' affects results or how the image_path should be formatted.
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 the tool's purpose: detecting hidden processes, unusual parent-child relationships, and suspicious process attributes. It uses a specific verb ('Detect') and identifies the resource ('process anomalies'). However, it does not explicitly distinguish itself from sibling tools like memory_get_process_tree or memory_find_injected_code, though the focus on 'hidden processes' and 'suspicious attributes' differentiates it to some extent.
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?
The description implies usage for process anomaly detection, but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or scenarios where other tools would be more appropriate. No guidance on prerequisites (e.g., memory dump format) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_list_dumpable_filesC
List files that can be extracted from memory cache.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Filter by process ID | |
| image_path | Yes | Path to memory dump file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It indicates a read-only listing operation but doesn't mention any side effects, permissions, output format, or interaction with the memory image. The agent gets minimal safety or behavior information.
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?
The description is a single clear sentence, front-loaded with the action. It's concise and free of fluff, though it could include more useful information without sacrificing brevity.
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?
With no annotations, no output schema, and a terse description, the tool lacks context about expected outputs, use cases, and how the pid filter works. While the core function is clear, the overall context is insufficient for confident tool selection.
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 description coverage is 100%, and the schema already explains both parameters. The description adds no additional parameter context, so it meets the baseline but doesn't enhance 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 uses a specific verb ('list') and resource ('files that can be extracted from memory cache'), clearly conveying the tool's function. It doesn't explicitly differentiate from sibling tools like memory_list_sessions or memory_list_plugins, but the resource is distinct enough.
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?
No guidance is provided on when to use this tool versus alternatives such as memory_dump_process or memory_list_plugins. The description only states what it does, not the context or preconditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_list_pluginsB
List all available plugins (Rust + Vol3).
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to memory dump file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool lists, but does not describe that it reads the memory dump, whether it may be slow, or what constitutes 'available' plugins. This leaves significant behavioral aspects undefined.
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?
The description is a single, concise sentence that conveys the core purpose without any filler. The 'Rust + Vol3' detail adds value and does not bloat the text.
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?
The description is too terse for an agent to fully understand the tool's context. It does not disclose the return format, which is critical since no output schema exists, nor does it explain what 'available' means in relation to the image_path. Sibling tools exist that could confuse selection, and the description offers no differentiation.
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?
The input schema has 100% description coverage for the single parameter image_path ('Path to memory dump file'). The description adds no additional semantics beyond the schema, so the baseline of 3 applies.
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 uses a specific verb ('List') and resource ('available plugins'), clearly stating the tool's function. The parenthetical '(Rust + Vol3)' adds specificity about plugin types, and the action of listing is distinct from running plugins (as seen in the sibling name memory_run_plugin).
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention that this should be used for enumeration before running plugins, nor does it contrast with sibling tools like memory_run_plugin or memory_get_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_list_sessionsA
List all active memory analysis sessions. Shows session IDs, image paths, and engine status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. 'List all' implies a read-only operation with no destructive side effects, but it does not explicitly state whether the operation is safe or if any system state changes. It also does not mention potential performance implications or pagination; the description is minimal but not misleading.
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?
Two short sentences convey the full purpose and output fields without any redundancy or filler. The information is front-loaded with the primary action and resource.
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 the simplicity of the tool (no parameters, no output schema), the description sufficiently covers what the tool returns. It names the key data present in a session. It could briefly explain what an 'active session' means, but this is a minor gap for such a simple tool.
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?
The tool takes zero parameters, and the description correctly states 'all' sessions, implying no filtering is needed. Since the schema is empty, there is nothing to explain, so the description adds appropriate clarity relative to the 0-parameter design.
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 uses a specific verb and resource: 'List all active memory analysis sessions' and further specifies the output fields (session IDs, image paths, engine status). This clearly distinguishes it from sibling analysis tools like memory_analyze_image or memory_full_triage, which perform different actions.
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?
The phrase 'List all active' establishes a clear use case: retrieving an overview of current sessions. It does not explicitly exclude alternatives, but the context of being a listing tool among more analytical siblings implies when it is appropriate. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Filter by PID | |
| filter | No | Case-insensitive substring filter applied to results before returning. Useful for large result sets like filescan. | |
| params | No | Additional plugin parameters | |
| plugin | Yes | Plugin name (e.g., 'pslist', 'malfind', 'filescan') | |
| image_path | Yes | Path to memory dump file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description reveals important behavioral traits: tiered plugin performance (Rust vs Vol3), automatic name resolution and fallback failures, server-side filtering to avoid truncation, and the exact parameter structure for 'search'. It doesn't mention output format, but for a plugin runner that varies and is not strictly required.
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?
Three sentences: the first states purpose, the second explains plugin naming conventions, and the third gives usage tips. Each sentence provides essential operational detail with no filler, and key information is front-loaded.
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 the tool's complexity (5 parameters, nested 'params', no output schema, no annotations), the description covers critical aspects: plugin tiers, name resolution fallback, filter usage, and search parameters. It omits mention of 'pid', but that is a simple filter and self-explanatory in the schema. The lack of return-value description is mitigated by the variability across plugins.
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 100%, giving baseline 3. The description adds meaning by explaining how to use 'filter' (case-insensitive, server-side, avoids truncation) and detailing the JSON structure for 'params' when using search plugins, which goes beyond the schema's generic 'Additional plugin parameters'.
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 starts with a clear action: 'Run a forensics plugin,' identifying the specific resource (memory image) and the tool's role as a generic plugin executor. It distinguishes from sibling tools by listing plugin categories and examples, making its purpose unambiguous.
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?
Provides concrete guidance on when to use short names vs. full Vol3 paths, and instructs use of the 'filter' and 'params' parameters for specific scenarios like large result sets or search plugins. However, it doesn't explicitly compare to sibling specialized tools like 'memory_full_triage' or 'memory_hunt_process_anomalies', so exclusion guidance is implicit.
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.
15 tool updates
v1.2.2- First observed
memory_analyze_image - First observed
memory_dump_process - First observed
memory_dump_vad - First observed
memory_extract_credentials - First observed
memory_find_c2_connections - First observed
memory_find_injected_code - First observed
memory_full_triage - First observed
memory_get_command_history - First observed
memory_get_process_tree - First observed
memory_get_status - First observed
memory_hunt_process_anomalies - First observed
memory_list_dumpable_files - First observed
memory_list_plugins - First observed
memory_list_sessions - First observed
memory_run_plugin
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
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
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
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
- AlicenseNot gradedqualityFmaintenanceEnables automated memory forensics analysis using Volatility 3, supporting Windows, Linux, and macOS memory dumps through a modular plugin interface.1MIT
- AlicenseBqualityCmaintenanceComprehensive forensic analysis MCP server enabling AI agents to analyze files, Chromium and Firefox browser artifacts, with VirusTotal, DIE, Binwalk integrations.51MIT