内容
# KALI-MCP: AI赋能的渗透测试桥梁
一个“Vibecoder”风格的MCP服务器,通过Docker将LLM直接桥接到Kali Linux环境中。设计用于高速、AI驱动的安全审计、研发和快速渗透测试模拟。
---
## 功能特点
- **全部潜力:** 无命令白名单 — 直接通过AI执行任何Kali工具(Nmap、SQLMap、Metasploit等)。
- **网络就绪:** Docker功能 `NET_ADMIN` 和 `NET_RAW` 用于隐蔽扫描和数据包制作。
- **Docker化:** 一键设置完全隔离的环境。
- **Claude桌面集成:** 通过MCP配置直接连接到Claude桌面。
- **GPL v3许可:** 免费且开源。
---
## 先决条件
开始之前,请确保已安装以下内容:
- [Docker Desktop](https://www.docker.com/products/docker-desktop/)(Windows/macOS/Linux)
- [Claude Desktop](https://claude.ai/download)
- Git
---
## 项目结构
```
kali-mcp/
├── Dockerfile # Kali Linux Docker 环境
├── mcp_server.py # MCP 桥接服务器
└── README.md
```
---
## 设置与安装
### 步骤 1 — 克隆仓库
```bash
git clone https://github.com/edutechenterprises2023-ops/kali-mcp.git
cd kali-mcp
```
### 步骤 2 — 构建Docker镜像
```bash
docker build -t my-kali-mcp .
```
> 这将拉取最新的Kali Linux滚动镜像并安装Nmap、SQLMap、Metasploit和MCP Python包。
### 步骤 3 — 测试容器(可选)
```bash
docker run -i --rm --cap-add=NET_ADMIN --cap-add=NET_RAW my-kali-mcp
```
如果它没有错误地启动,则表明一切正常。
---
## 在Docker Desktop中启用MCP
> Docker Desktop有一个内置的MCP工具包,必须启用才能让Claude与本地容器通信。
1. 打开 **Docker Desktop**。
2. 点击右上角的 **设置** 齿轮图标。
3. 导航到 **开发中的功能** (或根据您的版本为 **Beta功能**)。
4. 启用 **"MCP工具包"** / **"模型上下文协议支持"**。
5. 点击 **应用并重启**。
> 如果您看不到MCP选项,请确保Docker Desktop已更新到最新版本。
---
## 连接到Claude Desktop
### 步骤 1 — 定位配置文件
在 **Windows** 上,Claude Desktop配置文件位于:
```
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
```
> **提示:** 按 `Win + R`,输入 `%APPDATA%\Claude`,然后按Enter键直接打开文件夹。
在 **macOS** 上,它位于:
```
~/Library/Application Support/Claude/claude_desktop_config.json
```
---
### 步骤 2 — 编辑配置文件
在任意文本编辑器(Notepad、VS Code等)中打开 `claude_desktop_config.json`,并粘贴以下内容:
```json
{
"mcpServers": {
"kali-local": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW",
"my-kali-mcp"
]
}
}
}
```
---
### 步骤 3 — 重启Claude Desktop
完全退出并重新启动Claude Desktop。在Windows上:
1. 右键单击 **系统托盘** (右下角)中的Claude图标。
2. 点击 **退出**。
3. 从“开始”菜单重新打开Claude Desktop。
---
### 步骤 4 — 验证连接
Claude Desktop重新启动后:
1. 开始一个新的聊天。
2. 在输入栏中查找 **🔧 工具** 图标或MCP指示器。
3. 您应该看到 **`kali-local`** 列为可用的MCP服务器。
4. 尝试一个测试提示:
```
使用kali-local工具运行nmap -sV localhost
```
如果Claude执行命令并返回输出,则一切正常。
---
## 工作原理
MCP服务器(`mcp_server.py`)公开了一个工具 — `execute_kali_cmd` — Claude调用它在Kali容器内运行shell命令:
```python
import subprocess
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("kali-tools-mcp")
@mcp.tool()
def execute_kali_cmd(command: str) -> str:
"""
运行任何Kali Linux终端命令(nmap、sqlmap等)
:param command: 要执行的完整终端命令。
"""
try:
result = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, text=True)
return result
except subprocess.CalledProcessError as e:
return f"错误:{e.output}"
if __name__ == "__main__":
mcp.run()
```
**流程:** Claude发送命令字符串 → MCP服务器在容器内执行它 → 将输出返回给Claude。
---
## 故障排除
| 问题 | 解决方法 |
|---|---|
| `docker: command not found` | 确保已安装并运行Docker Desktop |
| Claude未显示`kali-local`工具 | 检查JSON配置文件的语法错误并重启Claude Desktop |
| 容器立即退出 | 运行 `docker run -it my-kali-mcp bash` 进行交互式调试 |
| Docker Desktop中MCP不可用 | 更新Docker Desktop到最新版本并在设置中启用MCP |
---
## 安全免责声明
> ⚠️ **仅用于研发和教育目的。**
此工具故意允许容器内 **远程代码执行(RCE)**。请始终在 **隔离的实验室或虚拟机环境** 中运行。严禁用于您不拥有或没有明确书面许可测试的系统。作者对滥用不承担责任。
---
## 许可证
[GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) — 免费且开源。