MCPwner
Beware of the Badger
Model Context Protocol server for security research automation
](https://www.docker.com/)   
兼容:
    
______________________________________________________________________
概述
MCPwner是一个模型上下文协议(MCP)服务器,它将安全测试工具集成到LLM驱动的工作流中。它为秘密扫描、静态分析(SAST)、软件组合分析(SCA)、侦察、动态应用程序安全测试(DAST)和漏洞研究(包括0天发现)提供了一个统一的接口。
MCPwner没有手动链接工具并将输出粘贴到LLM中,而是将结果标准化并直接流式传输到模型的工作上下文中。这使得在整个安全研究生命周期中能够进行连续的推理、关联和攻击路径发现,从映射攻击面和识别已知漏洞到发现新的攻击向量。
备注:该项目正在积极开发中。了解有关MCP的更多信息 这里.
主要特点
- 🔧 统一接口:集成多种安全工具(SAST、SCA、秘密检测、侦察)的单个MCP服务器
- 🤖 LLM集成:供人工智能助手直接使用的结构化输出格式(SARIF/JSON)
- 🔍 连续分析:将多个工具的发现相关联,以识别攻击路径和0天漏洞
- 🏗️ 多代理架构:专为跨安全阶段协作的专业代理而设计
- 🐳 容器化执行:用于可重复扫描的隔离工具环境
- 💾 自动持久化:工作区和数据库元数据在容器重启后仍然有效
- 🔌 可扩展:用于添加新安全工具的插件架构
集成工具
侦察
静态应用程序安全测试(SAST)扫描工具
秘密扫描工具
软件组合分析(SCA)工具
未来工具
计划在未来的版本中使用以下工具:
动态应用程序安全测试(DAST)
- OWASP ZAP、SQLmap、NoSQLMap、Dalfox、Nikto、SSTImap、Commix、jwt_tool、Wapiti、Nuclei、,
开源情报
- Shodan API、Censys API、crt.sh、Altdns、Lazys3、Bucket Stream
基础设施和IaC安全
- 徘徊者、契科夫、KICS、Terrascan、TFSec、Hadolint
开发和PoC开发
- Metasploit,互动,弗里达
用法示例
自动枚举管道
"Enumerate and scan example.com"
→ MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun扫描GitHub仓库寻找秘密
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings安全审计
"Run a security audit on my Python project"
→ MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning攻击路径分析
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results安装
先决条件
系统要求:
- Docker引擎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 config/config.yaml.example config/config.yaml
# Edit config/config.yaml as needed- 启动服务:
docker-compose up -d --build- 验证服务是否正在运行:
docker-compose ps连接您的IDE
Docker容器运行后,将MCPwner添加到MCP客户端:
配置文件位置:
- 克劳德桌面:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) - 光标/基洛:
mcp.json在项目或设置目录中
一键安装(需要运行Docker):
    
手动配置:
将以下内容添加到MCP配置文件中:
{
"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"
数据持久层
MCPwner使用共享Docker卷中的基于文件的存储在容器重启时自动持久化工作区和CodeQL数据库元数据(/workspaces/.metadata/).无需配置-系统在启动时加载现有数据,并在每次操作后使用原子写入进行保存,以防止损坏。
工作区清理控制:
这 cleanup_workspace 该工具提供精细控制:
delete_files=True, delete_metadata=False-释放磁盘空间,但保留工作区历史记录(推荐)delete_files=True, delete_metadata=True-完全删除工作区和元数据delete_files=False, delete_metadata=True-从列表中删除,但将文件保留在磁盘上
备份:
# Backup entire workspaces volume
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup \
alpine tar czf /backup/workspaces-backup.tar.gz /data
# Restore volume
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup \
alpine tar xzf /backup/workspaces-backup.tar.gz -C /建筑
MCPwner使用容器之间基于HTTP的通信来支持未来的远程部署。虽然目前针对本地使用进行了优化,但该架构可以通过最小的修改适应远程服务器部署。
设计原则:
- 安全工具执行的容器隔离
- LLM消费的标准化输出格式(SARIF/JSON)
- 新工具的可扩展插件架构
- 无状态API(内存由用户管理)
架构概述:
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]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
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 IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5工作流
数据流-分析结果:
sequenceDiagram
participant LLM as 🤖 LLM
participant MCP as MCP Client
participant Server as MCPwner Server
participant Tools as Security Tools
LLM->>MCP: Request security scan
MCP->>Server: Execute scan command
Server->>Tools: Run analysis
Tools-->>Server: Raw results
Server-->>MCP: SARIF/JSON reports
MCP-->>LLM: Structured findings
Note over LLM: Correlate vulnerabilities
Generate insights
Suggest remediation可用的MCP工具
MCPwner通过MCP接口公开以下工具:
工作区管理:
create_workspace-从本地路径、Git URL或GitHub仓库初始化扫描工作区list_workspaces-列出所有可用工作区cleanup_workspace-删除工作区和相关数据
SAST(静态分析):
run_sast_scan-运行静态分析工具(Semgrep、Bandit、Gosec、Brakeman、PMD、Psalm、NodeJsScan、Joern、YASA)get_sast_report-检索SAST扫描结果sast_list_tools-列出可用的SAST工具
秘密检测:
run_secrets_scan-运行秘密扫描工具(Gitleaks、TruffleLog、Whispers、检测秘密、鹰眼)get_secrets_report-检索机密扫描结果secrets_list_tools-列出可用的秘密扫描工具
SCA(软件组成分析):
run_sca_scan-分析漏洞的依赖关系(Grype、Syft、OSV Scanner、Retire.js)get_sca_report-检索SCA扫描结果sca_list_tools-列出可用的SCA工具
侦察:
run_reconnaissance_scan-运行单个侦察工具(Subfinder、Amass、Nmap、Masscan、httpx、Katana、ffuf、bbot、gau、Arjun、wafw00f、Kiterunner)run_reconnaissance_chain-按顺序链接多个侦察工具get_reconnaissance_report-检索侦察扫描结果reconnaissance_list_tools-列出可用的侦察工具
代码QL:
detect_languages-通过Linguist检测代码库中的语言create_codeql_database-创建CodeQL数据库进行分析list_databases-列出可用的CodeQL数据库list_query_packs-列出可用的查询包execute_query-运行特定的CodeQL查询
健康与监测:
health_check-检查服务器和工具的可用性list_tools-列出所有可用工具及其状态
贡献
欢迎投稿!请查看 贡献指南 在提交pull请求之前。
优先领域:
- 测试基础设施(e2e和单元测试)
- 容器生命周期管理和优化
- 多阶段Docker构建,以减小映像大小
- 增强的错误处理和超时机制
- 其他安全工具集成
贡献指南:
- 提交范围可控的集中拉取请求
- 包括新功能的测试
- 遵循现有的代码风格和模式
- 根据需要更新文档
看 未来工具 我们的发展路线图部分。
安全注意事项
MCPwner执行可能执行侵入性操作的安全工具。仅在您拥有或拥有明确测试权限的系统和代码库上使用-未经授权的访问是非法的。限制授权用户访问MCP服务器,并考虑生产部署的网络隔离。在运行扫描之前检查工具配置,因为某些工具可能会产生大量网络流量或系统负载。记录工具的执行和结果,记住安全扫描可以在监控系统中触发警报。在报告使用MCPwner发现的漏洞时,遵循负责任的披露做法。保持Docker镜像的更新,并定期扫描容器中的漏洞。永远不要将API密钥、令牌或凭据提交到配置文件,而是使用环境变量或机密管理系统。
