Kali MCP Server
Un servidor MCP en Python que conecta modelos de lenguaje grandes de forma nativa a un conjunto completo de herramientas de seguridad ofensiva.
Documentación
🐉 Kali Linux MCP Server
📖 Resumen del Proyecto
El servidor Kali Linux MCP es una implementación especializada del Protocolo de Contexto de Modelo (MCP) diseñada para conectar Modelos de Lenguaje Grande de forma nativa a un conjunto completo de herramientas de seguridad ofensiva, reconocimiento y enumeración. Impulsado por el FastMCP Python SDK, este servidor traduce solicitudes en lenguaje natural a ejecuciones seguras y encapsuladas de comandos de utilidades estándar de Kali Linux.
Al exponer estas herramientas como recursos MCP, los agentes de IA pueden realizar de forma autónoma consultas WHOIS, ejecutar escaneos Nmap, fuzzear directorios web, buscar en bases de datos de exploits e incluso interactuar con Metasploit Framework, todo mientras devuelven la salida estándar estructurada y los registros de errores a la ventana de contexto del LLM.
Características Clave
- 🎯 Kit de Herramientas de Seguridad Ofensiva Integral: Expone de forma nativa categorías distintas de herramientas de pruebas de penetración a tu LLM. El servidor categoriza lógicamente las capacidades, incluyendo módulos dedicados para Descifrado de Contraseñas y Fuerza Bruta, así como Explotación y Sniffing.
- 📦 Contenedorización Automatizada y Aislada: La configuración Docker incluida garantiza una configuración sin fricciones y reproducible. Utiliza la variable de entorno
DEBIAN_FRONTEND=noninteractivepara suprimir los avisos manuales durante las instalaciones de paquetes Debian, garantizando un proceso de compilación totalmente automatizado. - Integración Nativa con el SDK de MCP: Construido de forma robusta sobre el SDK de Python oficial
mcp. El entorno es flexible, permitiendo que el SDK se instale globalmente dentro del contenedor aislado (--break-system-packages) o mediante un entorno virtual de Python localizado. - ⚡ Transporte Estandarizado
stdio: Utiliza la entrada/salida estándar directa para la comunicación JSON-RPC, evitando configuraciones de red complejas y garantizando compatibilidad inmediata con IDEs de IA (como Cursor y VS Code) y clientes de escritorio (como Claude Desktop).
Demostración
Descifrado de Hash
Escaneo de Vulnerabilidades
Requisitos Previos
Las dependencias requeridas varían completamente según el método de ejecución que elijas.
Opción A: 🐳 Ejecución con Docker (Recomendada)
Al usar Docker, el servidor se ejecuta en un contenedor aislado que aprovisiona automáticamente Python 3, pip, y un amplio conjunto de herramientas de Kali Linux (incluyendo nmap, sqlmap, tcpdump y metasploit-framework).
- Motor Docker: Debe estar instalado y en ejecución. Este método funciona perfectamente en Windows, macOS y Linux sin requerir ninguna herramienta de seguridad local.
Opción B: 🐍 Ejecución Local con Python
Si eliges ejecutar el script directamente en tu máquina host en lugar de usar Docker, tu host debe tener las herramientas disponibles de forma nativa.
- Sistema Operativo: Kali Linux (recomendado) u otra distribución de Linux con las herramientas de pruebas de penetración requeridas instaladas y en el
PATHde tu sistema. - Python: Python 3.10 o superior.
- Dependencias: El SDK de Python
mcp(pip install mcp). - Permisos: Algunas herramientas expuestas, como
tcpdumppara la captura de paquetes, requieren explícitamente privilegios de root para ejecutarse de forma nativa.
Cómo Configurar
🐳 Opción A: Implementación con Docker
Debido a que este servidor depende de docenas de herramientas binarias específicas, empaquetarlo mediante Docker es el enfoque "Estándar de Oro".
La forma más rápida de empezar es extraer la imagen oficial de Docker Hub.
docker pull cyberillo/kali-mcp-server:latest
Para ejecutar el contenedor de forma interactiva usando el transporte stdio requerido por los clientes MCP:
docker run -i --rm kali-mcp-server
(Nota: Algunas herramientas como tcpdump o netdiscover requieren privilegios elevados. Si necesitas explícitamente estas, puede que necesites añadir --privileged o banderas específicas de --cap-add a tu comando docker run, aunque esto está fuertemente desaconsejado para uso general).
Alternativamente, construye la imagen Docker tú mismo siguiendo los pasos a continuación.
Desglose del Dockerfile
-
Imagen Base: El servidor está construido sobre la imagen base oficial
kalilinux/kali-rolling. -
Instalación de Herramientas: Actualiza el sistema e instala herramientas esenciales incluyendo
nmap,sqlmap,metasploit-framework,gobuster,hydrayjohn. -
Listas de Palabras: Extrae automáticamente la lista de palabras
rockyou.txt, ya que está comprimida por defecto, haciéndola disponible inmediatamente para herramientas de descifrado de contraseñas y fuzzing. -
Entorno Python: Utiliza la bandera
--break-system-packagesde PEP 668 para instalar el SDK de Pythonmcpglobalmente dentro del contenedor aislado.
- Clona el repositorio y navega al directorio.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🏗️ Construye la imagen
docker build -t kali-mcp-server .
- 🏃 Ejecuta el contenedor
Para ejecutar el contenedor de forma interactiva usando el transporte stdio requerido por los clientes MCP:
docker run -i --rm kali-mcp-server
(Nota: Algunas herramientas como tcpdump o netdiscover requieren privilegios elevados. Si necesitas explícitamente estas, puede que necesites añadir --privileged o banderas específicas de --cap-add a tu comando docker run, aunque esto está fuertemente desaconsejado para uso general).
🛠️ Opción B: Configuración de Desarrollo Local
Aunque Docker es el método de despliegue recomendado, puedes ejecutar el servidor directamente en una máquina Kali Linux para desarrollo o depuración.
- Clona el repositorio y navega al directorio.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🐍 Configura un Entorno Virtual de Python:
python3 -m venv venv
source venv/bin/activate
- Instala el SDK de MCP:
pip install mcp
- Asegúrate de que todas las herramientas de Kali estén instaladas:
Asegúrate de que herramientas comonmap,gobuster,sqlmapymsfconsoleestén disponibles en tu sistemaPATH. - Ejecuta el servidor en modo depuración localmente:
Puedes probar el script de Python directamente usando la entrada/salida estándar.
python3 kali-mcp-server.py
🤖 Cómo Usar
1. Configuración de Claude Desktop
Añade lo siguiente a tu archivo claude_desktop_config.json (normalmente ubicado en ~/Library/Application Support/Claude/claude_desktop_config.json en Mac o %APPDATA%\Claude\claude_desktop_config.json en Windows).
Ve a Archivo > Configuración > Desarrollador > Editar Config si no lo encuentras en las rutas anteriores.
Usando Docker (Recomendado):
{
"mcpServers": {
"kali-tools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
}
}
Usando Python Local:
{
"mcpServers": {
"kali-tools": {
"command": "/path/to/your/venv/bin/python3",
"args": [
"/path/to/kali-mcp-server.py"
]
}
}
}
2. GitHub Copilot (VS Code)
- Si no existe, añade un directorio
.vscodeen tu espacio de trabajo. - Añade el servidor MCP actualizando
.vscode/mcp.jsonde la siguiente manera.
{
"servers": {
"kali-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
},
"inputs": []
}
3. Cursor / Otros IDEs
Para IDEs que soporten el Protocolo de Contexto de Modelo, configura un nuevo servidor MCP utilizando el tipo de transporte stdio.
- Tipo:
stdio - Comando:
docker - Argumentos:
run -i --rm kali-mcp-server
Definiciones de Herramientas MCP
El servidor expone 21 herramientas especializadas categorizadas por su fase operativa.
| Categoría | Nombre de la Herramienta | Descripción y Parámetros |
|---|---|---|
| Reconocimiento | whois_lookup | Realiza una consulta WHOIS. Parámetros: domain (str). |
| Reconocimiento | dnsenum_scan | Enumera registros DNS. Parámetros: domain (str). |
| Reconocimiento | whatweb_scan | Identifica CMS y cabeceras. Parámetros: target_url (str). |
| Reconocimiento | amass_enum | Enumeración pasiva de subdominios. Parámetros: domain (str). |
| Reconocimiento | netdiscover_scan | Encuentra hosts activos. Parámetros: ip_range (str). |
| Escaneo | nmap_scan | Descubrimiento de red y escaneo de puertos. Parámetros: target (str), flags (str, por defecto: -sV -F). |
| Escaneo | enum4linux_scan | Enumera sistemas Windows/Samba. Parámetros: target_ip (str). |
| Escaneo | smbclient_list | Lista recursos compartidos SMB. Parámetros: target_ip (str), user (str), password (str). |
| Seguridad Web | nikto_scan | Escaneo de vulnerabilidades web. Parámetros: target_url (str). |
| Seguridad Web | gobuster_dir | Fuerza bruta de directorios. Parámetros: target_url (str), wordlist (str). |
| Seguridad Web | dirb_scan | Escaneo de contenido web. Parámetros: target_url (str), wordlist (str). |
| Seguridad Web | ffuf_scan | Fuzzing rápido de directorios web. Parámetros: target_url (str), wordlist (str). |
| Seguridad Web | wfuzz_scan | Fuzzing de parámetros/directorios web. Parámetros: target_url (str), wordlist (str). |
| Seguridad Web | sqlmap_scan | Detección/explotación de inyección SQL. Parámetros: target_url (str), params (str). |
| Seguridad Web | wpscan_enum | Escáner de vulnerabilidades de WordPress. Parámetros: target_url (str). |
| Descifrado | hydra_bruteforce | Fuerza bruta de credenciales de inicio de sesión. Parámetros: target (str), service (str), user (str), wordlist (str). |
| Descifrado | john_crack | Descifra hashes de contraseñas. Parámetros: hash_file (str), wordlist (str). |
| Descifrado | hashcat_crack | Descifrado de hashes intensivo en recursos. Parámetros: hash_file (str), hash_type (str), wordlist (str). |
| Explotación | searchsploit_query | Busca en la Base de Datos de Exploits. Parámetros: query (str). |
| Explotación | tcpdump_sniff | Captura paquetes de red. Parámetros: interface (str), packet_count (str). |
| Explotación | metasploit_exploit | Ejecuta un módulo MSF. Parámetros: module (str), options (str). |
Consejo Pro para LLMs: Al pedir al LLM que ejecute
metasploit_exploit, formatea las opciones cuidadosamente como paresKEY=VALUEseparados por comas (por ejemplo,RHOSTS=192.168.1.5, LHOST=10.0.0.2).
⚙️ Variables de Entorno
Aunque el script del servidor Python no impone variables de entorno personalizadas a nivel de aplicación, el entorno Docker depende de la siguiente variable estándar de Linux:
DEBIAN_FRONTEND: Configurada a noninteractive en el Dockerfile para evitar que el proceso de compilación se detenga en solicitudes de avisos interactivos durante las instalaciones de apt.
⚠️ Solución de Problemas
- Comando Agotado: El servidor tiene tiempos de espera de seguridad integrados en la función
run_cmd(por defecto 300 segundos, extendidos a 600+ para herramientas más pesadas como Nikto o Metasploit). Si un objetivo no responde por completo, la herramienta devolverá limpiamente un error de tiempo de espera en lugar de colgar al LLM indefinidamente. - Permiso Denegado (Docker): Asegúrate de que tu usuario tenga permisos para ejecutar comandos Docker, o ejecuta el IDE del cliente con los privilegios de usuario adecuados. Herramientas como
netdiscoverotcpdumpdentro del contenedor pueden fallar silenciosamente al capturar tráfico externo a menos que se habiliten el enrutamiento de red host de Docker o los modos privilegiados.