关于 Mcpwner
MCPwner 是一个 MCP 服务,将多种安全测试工具整合到由 LLM 驱动的工作流中,用于自主安全研究。适用于希望由 Agent 完成侦察、代码审计与漏洞验证的安全研究人员,所有发现记录在共享的发现账本中。
主要功能
- 01集成 SAST、SCA、密钥扫描和 IaC 安全工具
- 02侦察、DAST 与覆盖率引导模糊测试
- 03CodeQL 内置及自定义查询
- 04PoC 脚本沙箱与确定性判定
- 05持久化的发现账本,支持深度合并更新
适用场景
- 01对代码库进行 SAST 与 SCA 扫描并汇总结果
- 02由 Agent 验证漏洞的可利用性并生成报告
- 03在授权的安全测试中进行 Web 应用动态测试
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 55 个以上容器化安全工具,并提供 upsert_finding 与 generate_report 等工具管理发现记录。
详细介绍
目录
概述
MCPwner 是一个 MCP 服务,为你的大模型 Agent 提供一套完整的攻防安全工具包。它通过单一 MCP 接口提供 55+ 个容器化工具,包括 SAST、SCA、秘密信息、IaC、侦察、DAST、覆盖率引导的模糊测试、CodeQL(内置和自定义查询)、无头浏览器、OOB 回调服务、带确定性预言机的 PoC 脚本沙箱,以及持久化漏洞发现记录簿。
该架构专为由 Agent 驱动的漏洞研究而设计:单个 Agent 会话——与模型无关(Claude、Cursor、Kiro、Gemini 或任何支持 MCP 的编码 Agent)——按研究阶段(侦察、代码审计、PoC 验证、对抗性审查)推进,并将每一步记录到共享的漏洞发现记录簿中。每项发现都会从假设逐步发展为经实证的证明,最终形成已验证的报告——“没有漏洞利用,就没有报告。”
注意:此项目仍在积极开发中。点击此处了解更多 MCP 信息。
工作流
MCPwner 是工具服务;你的大模型 Agent 是大脑。一次典型的深度研究工作:
| 阶段 | 工作内容 | 使用的 MCPwner 工具 |
|---|---|---|
| 工作区 | 克隆目标,检测技术栈 | create_workspace、detect_languages |
| 发现 | 扫描已知模式 | run_sast_scan、run_sca_scan、run_secrets_scan、run_reconnaissance_chain、execute_query |
| 分类 | 排除误报,验证可达性 | index_code_facts、query_code_facts、execute_query(自定义 CodeQL) |
| 研究 | 通过差异和变体分析寻找新漏洞 | diff_discovery、run_fuzzing_scan、自定义 CodeQL |
| 验证 | 使用确定性预言机进行实证验证 | run_poc_scan(沙箱)、run_dast_scan、run_utilities_scan(chromium) |
| 报告 | 仅提交经预言机验证的发现 | upsert_finding、generate_report |
台账使用深度合并式 upsert,因此后续阶段的 review 判定不会覆盖前一阶段的 poc 数据(反之亦然);即使 Agent 在工作过程中重置上下文,数据也能保持一致。
集成工具
侦察
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Subfinder | Amass | Nmap | Masscan | ffuf |
![]() | ![]() | ![]() | ![]() | |
|---|---|---|---|---|
| bbot | httpx | Katana | gau | Arjun |
![]() | ![]() |
|---|---|
| wafw00f | Kiterunner |
静态应用安全测试(SAST)
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| CodeQL | Psalm | Gosec | Bandit | Semgrep |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|---|
| Brakeman | PMD | NodeJsScan | Joern | YASA | OpenGrep |
源码模糊测试
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Atheris | Jazzer | Jazzer.js | PHP-Fuzzer |
密钥扫描
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Gitleaks | TruffleHog | detect-secrets | Whispers | Hawk-Eye |
软件组成分析(SCA)
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Grype | Syft | OSV-Scanner | Retire.js |
基础设施与 IaC 安全
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Checkov | KICS | Terrascan | TFSec | Hadolint |
动态应用安全测试(DAST)
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| sqlmap | NoSQLMap | Commix | Dalfox | SSTImap |
![]() | ![]() | ![]() |
|---|---|---|
| SSRFmap | jwt_tool | interactsh |
实用工具
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Linguist | WireMock | Mitmproxy | aiohttp | Chromium w. Playwright |
PoC 验证
| PoC 脚本沙箱 |
|---|
| 确定性判定运行器 |
PoC 沙箱会在目标网络中运行由 Agent 编写的 Python/bash 漏洞利用脚本,并返回确定性的判定结果(根据退出代码或显式标记判定通过/失败)。MCPwner 通过这种方式验证逻辑漏洞、IDOR/BOLA、竞态条件和访问控制绕过,而这些问题无法通过现成的 DAST 工具来表达。
插件
MCPwner 支持可选的插件系统,用于提供特定领域的工具。插件可添加 Docker 服务、自定义扫描规则和报告模板,而无需修改核心代码。无论是否安装任何插件,MCPwner 都能正常工作。
可用插件
| 插件 | 描述 | 添加的服务 |
|---|---|---|
| wp-scan | WordPress 安全扫描 — 包含 Xdebug 的 WP 测试环境、WPScan 枚举、PHPGGC 反序列化链、CMSeeK CMS 检测,以及适用于 WP 的 semgrep/joern 规则 | wp-range、wp-db、wpscan-scanner、phpggc-service、cmseek-service |
启用插件
-
将插件名称添加到
.env:PLUGINS=wp-scan COMPOSE_PROFILES=sast,dast,...,wp-scan -
使用 compose 包装脚本启动服务(会自动包含插件 compose 文件):
./scripts/compose.sh up -d --build或手动叠加
-f:docker compose -f docker-compose.yaml -f plugins/wp-scan/docker-compose.yaml --profile wp-scan up -d
插件工具(例如 wpscan、phpggc)会通过 manifest.yaml 自动注册,并在其容器正常运行时作为 MCP 工具出现。
编写插件
插件是 plugins/ 下的一个目录,包含:
docker-compose.yaml— 服务(使用-f叠加时,构建上下文相对于项目根目录)manifest.yaml— 工具注册信息(名称、类别、配置路径、默认 URL)docker/— Dockerfile 和服务代码rules/— 自定义 SAST 规则(可选)templates/— 报告模板(可选)install.sh/uninstall.sh— 外部安装的设置脚本
插件也可以位于单独的代码库中,并通过符号链接或 install.sh 链接到 plugins/。
安装
前置条件
系统要求:
- Docker Engine 20.10+ 和 Docker Compose 2.0+
- 至少 8GB RAM(建议 16GB,以运行多个工具)
- 20GB 可用磁盘空间(安全工具镜像体积较大)
- 支持的平台:Linux、macOS、Windows(搭配 WSL2)
MCP 客户端:
- Claude Desktop、Cursor、Kiro 或任何兼容 MCP 的客户端
设置
-
克隆代码库:
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 --build -
确认服务正在运行:
docker compose ps
连接 IDE
Docker 容器运行后,将 MCPwner 添加到你的 MCP 客户端。
动态工具注册: MCPwner 使用 Docker Compose profiles,按需启用工具类别。.env 文件中的 COMPOSE_PROFILES 变量控制启动哪些容器。MCP 服务会在启动时探测正在运行的容器,并仅注册健康的工具——如果某个容器未运行,其工具就不会显示。Linguist(语言检测 / 代码事实索引)始终运行;动态测试工具(Chromium、WireMock、mitmproxy、fuzzer)为可选工具,通过 dast 和 poc 配置文件启动。
一键安装(需要 Docker 正在运行):
手动配置:
将以下内容添加到你的 MCP 配置文件(claude_desktop_config.json、mcp.json 等):
{
"mcpServers": {
"mcpwner": {
"command": "docker",
"args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"],
"env": {}
}
}
}
重启 MCP 客户端以加载新的服务配置。
扫描本地项目
在 docker-compose.yaml 中添加卷,将项目挂载到容器中:
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
然后使用 create_workspace,并设置 source_type="local" 和 source="/mnt/projects/my-project"。
文档
更多指南请参阅项目 Wiki:
- 快速入门 - 使用
COMPOSE_PROFILES启动工具集群,并将 MCP 服务接入客户端。 - 配置 -
.env/COMPOSE_PROFILES、config.yaml和工具端口映射。 - 故障排除 - 工具缺失、容器不健康以及镜像构建失败。
- 添加工具 - 将新的扫描器容器接入工具集群和工具注册表。
想要贡献?请参阅 CONTRIBUTING.md,了解代码风格、pre-commit 钩子和测试。
架构
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
设计原则:
- 通过容器隔离安全工具的执行
- 使用标准化输出(SARIF/JSON),便于大模型使用
- 动态工具注册——仅将健康的容器显示为工具
- 在各研究阶段使用深度合并语义持久保存发现记录
- 使用确定性判定器验证 PoC(退出代码、标记、OOB 回调、XSS 执行)
Agent 工作流
MCPwner 是工具基础设施。单个 Agent 会话——与模型无关(Claude、Cursor、Kiro、Gemini 或任何支持 MCP 的编码 Agent)——负责驱动整个工作流程,自行运行各个阶段(侦察 → API 映射 → 环境 → 代码审计 → 漏洞研究 → PoC → 审查),并在发现记录中记录进度。这里没有单独的编排服务或配置文件:MCPwner 提供工具,Agent 负责执行工作流。
对于耗时较长且独立的子任务——典型例子是在容器中搭建并驱动实时目标环境——如果宿主环境支持,Agent 可以选择交由辅助会话处理,但整个流程并不依赖它。
数据持久化
MCPwner 通过共享 Docker 卷(/workspaces/.metadata/)中的基于文件的存储,在容器重启后保留工作区元数据、CodeQL 数据库和发现记录。发现记录始终可用(不受容器健康状态门控限制),Agent 依靠它在不同阶段追踪发现,并在上下文重置后恢复状态。
工作区清理:
delete_files=True, delete_metadata=False- 释放磁盘空间,保留历史记录delete_files=True, delete_metadata=True- 完全移除delete_files=False, delete_metadata=True- 从列表中移除,但保留文件
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。




















































