Skip to main content
Glama
Ghosthunter5599

Forensics MCP Server

README.md
# Self-Assembling Forensic MCP Server (FastMCP / Python)

A modular Digital Forensics and Incident Response (DFIR) **Model Context Protocol (MCP)** server built with Python and FastMCP (`mcp>=2.0.0`).

It dynamically discovers host & container forensic utilities at startup and automatically self-assembles functional tools, resources, and triage prompts for local LLMs and AI agents (Ollama, Claude, Cursor, Antigravity, etc.).

---

## 🌟 Features

- šŸ” **Dynamic Capability Discovery**: Probes host environment paths, installed binaries (`exiftool`, `strings`, `volatility3`, `binwalk`, `tshark`, `objdump`, `gdb`, `yara`), and Docker runtimes. Missing tools are gracefully reported without crashing.
- 🧩 **Self-Assembling Tool Primitives**: Automatically registers only the tools available in the host environment.
- šŸ›”ļø **Air-Gapped & Offline Ready**: Built-in offline threat intelligence database with known sample signatures (EICAR, WannaCry, Mimikatz) for secure, zero-data-leakage incident response.
- šŸ“‹ **Tamper-Evident Chain of Custody**: Every tool execution, inspected artifact, SHA-256 checksum, and action parameter is cryptographically hashed and logged to an append-only ledger (`evidence/chain_of_custody.jsonl`).
- 🩺 **Self-Reporting Health & Resources**: Real-time capability matrix (`forensics://capabilities`), custody logs (`forensics://custody`), and system health (`forensics://health`).
- ⚔ **Dual Transport**: Supports standard STDIO for native MCP clients (Cursor, Claude, Antigravity) and SSE/HTTP for web LLM agents (Ollama, Open WebUI).

---

## šŸš€ Quick Start

### 1. Prerequisites
- Python 3.10+ (or [uv](https://docs.astral.sh/uv/))

### 2. Run the Server

#### Option A: Native STDIO Transport (For Local Agents / Cursor / Claude)
```bash
cd /home/b47m4n/Projects/forensics-mcp-framework
uv run src/server.py
```

#### Option B: SSE / HTTP Transport (For Web / Remote LLMs)
```bash
cd /home/b47m4n/Projects/forensics-mcp-framework
uv run src/server.py --transport sse --port 8000
```

---

## šŸ”Œ Connecting to Local LLMs & Agents

### 1. Antigravity / Claude / Cursor (`claude_desktop_config.json` / `mcp.json`)
```json
{
  "mcpServers": {
    "forensic-analyzer": {
      "command": "uv",
      "args": [
        "--directory",
        "/home/b47m4n/Projects/forensics-mcp-framework",
        "run",
        "src/server.py"
      ]
    }
  }
}
```

### 2. Local LLM via Ollama + MCP
Connect your local model (e.g. `llama3.1`, `qwen2.5-coder`) via SSE endpoint:
`http://localhost:8000/sse`

---

## šŸ› ļø Discovered Tool Catalog

| Tool | Category | Dynamic Condition | Description |
|---|---|---|---|
| `extract_metadata` | Metadata & Files | Always Available | Computes hashes (MD5/SHA256), EXIF tags, and detects MIME mismatches |
| `extract_strings` | Static Analysis | Always Available | Extracts printable ASCII & Unicode strings |
| `scan_iocs` | Threat Detection | Always Available | Scans for C2 URLs, IP addresses, Base64 blobs, command execution |
| `check_threat_intel` | Threat Intel | Always Available | Checks hashes against offline signatures and optional live APIs |
| `system_health_check` | Diagnostics | Always Available | Health status, storage check, and tool readiness |
| `windows_image_info` | Memory Forensics | `vol` or Docker | Volatility 3 `windows.info` |
| `windows_pslist` | Memory Forensics | `vol` or Docker | Volatility 3 `windows.pslist` |
| `windows_pstree` | Memory Forensics | `vol` or Docker | Volatility 3 `windows.pstree` |
| `windows_netscan` | Memory Forensics | `vol` or Docker | Volatility 3 `windows.netscan` |
| `windows_malfind` | Memory Forensics | `vol` or Docker | Volatility 3 `windows.malfind` (injected code) |
| `binwalk_scan` | File Carving | `binwalk` present | Firmware signature and filesystem carving |
| `pcap_analyze` | Network Forensics| `tshark` present | Dissects PCAP network packet captures |
| `binary_disassemble` | Reverse Eng | `objdump` present | Disassembles binary machine instructions |
| `gdb_inspect` | Debugging | `gdb` present | Automated batch debugging inspection |
| `yara_scan` | Signature Match | `yara` present | Scans evidence against YARA rule files |

---

## šŸ“‚ Project Architecture

```
forensics-mcp-framework/
ā”œā”€ā”€ pyproject.toml
ā”œā”€ā”€ .env.example
ā”œā”€ā”€ README.md
ā”œā”€ā”€ evidence/                  # Evidence locker & chain of custody ledger
│   ā”œā”€ā”€ suspect_photo.jpg
│   ā”œā”€ā”€ eicar_test.com
│   └── chain_of_custody.jsonl
└── src/
    ā”œā”€ā”€ server.py              # Master FastMCP bootstrap & dynamic assembler
    ā”œā”€ā”€ core/
    │   ā”œā”€ā”€ discovery.py       # Host & container capability scanner
    │   ā”œā”€ā”€ custody.py         # Tamper-evident append-only chain of custody
    │   └── health.py          # System diagnostics & health reporter
    ā”œā”€ā”€ tools/
    │   ā”œā”€ā”€ metadata.py        # ExifTool & MIME mismatch detector
    │   ā”œā”€ā”€ strings_ioc.py     # String & IOC scanner (IP, URL, Base64, shell)
    │   ā”œā”€ā”€ threat_intel.py    # Offline/online threat intelligence
    │   ā”œā”€ā”€ memory_vol.py      # Volatility 3 memory analysis engine
    │   └── dynamic_cli.py     # CLI wrappers (binwalk, tshark, objdump, gdb)
    ā”œā”€ā”€ resources/
    │   └── system_resources.py# MCP Resources
    └── prompts/
        └── triage_prompts.py  # Structured DFIR workflows
```

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct forensic task: system readiness, metadata extraction, string extraction, IOC scanning, and threat intel lookup. There is no functional overlap, and the descriptions clearly delineate their purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., system_health_check, extract_metadata, scan_iocs), using snake_case throughout. The naming is predictable and aligns with forensic terminology.

Tool Count5/5

Five tools is appropriate for a forensic server covering host readiness, file analysis, and threat detection. Each tool serves a necessary function without redundancy or gaps in the core workflow.

Completeness4/5

The toolset covers essential forensic steps: health check, metadata extraction, string extraction, IOC scanning, and threat intel. A minor gap is the absence of a tool for parsing specific artifact types (e.g., registry hives or logs), but the set is sufficient for basic evidence triage.

Maintenance

ActivityMaintained
ResponsivenessNo issues