Install
$ agentstack add mcp-nedlir-mcpwner ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
MCPwner
Beware the Badger Model Context Protocol server for autonomous security research
[](https://www.docker.com/) [](https://modelcontextprotocol.io) [](https://www.python.org/) [](LICENSE.txt)
Compatible with:
[](#installation) [](#installation) [](#installation) [](#installation) [](#installation)
Table of Contents
- [Overview](#overview)
- [Workflow](#workflow)
- [Integrated Tools](#integrated-tools)
- [Installation](#installation)
- [Documentation](#documentation)
- [Architecture](#architecture)
- [Data Persistence](#data-persistence)
- [License](#license)
Overview
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 for agent-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 MCPs here.
Workflow
MCPwner is the tool server; your LLM agent is the brain. A typical deep-research engagement:
| Phase | What happens | MCPwner tools used | | ------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Workspace | Clone target, detect stack | create_workspace, detect_languages | | Discover | Broad scan for known patterns | run_sast_scan, run_sca_scan, run_secrets_scan, run_reconnaissance_chain, execute_query | | Triage | Kill false positives, prove reachability | index_code_facts, query_code_facts, execute_query (custom CodeQL) | | Research | Hunt novel bugs via diffs and variant analysis | diff_discovery, run_fuzzing_scan, custom CodeQL | | Prove | Empirical validation with deterministic oracles | run_poc_scan (sandbox), run_dast_scan, run_utilities_scan (chromium) | | Report | Only oracle-verified findings ship | upsert_finding, generate_report |
The ledger uses deep-merge upserts, so a later phase's review verdict never clobbers the earlier poc data (and vice-versa) - and it stays consistent if the agent's context is reset mid-engagement.
Integrated Tools
Reconnaissance
| | | | | | | :------------------------------------------------------------: | :-----------------------------------------------: | :--------------------------------------: | :---------------------------------------------------------: | :--------------------------------------: | | Subfinder | Amass | Nmap | Masscan | ffuf |
| | | | | | | :------------------------------------------------------: | :----------------------------------------------------: | :------------------------------------------------------: | :----------------------------------------------------------------------------------------------: | :------------------------------------------: | | bbot | httpx | Katana | gau | Arjun |
| | | | :------------------------------------------------------: | :-------------------------------------------------------: | | wafw00f | Kiterunner |
Static Application Security Testing (SAST)
| | | | | | | :--------------------------------------------: | :-----------------------------------------: | :--------------------------------------------: | :-------------------------------------------: | :-----------------------------------------------: | | CodeQL | Psalm | Gosec | Bandit | Semgrep |
| | | | | | | | :-------------------------------------------------------: | :------------------------------------: | :---------------------------------------------------------: | :-------------------------------------------: | :-------------------------------------------------: | :--------------------------------------------------: | | Brakeman | PMD | NodeJsScan | Joern | YASA | OpenGrep |
Source Fuzzing
| | | | | | :----------------------------------------------: | :-------------------------------------------------------------: | :-------------------------------------------------------------------: | :---------------------------------------------------: | | Atheris | Jazzer | Jazzer.js | PHP-Fuzzer |
Secrets Scanning
| | | | | | | :-----------------------------------------------------: | :-------------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | | Gitleaks | TruffleHog | detect-secrets | Whispers | Hawk-Eye |
Software Composition Analysis (SCA)
| | | | | | :-------------------------------------------: | :-----------------------------------------: | :------------------------------------------------------: | :----------------------------------------------------: | | Grype | Syft | OSV-Scanner | Retire.js |
Infrastructure & IaC Security
| | | | | | | :----------------------------------------------------: | :-------------------------------------------: | :---------------------------------------------------: | :------------------------------------------------: | :--------------------------------------------------: | | Checkov | KICS | Terrascan | TFSec | Hadolint |
Dynamic Application Security Testing (DAST)
| | | | | | | :---------------------------------------------------: | :-------------------------------------------------: | :---------------------------------------------------: | :--------------------------------------------: | :-------------------------------------------------: | | sqlmap | NoSQLMap | Commix | Dalfox | SSTImap |
| | | | | :---------------------------------------------------: | :-------------------------------------------------: | :--------------------------------------------------------------: | | SSRFmap | jwttool | interactsh |
Utilities
| | | | | | | :---------------------------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------: | :------------------------------------------------: | :-------------------------------------------------------------------: | | Linguist | WireMock | Mitmproxy | aiohttp | Chromium w. Playwright |
PoC Validation
| PoC-Script Sandbox | | :-------------------------: | | Deterministic oracle runner |
The PoC sandbox runs agent-authored Python/bash exploit scripts inside the target network and returns a deterministic 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.
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
- Clone the repository:
``bash git clone https://github.com/nedlir/mcpwner.git cd mcpwner ``
- Configure the server:
``bash cp .env.example .env cp config/config.yaml.example config/config.yaml ``
- Start the services:
``bash docker compose up -d --build ``
- Verify services are running:
``bash docker compose ps ``
Connect Your IDE
Once Docker containers are running, add MCPwner to your MCP client.
Dynamic Tool Registration: MCPwner uses Docker Compose profiles for opt-in tool categories. The .env file's COMPOSE_PROFILES variable 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 the dast and poc profiles.
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 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.
Scanning Local Projects
Mount your projects into the container by adding a volume in docker-compose.yaml:
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Then use create_workspace with source_type="local" and source="/mnt/projects/my-project".
Documentation
Additional guides live in the project wiki:
- Quickstart - start the tool fleet with
COMPOSE_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? See [CONTRIBUTING.md](CONTRIBUTING.md) for code style, pre-commit hooks, and tests.
Architecture
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]
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:#
…
## Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [nedlir](https://github.com/nedlir)
- **Source:** [nedlir/MCPwner](https://github.com/nedlir/MCPwner)
- **License:** Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.