mcpField
M
Mcpwner

Mcpwner

github.com/Pigyon其他5710 周前更新

关于 Mcpwner

MCPwner 是一个 MCP 服务,将多种安全测试工具整合到由 LLM 驱动的工作流中,用于自主安全研究。适用于希望由 Agent 完成侦察、代码审计与漏洞验证的安全研究人员,所有发现记录在共享的发现账本中。

主要功能

  1. 01集成 SAST、SCA、密钥扫描和 IaC 安全工具
  2. 02侦察、DAST 与覆盖率引导模糊测试
  3. 03CodeQL 内置及自定义查询
  4. 04PoC 脚本沙箱与确定性判定
  5. 05持久化的发现账本,支持深度合并更新

适用场景

  1. 01对代码库进行 SAST 与 SCA 扫描并汇总结果
  2. 02由 Agent 验证漏洞的可利用性并生成报告
  3. 03在授权的安全测试中进行 Web 应用动态测试

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 55 个以上容器化安全工具,并提供 upsert_finding 与 generate_report 等工具管理发现记录。

详细介绍

MCPwner

MCPwner 獾头像
当心獾

用于自主安全研究的 Model Context Protocol 服务

Docker MCP Python License

兼容以下工具:

Kiro Cursor Claude VS Code Windsurf


目录

概述

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 在工作过程中重置上下文,数据也能保持一致。

集成工具

侦察

README 配图README 配图README 配图README 配图README 配图
SubfinderAmassNmapMasscanffuf
README 配图README 配图README 配图README 配图README 配图
bbothttpxKatanagauArjun
README 配图README 配图
wafw00fKiterunner

静态应用安全测试(SAST)

README 配图README 配图README 配图README 配图README 配图
CodeQLPsalmGosecBanditSemgrep

README 配图README 配图README 配图README 配图README 配图README 配图
BrakemanPMDNodeJsScanJoernYASAOpenGrep

源码模糊测试

README 配图README 配图README 配图README 配图
AtherisJazzerJazzer.jsPHP-Fuzzer

密钥扫描

README 配图README 配图README 配图README 配图README 配图
GitleaksTruffleHogdetect-secretsWhispersHawk-Eye

软件组成分析(SCA)

README 配图README 配图README 配图README 配图
GrypeSyftOSV-ScannerRetire.js

基础设施与 IaC 安全

README 配图README 配图README 配图README 配图README 配图
CheckovKICSTerrascanTFSecHadolint

动态应用安全测试(DAST)

README 配图README 配图README 配图README 配图README 配图
sqlmapNoSQLMapCommixDalfoxSSTImap

README 配图README 配图README 配图
SSRFmapjwt_toolinteractsh

实用工具

README 配图README 配图README 配图README 配图README 配图
LinguistWireMockMitmproxyaiohttpChromium w. Playwright

PoC 验证

PoC 脚本沙箱
确定性判定运行器

PoC 沙箱会在目标网络中运行由 Agent 编写的 Python/bash 漏洞利用脚本,并返回确定性的判定结果(根据退出代码或显式标记判定通过/失败)。MCPwner 通过这种方式验证逻辑漏洞、IDOR/BOLA、竞态条件和访问控制绕过,而这些问题无法通过现成的 DAST 工具来表达。

插件

MCPwner 支持可选的插件系统,用于提供特定领域的工具。插件可添加 Docker 服务、自定义扫描规则和报告模板,而无需修改核心代码。无论是否安装任何插件,MCPwner 都能正常工作。

可用插件
插件描述添加的服务
wp-scanWordPress 安全扫描 — 包含 Xdebug 的 WP 测试环境、WPScan 枚举、PHPGGC 反序列化链、CMSeeK CMS 检测,以及适用于 WP 的 semgrep/joern 规则wp-range、wp-db、wpscan-scanner、phpggc-service、cmseek-service
启用插件
  1. 将插件名称添加到 .env:

    PLUGINS=wp-scan
    COMPOSE_PROFILES=sast,dast,...,wp-scan
    
  2. 使用 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 的客户端
设置
  1. 克隆代码库:

    git clone https://github.com/nedlir/mcpwner.git
    cd mcpwner
    
  2. 配置服务:

    cp .env.example .env
    cp config/config.yaml.example config/config.yaml
    
  3. 启动服务:

    docker compose up -d --build
    
  4. 确认服务正在运行:

    docker compose ps
    
连接 IDE

Docker 容器运行后,将 MCPwner 添加到你的 MCP 客户端。

动态工具注册: MCPwner 使用 Docker Compose profiles,按需启用工具类别。.env 文件中的 COMPOSE_PROFILES 变量控制启动哪些容器。MCP 服务会在启动时探测正在运行的容器,并仅注册健康的工具——如果某个容器未运行,其工具就不会显示。Linguist(语言检测 / 代码事实索引)始终运行;动态测试工具(Chromium、WireMock、mitmproxy、fuzzer)为可选工具,通过 dast 和 poc 配置文件启动。

一键安装(需要 Docker 正在运行):

Kiro Cursor Claude VS Code Windsurf

手动配置:

将以下内容添加到你的 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 - 从列表中移除,但保留文件

许可证

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。