# MCPwner

> Model Context Protocol server for autonomous vulnerability discovery

- **Type:** MCP server
- **Install:** `agentstack add mcp-pigyon-mcpwner`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Pigyon](https://agentstack.voostack.com/s/pigyon)
- **Installs:** 0
- **Category:** [Security](https://agentstack.voostack.com/c/security)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [Pigyon](https://github.com/Pigyon)
- **Source:** https://github.com/Pigyon/MCPwner

## Install

```sh
agentstack add mcp-pigyon-mcpwner
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

MCPwner
  
  Beware the Badger
  Model Context Protocol server for security research automation

[](https://www.docker.com/)
[](https://modelcontextprotocol.io)
[](https://www.python.org/)
[](LICENSE.txt)

**Compatible with:**

[](#installation)
[](#installation)
[](#installation)
[](#installation)
[](#installation)

---

## Overview

MCPwner is a Model Context Protocol (MCP) server that integrates security testing tools into LLM-driven workflows. It provides a unified interface for secret scanning, static analysis (SAST), software composition analysis (SCA), infrastructure-as-code (IaC) security, source fuzzing, reconnaissance, dynamic application security testing (DAST), and vulnerability research including 0-day discovery.

Instead of manually chaining tools and pasting outputs into your LLM, MCPwner standardizes and streams results directly into the model's working context. This enables continuous reasoning, correlation, and attack path discovery across the security research lifecycle - from mapping attack surfaces and identifying known vulnerabilities to uncovering novel attack vectors.

> **Note**: This project is under active development. Learn more about MCPs [here](https://modelcontextprotocol.io).

## Integrated Tools

## Reconnaissance

|                    |           |   |                   |   |
| :------------------------------------------------------------: | :-----------------------------------------------: | :--------------------------------------: | :---------------------------------------------------------: | :--------------------------------------: |
| [**Subfinder**](https://github.com/projectdiscovery/subfinder) | [**Amass**](https://github.com/owasp-amass/amass) | [**Nmap**](https://github.com/nmap/nmap) | [**Masscan**](https://github.com/robertdavidgraham/masscan) | [**ffuf**](https://github.com/ffuf/ffuf) |

|                 |                |               |            |            |
| :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------: | :------------------------------------------------: |
| [**bbot**](https://github.com/blacklanternsecurity/bbot) | [**httpx**](https://github.com/projectdiscovery/httpx) | [**Katana**](https://github.com/projectdiscovery/katana) | [**gau**](https://github.com/lc/gau) | [**Arjun**](https://github.com/s0md3v/Arjun) |

|                |                    |
| :------------------------------------------------------: | :-------------------------------------------------------------: |
| [**wafw00f**](https://github.com/EnableSecurity/wafw00f) | [**Kiterunner**](https://github.com/assetnote/kiterunner) |

## Static Application Security Testing (SAST) Scanning Tools

|       |     |        |      |         |
| :--------------------------------------------: | :-----------------------------------------: | :--------------------------------------------: | :-------------------------------------------: | :-----------------------------------------------: |
| [**CodeQL**](https://github.com/github/codeql) | [**Psalm**](https://github.com/vimeo/psalm) | [**Gosec**](https://github.com/securego/gosec) | [**Bandit**](https://github.com/PyCQA/bandit) | [**Semgrep**](https://github.com/semgrep/semgrep) |

|                |  |  |                |  |
| :-------------------------------------------------------: | :------------------------------------: | :-------------------------------------------: | :----------------------------------------------------: | :-------------------------------------: |
| [**Brakeman**](https://github.com/presidentbeef/brakeman) | [**PMD**](https://github.com/pmd/pmd)  | [**NodeJsScan**](https://github.com/ajinabraham/NodeJsScan) | [**Joern**](https://github.com/joernio/joern) | [**YASA**](https://github.com/antgroup/YASA-Engine) |

## Source Fuzzing

|  |  |  |  |
| :---: | :---: | :---: | :---: |
| [**Atheris**](https://github.com/google/atheris) | [**Jazzer**](https://github.com/CodeIntelligenceTesting/jazzer) | [**Jazzer.js**](https://github.com/CodeIntelligenceTesting/jazzer.js) | [**PHP-Fuzzer**](https://github.com/nikic/php-fuzzer) |

## Secrets Scanning Tools

|              |                    |             |             |            |
| :-----------------------------------------------------: | :-------------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: |
| [**Gitleaks**](https://github.com/zricethezav/gitleaks) | [**TruffleHog**](https://github.com/trufflesecurity/trufflehog) | [**detect-secrets**](https://github.com/Yelp/detect-secrets) | [**Whispers**](https://github.com/Skyscanner/whispers) | [**Hawk-Eye**](https://github.com/rohitcoder/hawk-eye) |

## Software Composition Analysis (SCA) Tools

|  |  |  |  |
| :--------------------------------------: | :-------------------------------------: | :--------------------------------------------: | :-----------------------------------------: |
| [**Grype**](https://github.com/anchore/grype) | [**Syft**](https://github.com/anchore/syft) | [**OSV-Scanner**](https://github.com/google/osv-scanner) | [**Retire.js**](https://github.com/RetireJS/retire.js) |

## Infrastructure & IaC Security

|  |  |  |  |  |
| :----------------------------------------------------: | :-------------------------------------------: | :---------------------------------------------------: | :------------------------------------------------: | :--------------------------------------------------: |
| [**Checkov**](https://github.com/bridgecrewio/checkov) | [**KICS**](https://github.com/checkmarx/kics) | [**Terrascan**](https://github.com/tenable/terrascan) | [**TFSec**](https://github.com/aquasecurity/tfsec) | [**Hadolint**](https://github.com/hadolint/hadolint) |

## Utilities

|  |  |  |  |  |
| :-----------------------------------------: | :-----------------------------------------: | :------------------------------------------: | :----------------------------------------: | :-------------------------------------------: |
| [**Linguist**](https://github.com/github-linguist/linguist) | [**WireMock**](https://github.com/wiremock/wiremock) | [**Mitmproxy**](https://github.com/mitmproxy/mitmproxy) | [**aiohttp**](https://github.com/aio-libs/aiohttp) | [**Chromium w. Playwright**](https://github.com/microsoft/playwright) |

## Future Tools

The following tools are planned for future releases. Logos will be added as each tool is integrated.

### Dynamic Application Security Testing (DAST)

Exploitation and verification tools that run against a live target and produce proof of a vulnerability:

- **sqlmap** - SQL injection detection and exploitation (data extraction)
- **NoSQLMap** - NoSQL injection (MongoDB, CouchDB)
- **Commix** - command injection exploitation
- **Dalfox** - reflected, stored, and DOM-based XSS
- **SSTImap** - server-side template injection and code injection (RCE)
- **SSRFmap** - server-side request forgery exploitation
- **jwt_tool** - JWT tampering and authentication bypass
- **interactsh** - OOB interaction server/client for confirming blind vulnerabilities (blind SSRF, blind RCE, blind SQLi, XXE, DNS exfiltration)

### Insecure Deserialization

Gadget-chain and payload generators for weaponizing deserialization sinks identified during SAST. Mature gadget-chain ecosystems exist for Java, .NET, and PHP; Python is covered via malicious-pickle generation (Ruby/Node deserialization is payload-based and lives in the Payloads corpus below):

- **ysoserial** - Java
- **ysoserial.net** - .NET
- **PHPGGC** - PHP
- **marshalsec** - JVM marshallers/unmarshallers
- **Fickling** - Python (pickle)

### HTTP Request Smuggling

- **smuggler** - HTTP/1.1 request smuggling / desync (CL.TE, TE.CL, TE.TE)
- **h2csmuggler** - HTTP/2 cleartext (h2c) upgrade smuggling (distinct from HTTP/2 desync)
- **http2smugl** - HTTP/2 request smuggling / desync

### Payloads

Curated payload and wordlist corpora to back the tools above:

- **SecLists** - aggregate of fuzzing payloads, credentials, and injection lists
- **PayloadsAllTheThings** - attack payloads and bypasses organized by vulnerability class
- **FuzzDB** - fault-injection primitives and predictable resource patterns

## Usage Examples

### Automated Enumeration Pipeline

```
"Enumerate and scan example.com"
→ MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
```

### Scan a GitHub Repository for Secrets

```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
```

### Security Audit

```
"Run a security audit on my Python project"
→ MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
```

### Attack Path Analysis

```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
```

## Installation

### Prerequisites

**System Requirements:**

- Docker Engine 20.10+ and Docker Compose 2.0+
- 8GB RAM minimum (16GB recommended for running multiple tools)
- 20GB free disk space (security tool images are large)
- Supported platforms: Linux, macOS, Windows (with WSL2)

**MCP Client:**

- Claude Desktop, Cursor, Kiro, or any MCP-compatible client

### Setup

1. **Clone the repository**:

   ```bash
   git clone https://github.com/nedlir/mcpwner.git
   cd mcpwner
   ```

2. **Configure the server**:

   ```bash
   cp config/config.yaml.example config/config.yaml
   # Edit config/config.yaml as needed
   ```

3. **Start the services**:

   ```bash
   docker-compose up -d --build
   ```

4. **Verify services are running**:
   ```bash
   docker-compose ps
   ```

### Connect Your IDE

Once Docker containers are running, add MCPwner to your MCP client:

**Configuration File Locations:**

- Claude Desktop: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
- Cursor/Kiro: `mcp.json` in your project or settings directory

**One-Click Install (requires Docker running):**

[](https://kiro.dev/launch/mcp/add?name=mcpwner&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22exec%22%2C%22-i%22%2C%22mcpwner-server%22%2C%22python%22%2C%22src%2Fserver.py%22%5D%7D)
[](https://cursor.com/en/install-mcp?name=mcpwner&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJleGVjIiwiLWkiLCJtY3B3bmVyLXNlcnZlciIsInB5dGhvbiIsInNyYy9zZXJ2ZXIucHkiXX0%3D)
[](https://claude.ai/install-mcp?name=mcpwner&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22exec%22%2C%22-i%22%2C%22mcpwner-server%22%2C%22python%22%2C%22src%2Fserver.py%22%5D%7D)
[](https://vscode.dev/redirect/mcp/install?name=mcpwner&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22exec%22%2C%22-i%22%2C%22mcpwner-server%22%2C%22python%22%2C%22src%2Fserver.py%22%5D%7D)
[](https://windsurf.ai/install-mcp?name=mcpwner&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22exec%22%2C%22-i%22%2C%22mcpwner-server%22%2C%22python%22%2C%22src%2Fserver.py%22%5D%7D)

**Manual Configuration:**

Add the following to your MCP configuration file:

```json
{
  "mcpServers": {
    "mcpwner": {
      "command": "docker",
      "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"],
      "env": {}
    }
  }
}
```

Restart your MCP client to load the new server configuration.

### Scanning Local Projects

To scan projects from your host machine, mount them into the container by adding a volume in `docker-compose.yaml`:

```yaml
services:
  mcpwner:
    volumes:
      - /path/to/your/projects:/mnt/projects:ro
```

Then use the `create_workspace` tool with:

- `source_type="local"`
- `source="/mnt/projects/my-project"`

## Data Persistence

MCPwner automatically persists workspace and CodeQL database metadata across container restarts using file-based storage in the shared Docker volume (`/workspaces/.metadata/`). No configuration required - the system loads existing data on startup and saves after every operation using atomic writes to prevent corruption.

**Workspace Cleanup Control:**

The `cleanup_workspace` tool provides granular control:

- `delete_files=True, delete_metadata=False` - Free disk space but preserve workspace history (recommended)
- `delete_files=True, delete_metadata=True` - Complete removal of workspace and metadata
- `delete_files=False, delete_metadata=True` - Remove from list but keep files on disk

**Backup:**

```bash
# Backup entire workspaces volume
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup \
  alpine tar czf /backup/workspaces-backup.tar.gz /data

# Restore volume
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup \
  alpine tar xzf /backup/workspaces-backup.tar.gz -C /
```

## Architecture

MCPwner uses HTTP-based communication between containers to support future remote deployments. While currently optimized for local usage, the architecture can be adapted for remote server deployments with minimal modifications.

**Design Principles:**

- Container isolation for security tool execution
- Standardized output formats for LLM consumption (SARIF/JSON)
- Extensible plugin architecture for new tools
- Stateless API (memories are managed by user)

**Architecture Overview:**

```mermaid
graph LR
    subgraph IDE[" "]
        LLM[🤖LLM]
        Client[MCP Client]
        LLM -.-> Client
    end

    Server[MCPwner Server]

    SAST[SAST Tools]
    Secrets[Secrets Scanning]
    SCA[SCA Tools]
    Recon[Reconnaissance]
    CodeQL[CodeQL Service]
    Linguist[Language Detection]
    Utilities[Utilities]
    IaC[IaC Security]
    Fuzzing[Source Fuzzing]

    Client -->|JSON-RPC 2.0| Server
    Server -->|HTTP| SAST
    Server -->|HTTP| Secrets
    Server -->|HTTP| SCA
    Server -->|HTTP| Recon
    Server -->|HTTP| CodeQL
    Server -->|HTTP| Linguist
    Server -->|HTTP| Utilities
    Server -->|HTTP| IaC
    Server -->|HTTP| Fuzzing

    style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
    style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
    style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
    style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
    style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
    style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
    style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
    style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
    style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
    style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
    style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
    style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
    style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
```

## Available MCP Tools

MCPwner exposes the following tools through the MCP interface:

**Workspace Management:**

- `create_workspace` - Initialize scanning workspace from local path, Git URL, or GitHub repo
- `list_workspaces` - List all available workspaces
- `cleanup_workspace` - Remove workspace and associated data

**SAST (Static Analysis):**

- `run_sast_scan` - Run static analysis tools (Semgrep, Bandit, Gosec, Brakeman, PMD, Psalm, NodeJsScan, Joern, YASA)
- `get_sast_report` - Retrieve SAST scan results
- `sast_list_tools` - List available SAST tools

**Secrets Detection:**

- `run_secrets_scan` - Run secrets scanning tools (Gitleaks, TruffleHog, Whispers, detect-secrets, Hawk-Eye)
- `get_secrets_report` - Retrieve secrets scan results
- `secrets_list_tools` - List available secrets scanning tools

**SCA (Software Composition Analysis):**

- `run_sca_scan` - Analyze dependencies for vulnerabilities (Grype, Syft, OSV-Scanner, Reti

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Pigyon](https://github.com/Pigyon)
- **Source:** [Pigyon/MCPwner](https://github.com/Pigyon/MCPwner)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-pigyon-mcpwner
- Seller: https://agentstack.voostack.com/s/pigyon
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
