KoaBrown/pentest-mcp-toolkit
GitHub: KoaBrown/pentest-mcp-toolkit
将50个Kali Linux安全工具通过MCP协议整合到单一Docker容器中,使AI代理能够全权驱动渗透测试流程。
Stars: 1 | Forks: 0
```
__ __ __ ____ _ __
____ ___ ____ / /____ _____/ /_ ____ ___ _________ / /_____ ____ / / /__(_) /_
/ __ \/ _ \/ __ \/ __/ _ \/ ___/ __/_____/ __ `__ \/ ___/ __ \______/ __/ __ \/ __ \/ / //_/ / __/
/ /_/ / __/ / / / /_/ __(__ ) /_/_____/ / / / / / /__/ /_/ /_____/ /_/ /_/ / /_/ / / ,< / / /_
/ .___/\___/_/ /_/\__/\___/____/\__/ /_/ /_/ /_/\___/ .___/ \__/\____/\____/_/_/|_/_/\__/
/_/ /_/
50 Kali security tools · one MCP server over Docker stdio · driven 100% by AI agents
```
## 关于
**Pentest MCP Toolkit** 是一个 [FastMCP](https://github.com/jlowin/fastmcp) 服务器,
它**通过 MCP stdio 暴露了 50 个 Kali Linux 安全工具**,并打包在
`kalilinux/kali-rolling` Docker 容器中。它的设计旨在**由 AI agent 100% 驱动**:
将 **Claude Code** 或 **Codex**(或 Cursor /
Gemini CLI / LM Studio / Open WebUI)等 MCP 客户端指向该容器,agent 就会成为
操作者 —— 它会选择工具、构建 argv、验证目标并
读取输出。由 agent 执行渗透测试;该工具包只是将 Kali 作为一组可调用的 MCP 工具提供出来。
作用域 (`MCP_PENTEST_SCOPE`) 控制 agent *可以在哪里* 扫描,而不是 *是否*
可以扫描。它默认**开放并带有醒目的警告**;你才是
授权的把关者。仅对你拥有的系统或获得明确授权测试的系统使用它 —— 请参阅底部的
[法律免责声明](#-legal--educational-disclaimer)。
选择一个版本层级,运行一条命令,连接你的客户端。
## 快速开始
运行**一条命令** —— 它会检查 Docker、构建对应版本的镜像,并将
`pentest` MCP 服务器注册到你的客户端。然后打开客户端;工具就准备好了。
选择层级,选择客户端,然后粘贴。macOS / Linux / Git-Bash 使用 `curl | bash`
命令;Windows PowerShell 使用 `irm` 命令。两者的作用相同。
### 50 个工具 — 完整集(默认,推荐)
**Claude Code** — 在用户作用域注册 `pentest`(在每个项目中都可用):
```
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 50 --client claude-code
```
```
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 50 -Client claude-code
```
**Codex** — 写入 `~/.codex/config.toml`:
```
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 50 --client codex
```
```
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 50 -Client codex
```
首次构建会拉取 Kali 和工具包(约 5-10 分钟)。镜像约为 1.5 GB(metasploit 较大)。
### 25 个工具 — 轻量级纯 TCP 子集
**Claude Code**:
```
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 25 --client claude-code
```
```
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 25 -Client claude-code
```
**Codex**:
```
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 25 --client codex
```
```
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 25 -Client codex
```
构建速度更快,镜像约 370 MB。不包含原始套接字或重型工具。
需要其他客户端,或者想手动构建?请参阅下方的 [docs/CLIENTS.md](docs/CLIENTS.md)
和 [从源码构建](#build-from-source--verify)。
## 连接你的客户端
标准的启动命令(每个客户端都通过 stdio 通信,因此每个客户端仅 **配置
文件 + 密钥** 不同):
```
docker run -i --rm \
--cap-add=NET_RAW --cap-add=NET_ADMIN \
-e MCP_PENTEST_SCOPE= \
-e MAX_OUTPUT=50000 \
-e CMD_TIMEOUT=300 \
-e PENTEST_TIER=50 \
-v "$(pwd)/work:/work" \
pentest-mcp-toolkit:50
```
- **Claude Desktop** / **Codex** / **Claude Code** / **Cursor** / **Gemini CLI** /
**LM Studio** / **Open WebUI** — 确切的文件路径和代码片段详见
[docs/CLIENTS.md](docs/CLIENTS.md)。安装程序会为你写入:
`bash install/install.sh --tier 50 --client claude-desktop`。
## 作用域 ⚠️ 重要提示
`MCP_PENTEST_SCOPE` 控制 AI **可以在哪里** 扫描,而不是 **是否** 可以扫描。
默认情况下它是**空的** = 该工具包可以扫描**任何主机**。这符合
“任意设备,无需配置”的理念,但意味着:**你** 是唯一的授权
检查者。在扫描真实目标时,请将其收紧到你的实验室范围内:
```
-e MCP_PENTEST_SCOPE=10.0.0.0/8,192.168.0.0/16,my-lab.local
# 或者在安装时:
bash install/install.sh --tier 50 --client codex --scope 192.168.1.0/24
```
请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) § Scope guard 了解完整行为
(CIDR 中的 IP、CIDR `subnet_of`、域名后缀)。
## 功能(原始套接字扫描)
原始套接字扫描**同时**需要文件 capabilities(在构建时固化)**以及**
`docker run` 时的运行时 capabilities:
| 工具 | 标志 |
|---|---|
| `nmap -sS` (syn scan_type) | `--cap-add=NET_RAW` |
| `masscan_scan` | `--cap-add=NET_RAW --cap-add=NET_ADMIN` |
| `naabu` syn | `--cap-add=NET_RAW` |
| `traceroute_host` | `--cap-add=NET_RAW` |
上面标准的启动命令已经包含了它们。默认的 `nmap_scan`
是 `-sT`(TCP connect),不需要 capabilities。第 25 层默认仅提供 TCP 工具(不需要
`--cap-add`);nmap/naabu 上的 setcap 已经固化,因此你*可以*添加该标志。
## 按层级划分的工具
### 第 25 层(25 个工具 — 轻量级)
| 分类 | 工具 |
|---|---|
| Network (3) | `nmap_scan`, `naabu_port_scan`, `nc_banner_grab` |
| DNS / OSINT (6) | `subfinder_enum`, `assetfinder_enum`, `theharvester_enum`, `dnsrecon_scan`, `dig_lookup`, `whois_lookup` |
| Web (6) | `whatweb_scan`, `http_probe`, `nuclei_scan`, `nikto_scan`, `wapiti_scan`, `wpscan_scan` |
| 内容 / fuzz (4) | `gobuster_dir`, `ffuf_scan`, `dirsearch_scan`, `feroxbuster_scan` |
| 注入 / 爬取 (4) | `sqlmap_scan`, `dalfox_xss`, `arjun_params`, `hakrawler_crawl` |
| 本地 / 离线 (2) | `searchsploit_search`, `hashid_identify` |
### 第 50 层(50 个工具 — 全部)
第 25 层是其严格子集。第 50 层增加了:
| 分类 | 新增工具(在第 25 层基础上) |
|---|---|
| Network (5) | + `masscan_scan`, `traceroute_host` |
| DNS / OSINT (10) | + `spiderfoot_scan`, `dnsenum_scan`, `dnstwist_scan`, `fierce_scan` |
| Web (7) | + `joomscan_scan` |
| 内容 / fuzz (8) | + `dirb_scan`, `gobuster_dns`, `gobuster_vhost`, `wfuzz_scan` |
| 注入 / 爬取 (5) | + `dotdotpwn_traversal` |
| Exploit (2) | `searchsploit_search` + `msfvenom_payload` |
| 网络服务 / 暴力破解 (8) | `enum4linux_scan`, `smbclient_list`, `smbmap_enum`, `netexec_smb`, `snmpwalk_enum`, `onesixtyone_snmp`, `smtp_user_enum`, `hydra_brute` |
| Hashes / 字典 (4) | `john_crack`, `hashid_identify`, `cewl_wordlist`, `crunch_wordlist` |
| 取证 (1) | `binwalk_scan` |
## 从源码构建 / 验证
```
# 语法检查(无需 deps)
python -m py_compile src/_helpers.py src/server.py src/tools/*.py
# MCP round-trip:确认 tier 提供正确的 tool 数量
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | \
docker run -i --rm pentest-mcp-toolkit:50
# 完整 smoke test(init + tools/list + 实际的 tools/call)
python scripts/smoke_test.py --tier both # hermetic
python scripts/smoke_test.py --tier 50 --net # + live scanme.nmap.org scan
```
## 架构
单个 `src/` 目录树,两个 Dockerfile;`PENTEST_TIER` 环境变量控制注册哪些工具。
工具函数是 `src/tools/.py` 中的原生 `async def`;
`src/server.py` 在注册时应用 `@mcp.tool()`。规约 —
没有 shell,运行前验证,作用域防护,输出字符串,单行 docstring —
位于 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 中。开发规则在
[docs/CLAUDE.md](docs/CLAUDE.md) 中。
## 许可证
[MIT](LICENSE)。Kali 工具的许可证归其上游项目所有;本工具包
仅对它们进行打包和编排。
## ⚖️ 法律与教育免责声明
本项目 — 源码、Docker 镜像和安装程序 — 的提供**严格
出于教育目的、防御性安全审计、授权
漏洞验证,以及对你拥有或获得明确
授权测试的系统进行渗透测试。**
**仅限授权使用。** 该工具包默认将 `MCP_PENTEST_SCOPE`
设置为开放,这意味着默认情况下可以将 agent 指向任何可访问的主机。
该默认值是为了方便而存在的,**而不是作为许可**。部署
此容器并不授予扫描任何系统的**任何授权**。在
扫描、探测、模糊测试、暴力破解或以其他方式与之交互之前,你必须获得
每个目标所有者/运营者的明确书面许可。
“我只是在测试”不构成同意。
**你承担所有责任。** 作者不承担任何责任,并且
不对使用本软件进行的任何滥用、损害、数据丢失、服务中断或
非法活动负责。通过部署或使用本
工具包,你同意你 — 而不是作者 — 对遵守所有适用的地方、州、国家和国际法律
负全部责任,
包括但不限于:
- **美国** — 《计算机欺诈和滥用法》,18 U.S.C. § 1030;
《电子通信隐私法》,18 U.S.C. § 2510 et seq.;以及各州关于
未经授权访问的法规。
- **英国** — 《1990 年计算机滥用法》。
- **欧盟 / 欧洲经济区** — 《关于打击信息系统的指令》(Directive 2013/40/EU),
已由各成员国转换为国内法。
- **其他司法管辖区** — 你所在国家/地区的类似计算机滥用、未经授权访问、
数据保护(例如 GDPR / 英国 GDPR)和隐私法规。
在大多数司法管辖区,未经授权访问
计算机系统都是犯罪行为,
无论意图如何,也无论工具是否使其变得容易。一个*能够*连接到
某台主机的工具,并不意味着你有权扫描你不拥有的主机。
**无保修。** 本软件在
[MIT 许可证](LICENSE)下按“原样”提供,不提供任何类型的明示或暗示保证,
包括但不限于对适销性、特定用途的
适用性和非侵权的保证。关于软件质量和
性能的全部风险由你承担。
**赔偿。** 使用本软件即表示你同意赔偿并使
作者和贡献者免受因你使用或滥用
软件,或因你违反任何法律或第三方权利而引起的任何索赔、损害、损失或
费用(包括合理的律师费)的损害。
**第三方工具。** 此处编排的 Kali 工具(nmap、nuclei、sqlmap、
metasploit 等)受其上游项目的版权和许可保护。
本工具包仅对它们进行打包和调用;它不对它们主张任何权利,并且
不隶属于 Kali Linux 或这些项目。它们的许可和使用
条款独立于本协议适用。
**出口 / 再出口。** 某些安全工具可能受出口管制
法规(例如美国 EAR、欧盟两用品法规)的约束。当你在下载、
部署或重新分发本软件时,你有责任
遵守适用的出口和再出口管制规定。
**如果你不同意这些条款,请不要部署或使用本工具包。**
标签:AI代理, Docker, DOE合作, MCP服务器, 安全防御评估, 实时处理, 密码管理, 插件系统, 自动化安全工具, 请求拦截, 逆向工具