create_workspaceLABSCO SUMMARY
The interesting part is not the tool count, it is the ledger rule: a finding only becomes a report once a script proved it.
Scanners produce candidates, and an agent left alone with them writes confident nonsense. Here every hypothesis has to survive a PoC run in a sandbox that answers pass or fail on its own terms, and the ledger keeps the recon, proof and review verdicts in separate lanes so one phase cannot quietly rewrite another. Expect to feed it a real machine — this is a Docker stack of security images, not an npx one-liner.
What it is
A security-research server that fronts 55+ containerised tools — SAST, SCA, secrets, IaC, recon, DAST, fuzzing, CodeQL, a headless browser, an out-of-band callback server and a PoC sandbox — behind one MCP interface.
What you get
- A workspace step that clones the target and detects its languages before anything scans
- Broad discovery in one pass: static analysis, dependency scanning, secrets, and a reconnaissance chain across subdomain, port, endpoint and parameter discovery
- CodeQL both ways — the built-in queries, and custom queries you write, run against an indexed fact base of the code
- Variant hunting: diff discovery across versions, and coverage-guided fuzzing on the source
- Empirical proof rather than assertion — a sandbox that runs agent-written Python or bash exploit scripts inside the target network and returns a deterministic pass or fail verdict from exit codes or explicit markers
- Dynamic testing against a running target, plus a Chromium-with-Playwright utility path for anything that needs a real browser
- A shared findings ledger with deep-merge upserts, so a later review verdict never overwrites the earlier proof data and the record survives the agent's context being reset
- Report generation restricted to findings an oracle verified
- An optional plugin system: a plugin adds Docker services, scanning rules and report templates, and its tools register themselves once the containers are healthy
Requirements
Docker Engine 20.10+ with Compose 2.0+, 8GB of RAM at minimum and 20GB of free disk, because the security tool images are large. Runs on Linux, macOS or Windows with WSL2, and Python 3.11+. Not on a package registry: clone the repository, copy the example .env and config.yaml, and bring the compose stack up. Plugins are switched on through PLUGINS and COMPOSE_PROFILES in .env.
Setup effort
Run a container — build the image from the repository, then point your client at it
USE CASES
Starting an engagement on an unfamiliar codebase
Clone it into a workspace, detect the stack, then run the broad static, dependency and secrets passes together.
Separating real bugs from scanner noise
Index the code facts and query them, then write a custom CodeQL query to prove the sink is actually reachable.
Hunting for something the scanners do not know about
Diff versions to find what changed, then fuzz the code paths that changed.
Proving a logic bug rather than asserting it
Have the agent write an exploit script and run it in the sandbox inside the target network for a pass or fail verdict.
Mapping the attack surface of a live host
Run the reconnaissance chain across subdomains, ports, endpoints and parameters before touching the application.
Writing up only what survived
Record each finding in the ledger as it progresses, then generate a report from the verified ones.
16 tools
Listed in project docs. Your client may show a different list.
detect_languagesrun_sast_scanrun_sca_scanrun_secrets_scanrun_reconnaissance_chainexecute_queryindex_code_factsquery_code_factsdiff_discoveryrun_fuzzing_scanrun_poc_scanrun_dast_scanrun_utilities_scanupsert_findinggenerate_reportBEFORE YOU INSTALL
What to know first
Tools you get
16 tools named in the project's documentation.
Requires
- docker on PATH
- Docker Engine 20.10+
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
Build the image from the repository, then point your client at it.
Server setup
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
cp .env.example .env
cp config/config.yaml.example config/config.yaml
docker compose up -d --buildMCP Clients
Claude Desktop, Cursor, Kiro, Other MCP clients
{
"mcpServers": {
"mcpwner": {
"command": "docker",
"args": [
"exec",
"-i",
"mcpwner-server",
"python",
"src/server.py"
],
"env": {}
}
}
}