关于 Kali MCP Server
Kali MCP Server 将 Kali Linux 的安全测试命令行工具接入 LLM,供渗透测试与安全评估使用。它通过 stdio 提供分类工具,并可用 Docker 隔离运行。
主要功能
- 01提供侦察与网络扫描工具
- 02支持 Web 漏洞测试与模糊测试
- 03支持密码破解与暴力破解
- 04搜索漏洞数据库并调用 Metasploit
- 05通过 Docker 容器化部署
适用场景
- 01枚举域名、DNS 记录与主机
- 02扫描网络端口和 Web 漏洞
- 03测试密码哈希与登录凭据
- 04查询漏洞并执行 Metasploit 模块
MCP 相关
通过 stdio 将 21 种 Kali 安全工具作为 MCP 工具提供给客户端,并返回命令输出与错误日志。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🐉 Kali Linux MCP 服务
📖 项目概览
Kali Linux MCP 服务是一种专用的模型上下文协议(MCP)实现,旨在将大模型原生连接到全面的攻击性安全、侦察和枚举工具套件。该服务由 FastMCP Python SDK 提供支持,可将自然语言请求转换为安全、封装的标准 Kali Linux 实用工具命令行执行。
通过将这些工具作为 MCP 资源公开,AI Agent 可以自主执行 WHOIS 查询、运行 Nmap 扫描、模糊测试 Web 目录、搜索漏洞利用数据库,甚至与 Metasploit Framework 交互,同时将结构化的标准输出和错误日志返回到大模型的上下文窗口。
主要功能
- 🎯 全面的攻击性安全工具包:向大模型原生公开不同类别的渗透测试工具。该服务对各项功能进行了逻辑分类,包括专门用于密码破解与暴力破解以及漏洞利用与嗅探的模块。
- 📦 自动化且隔离的容器化:随附的 Docker 配置可确保设置过程顺畅且可重复。它使用
DEBIAN_FRONTEND=noninteractive环境变量,抑制 Debian 软件包安装过程中的手动提示,从而保证完全自动化的构建流程。 - 原生 MCP SDK 集成:基于官方
mcpPython SDK 构建,稳健可靠。环境灵活,可在隔离容器中全局安装 SDK(--break-system-packages),也可通过本地 Python 虚拟环境安装。 - ⚡ 标准化
stdio传输:使用直接标准输入/输出进行 JSON-RPC 通信,免去复杂的网络配置,并确保开箱即用地兼容 AI IDE(如 Cursor 和 VS Code)以及桌面客户端(如 Claude Desktop)。
演示
哈希破解
漏洞扫描
先决条件
所需依赖完全取决于你选择的执行方式。
选项 A:🐳 Docker 执行(推荐)
使用 Docker 时,服务会在隔离容器中运行,并自动配置 Python 3、pip 以及一系列丰富的 Kali Linux 工具(包括 nmap、sqlmap、tcpdump 和 metasploit-framework)。
- **Docker Engine:**必须已安装并正在运行。此方式在 Windows、macOS 和 Linux 上均可正常使用,无需安装任何本地安全工具。
选项 B:🐍 本地 Python 执行
如果选择直接在主机上运行脚本,而不使用 Docker,则主机必须原生提供这些工具。
- **操作系统:**Kali Linux(推荐)或已安装所需渗透测试工具,且这些工具位于系统
PATH中的其他 Linux 发行版。 - **Python:**Python 3.10 或更高版本。
- 依赖项:
mcpPython SDK(pip install mcp)。 - **权限:**某些公开的工具(例如用于数据包嗅探的
tcpdump)需要 root 权限才能原生执行。
设置方法
🐳 选项 A:Docker 实现
由于此服务依赖数十种特定的二进制工具,通过 Docker 打包是“黄金标准”方案。
最快的入门方式是从 Docker Hub 拉取官方镜像。
docker pull cyberillo/kali-mcp-server:latest
若要使用 MCP 客户端所需的 stdio 传输方式以交互模式运行容器:
docker run -i --rm kali-mcp-server
(注意:某些工具(如 tcpdump 或 netdiscover)需要提升权限。如果确实需要使用这些工具,可能需要在 docker run 命令中追加 --privileged 或特定的 --cap-add 标志,但强烈不建议在常规使用中这样做。)
或者,按照以下步骤自行构建 Docker 镜像。
Dockerfile 说明
-
基础镜像: 此服务基于官方的
kalilinux/kali-rolling基础镜像构建。 -
工具链安装: 更新系统并安装必要工具,包括
nmap、sqlmap、metasploit-framework、gobuster、hydra和john。 -
字典文件: 自动解压
rockyou.txt字典文件,该文件默认经过压缩,解压后即可用于密码破解和模糊测试工具。 -
Python 环境: 使用 PEP 668 的
--break-system-packages标志,在隔离的容器中全局安装mcpPython SDK。
- 克隆仓库并进入目录。
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🏗️ 构建镜像
docker build -t kali-mcp-server .
- 🏃 运行容器
若要使用 MCP 客户端所需的 stdio 传输方式以交互模式运行容器:
docker run -i --rm kali-mcp-server
(注意:某些工具(如 tcpdump 或 netdiscover)需要提升权限。如果确实需要使用这些工具,可能需要在 docker run 命令中追加 --privileged 或特定的 --cap-add 标志,但强烈不建议在常规使用中这样做。)
🛠️ 选项 B:本地开发环境设置
虽然推荐使用 Docker 进行部署,但也可以直接在 Kali Linux 计算机上运行此服务,以便开发或调试。
- 克隆仓库并进入目录。
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🐍 设置 Python 虚拟环境:
python3 -m venv venv
source venv/bin/activate
- 安装 MCP SDK:
pip install mcp
- 确保已安装所有 Kali 工具:
确保系统PATH中包含nmap、gobuster、sqlmap和msfconsole等工具。 - 在本地以调试模式运行服务:
可以使用标准输入/输出直接测试 Python 脚本。
python3 kali-mcp-server.py
🤖 使用方法
1. Claude Desktop 配置
将以下内容添加到 claude_desktop_config.json 文件中(该文件通常位于 Mac 上的 ~/Library/Application Support/Claude/claude_desktop_config.json 或 Windows 上的 %APPDATA%\Claude\claude_desktop_config.json)。
如果在上述路径中找不到该文件,请前往 File > Settings > Developer > Edit Config。
使用 Docker(推荐):
{
"mcpServers": {
"kali-tools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
}
}
使用本地 Python:
{
"mcpServers": {
"kali-tools": {
"command": "/path/to/your/venv/bin/python3",
"args": [
"/path/to/kali-mcp-server.py"
]
}
}
}
2. GitHub Copilot(VS Code)
- 如果工作区中不存在
.vscode目录,请新建一个。 - 按如下方式更新
.vscode/mcp.json,添加 MCP 服务。
{
"servers": {
"kali-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
},
"inputs": []
}
3. Cursor / 其他 IDE
对于支持 Model Context Protocol 的 IDE,请配置一个使用 stdio 传输类型的新 MCP 服务。
- 类型:
stdio - 命令:
docker - 参数:
run -i --rm kali-mcp-server
MCP 工具定义
该服务提供 21 个专用工具,按其操作阶段分类。
| 类别 | 工具名称 | 描述和参数 |
|---|---|---|
| 侦察 | whois_lookup | 执行 WHOIS 查询。参数: domain(str)。 |
| 侦察 | dnsenum_scan | 枚举 DNS 记录。参数: domain(str)。 |
| 侦察 | whatweb_scan | 识别 CMS 和标头。参数: target_url(str)。 |
| 侦察 | amass_enum | 被动枚举子域名。参数: domain(str)。 |
| 侦察 | netdiscover_scan | 查找活动主机。参数: ip_range(str)。 |
| 扫描 | nmap_scan | 网络发现和端口扫描。参数: target(str)、flags(str,默认值:-sV -F)。 |
| 扫描 | enum4linux_scan | 枚举 Windows/Samba 系统。参数: target_ip(str)。 |
| 扫描 | smbclient_list | 列出 SMB 共享。参数: target_ip(str)、user(str)、password(str)。 |
| Web 安全 | nikto_scan | Web 漏洞扫描。参数: target_url(str)。 |
| Web 安全 | gobuster_dir | 对目录进行暴力枚举。参数: target_url(str)、wordlist(str)。 |
| Web 安全 | dirb_scan | Web 内容扫描。参数: target_url(str)、wordlist(str)。 |
| Web 安全 | ffuf_scan | 快速模糊测试 Web 目录。参数: target_url(str)、wordlist(str)。 |
| Web 安全 | wfuzz_scan | 对 Web 参数/目录进行模糊测试。参数: target_url(str)、wordlist(str)。 |
| Web 安全 | sqlmap_scan | 检测/利用 SQL 注入。参数: target_url(str)、params(str)。 |
| Web 安全 | wpscan_enum | WordPress 漏洞扫描器。参数: target_url(str)。 |
| 破解 | hydra_bruteforce | 暴力破解登录凭据。参数: target(str)、service(str)、user(str)、wordlist(str)。 |
| 破解 | john_crack | 破解密码哈希。参数: hash_file(str)、wordlist(str)。 |
| 破解 | hashcat_crack | 资源密集型哈希破解。参数: hash_file(str)、hash_type(str)、wordlist(str)。 |
| 漏洞利用 | searchsploit_query | 搜索 Exploit Database。参数: query(str)。 |
| 漏洞利用 | tcpdump_sniff | 捕获网络数据包。参数: interface(str)、packet_count(str)。 |
| 漏洞利用 | metasploit_exploit | 执行 MSF 模块。参数: module(str)、options(str)。 |
给大模型的实用提示: 请求大模型运行
metasploit_exploit时,请将选项仔细格式化为以逗号分隔的KEY=VALUE键值对(例如:RHOSTS=192.168.1.5, LHOST=10.0.0.2)。
⚙️ 环境变量
虽然 Python 服务脚本不会强制要求自定义的应用级环境变量,但 Docker 环境依赖以下标准 Linux 变量:
DEBIAN_FRONTEND:在 Dockerfile 中设为 noninteractive,以防止 apt 安装期间因交互式提示请求而导致构建过程挂起。
⚠️ 故障排除
- 命令超时: 服务在
run_cmd函数中内置了安全超时(默认 300 秒;对于 Nikto 或 Metasploit 等耗时较长的工具,则延长至 600 秒以上)。如果目标完全无响应,工具会正常返回超时错误,而不会让大模型无限期挂起。 - 权限被拒绝(Docker): 确保你的用户有权限运行 Docker 命令,或使用适当的用户权限运行客户端 IDE。若未启用 Docker 网络主机路由或特权模式,容器内的
netdiscover或tcpdump等工具可能会悄无声息地无法捕获外部流量。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。