MCPwner

by pigyon

Not rated
GitHub

About

Automated Security Vulnerabilities Pentesting

Details

Author
pigyon
Categories
Developer Tools, Security, Automation

Setup

Install MCPwner in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/pigyon/MCPwner

Follow the installation instructions in the repository README, then restart your MCP client.

Model Context Protocol server for autonomous security research

- Overview
-
Workflow
-
Integrated Tools
-
Plugins
-
Installation
-
Documentation
-
Architecture
-
Data Persistence
-
License

MCPwner is an MCP server that gives your LLM agent a full offensive-security toolkit. It exposes 55+ containerized tools through a single MCP interface - SAST, SCA, secrets, IaC, reconnaissance, DAST, coverage-guided fuzzing, CodeQL (builtin and custom queries), a headless browser, an OOB callback server, a PoC-script sandbox with deterministic oracles, and a persistent findings ledger.

The architecture is designed foragent-driven vulnerability research: a single agent session - model-agnostic (Claude, Cursor, Kiro, Gemini, or any MCP-capable coding agent) - works through the research phases (recon, code audit, PoC validation, adversarial review), recording every step in the shared findings ledger. Each finding progresses from hypothesis through empirical proof to verified report - "no exploit, no report."

Note: This project is under active development. Learn more about MCPshere.

MCPwner is the tool server; your LLM agent is the brain. A typical deep-research engagement:

The ledger uses deep-merge upserts, so a later phase'sreviewverdict never clobbers the earlierpocdata (and vice-versa) - and it stays consistent if the agent's context is reset mid-engagement.

Static Application Security Testing (SAST)

Dynamic Application Security Testing (DAST)

The PoC sandbox runs agent-authored Python/bash exploit scripts inside the target network and returns adeterministic oracle verdict(pass/fail based on exit code or explicit markers). This is how MCPwner proves logic bugs, IDOR/BOLA, race conditions, and access-control bypasses that off-the-shelf DAST cannot express.

MCPwner supports an optional plugin system for domain-specific tooling. Plugins add Docker services, custom scanning rules, and report templates without modifying the core. MCPwner works with or without any plugins installed.

PLUGINS=wp-scan COMPOSE_PROFILES=sast,dast,...,wp-scan

Use the compose wrapper to start services (auto-includes plugin compose files):

docker compose -f docker-compose.yaml -f plugins/wp-scan/docker-compose.yaml --profile wp-scan up -d

Plugin tools (e.g.,wpscan,phpggc) register automatically viamanifest.yamland appear as MCP tools when their containers are healthy.

A plugin is a directory underplugins/with:

- docker-compose.yaml— services (build contexts relative to project root for-fstacking)
- manifest.yaml— tool registration (name, category, config path, default URL)
- docker/— Dockerfiles and service code
- rules/— custom SAST rules (optional)
- templates/— report templates (optional)
- install.sh/uninstall.sh— setup scripts for external installations

Plugins can also live in a separate repository and be linked intoplugins/via symlink orinstall.sh.

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

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

git clone https://github.com/nedlir/mcpwner.git cd mcpwner
cp .env.example .env cp config/config.yaml.example config/config.yaml

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

Dynamic Tool Registration:MCPwner uses Docker Composeprofilesfor opt-in tool categories. The.envfile'sCOMPOSE_PROFILESvariable controls which containers start. The MCP server probes running containers at startup and registers only healthy tools - if a container is down, its tools simply don't appear. Linguist (language detection / code-facts index) runs unconditionally; the dynamic-testing utilities (Chromium, WireMock, mitmproxy, fuzzer) are opt-in and come up with thedastandpocprofiles.

One-Click Install (requires Docker running):

Add to your MCP configuration file (claude_desktop_config.json,mcp.json, etc.):

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

Restart your MCP client to load the new server configuration.

Mount your projects into the container by adding a volume indocker-compose.yaml:

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

Then usecreate_workspacewithsource_type="local"andsource="/mnt/projects/my-project".

Additional guides live in theproject wiki:

- Quickstart- start the tool fleet withCOMPOSE_PROFILESand wire the MCP server into your client.
-
Configuration-.env/COMPOSE_PROFILES,config.yaml, and the tool port map.
-
Troubleshooting- missing tools, unhealthy containers, and image-build failures.
-
Adding a tool- wire a new scanner container into the fleet and the tool registry.

Contributing? SeeCONTRIBUTING.mdfor code style, pre-commit hooks, and tests.

graph LR subgraph IDE[" "] LLM[🤖<br/>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] DAST[DAST Tools] PoC[PoC Sandbox] 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 Server -->|HTTP| DAST Server -->|HTTP| PoC 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 DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff style PoC fill:#DC2626,stroke:#991B1B,stroke-width:2px,color:#fff style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5

- Container isolation for security tool execution
- Standardized output (SARIF/JSON) for LLM consumption
- Dynamic tool registration - only healthy containers appear as tools
- Persistent findings ledger with deep-merge semantics across research phases
- Deterministic oracles for PoC validation (exit code, markers, OOB callbacks, XSS execution)

MCPwner is tool infrastructure. Asingle agent session- model-agnostic (Claude, Cursor, Kiro, Gemini, or any MCP-capable coding agent) - drives the whole engagement, running each phase itself (recon → API mapping → environment → code audit → vulnerability research → PoC → review) and recording progress in the findings ledger. There is no separate orchestration service or configuration file: MCPwner exposes tools, the agent supplies the workflow.

For a long, isolated sub-task - canonically, standing up and driving a live target environment in a container - the agent may optionally offload to a helper session if its host supports one, but the flow never depends on it.

MCPwner persists workspace metadata, CodeQL databases, and findings across container restarts using file-based storage in the shared Docker volume (/workspaces/.metadata/). The findings ledger is always available (no container health gate) - it's how the agent tracks findings across phases and recovers state after a context reset.

- delete_files=True, delete_metadata=False- Free disk space, preserve history
- delete_files=True, delete_metadata=True- Complete removal
- delete_files=False, delete_metadata=True- Remove from list, keep files

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

AI-powered QA harness that catches JS errors, accessibility failures, visual regressions, and security issues via Chrome DevTools MCP — no test scripts required.

Automated browser penetration testing to detect XSS and SQL vulnerabilities.

Browser automation via MCP for Chrome and Firefox

Bring the full power of BrowserStack’s Test Platform to your AI tools, making testing faster and easier for every developer and tester on your team.

Official Chrome DevTools MCP server for controlling and inspecting a live Chrome browser from coding agents such as Gemini, Claude, Cursor, and Copilot.

An AI-powered system that converts Acceptance Criteria (AC) from QA specifications into automated browser testing workflows.

Security scanner for MCP servers and AI agent tooling. Detects prompt injection, command injection, auth bypass, and excessive permissions.

An AI agent for the Playwright MCP server, enabling automated web testing and interaction.

Generate Playwright BDD tests, GitHub Actions and Azure Pipelines with business-rule traceability, focused CodeGraph context and persistent Engram memory.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.