MCP Kali Server
Un servidor completo del Protocolo de Contexto de Modelo (MCP) para pruebas de penetración y operaciones de ciberseguridad, que proporciona una integración fluida entre las herramientas de Kali Linux y los clientes compatibles con MCP.
Documentación
MCP Kali Server

Un servidor integral del Model Context Protocol (MCP) para pruebas de penetración y operaciones de ciberseguridad, que proporciona una integración perfecta entre las herramientas de Kali Linux y los clientes compatibles con MCP.
🎥 Video de demostración
Automatizando Kali Linux con un MCP (Model Context Protocol) — Demo de HTB
En este video, muestro cómo mi MCP automatiza un flujo de trabajo de Kali Linux dentro de WSL2 y ayuda a resolver un desafío de Hack The Box, desde la enumeración hasta la explotación y la documentación generada automáticamente.
🚀 Descripción general
Este proyecto proporciona un potente servidor MCP que permite el acceso programático y seguro a las herramientas de pruebas de penetración de Kali Linux a través de una interfaz estandarizada. Incluye funciones avanzadas como gestión de shells inversos, manejo de sesiones SSH y operaciones integrales de archivos con verificación de integridad.
🏗️ Arquitectura
Este proyecto está diseñado para funcionar en diferentes entornos:
1. Servidor Kali (kali-server/)
Se ejecuta solo en Kali Linux - La aplicación del servidor principal que proporciona las capacidades reales de pruebas de penetración.
kali-server/
├── api/ # REST API routes and endpoints
├── core/ # Core functionality (SSH, reverse shells, config, Docker)
├── tools/ # Penetration testing tools integration
└── utils/ # Utility functions and file operations
Características:
- Modo de prueba Docker (opción
--test) - gestiona automáticamente los contenedores de prueba - Todas las herramientas de pruebas de penetración (nmap, gobuster, etc.)
- Gestión de sesiones SSH y shells inversos
- Operaciones de archivos con verificación de integridad
2. Servidor MCP (mcp-server/)
Puede ejecutarse en cualquier sistema - El servidor del Model Context Protocol que proporciona una interfaz estandarizada para los clientes MCP.
mcp-server/
└── mcp_server.py # MCP protocol implementation
Nota: El servidor MCP se comunica con el servidor Kali a través de HTTP, por lo que pueden estar en sistemas diferentes.
Arquitectura de implementación
┌─────────────────┐ HTTP ┌──────────────────┐ HTTP ┌──────────────────┐
│ MCP Client │ ◄─────────► │ MCP Server │ ◄─────────► │ Kali Server │
│ (Any system) │ │ (Any system) │ │ (Kali Linux) │
└─────────────────┘ └──────────────────┘ │ │
│ ┌──────────────┐ │
│ │ Docker │ │
│ │ (test mode) │ │
│ └──────────────┘ │
└──────────────────┘
✨ Características principales
🔧 Herramientas de pruebas de penetración
- Nmap: Descubrimiento de red y auditoría de seguridad
- Gobuster: Enumeración de directorios/archivos
- Dirb: Escáner de contenido web
- Nikto: Escáner de servidores web
- Hydra: Descifrador de credenciales de red
- SQLmap: Pruebas de inyección SQL
- WPScan: Escáner de seguridad de WordPress
- John the Ripper: Descifrado de contraseñas
- Enum4linux: Enumeración de SMB
- Metasploit: Marco de explotación
🐚 Gestión avanzada de sesiones
- Gestor de sesiones SSH: Gestión completa del ciclo de vida de sesiones SSH
start_ssh_session: Establecer conexiones SSH segurasexecute_ssh_command: Ejecutar comandos en sesiones SSHget_ssh_status: Monitorear el estado de las sesiones SSHstop_ssh_session: Terminar sesiones SSH de forma limpialist_ssh_sessions: Ver todas las sesiones SSH activas
- Gestor de shells inversos: Manejo de múltiples sesiones de shell inverso
start_reverse_shell_listener: Comenzar a escuchar shells inversosexecute_shell_command: Ejecutar comandos en shells inversostrigger_reverse_shell_action: Ejecución de disparadores no bloqueante para payloadsget_shell_status: Monitorear el estado de las sesiones de shell inversostop_reverse_shell: Terminar sesiones de shell inversolist_reverse_shell_sessions: Ver todas las sesiones de shell inverso activas
📁 Operaciones integrales de archivos
- Gestión de archivos del servidor Kali:
upload_to_kali: Subir archivos directamente al servidor Kalidownload_from_kali: Descargar archivos del servidor Kali
- Transferencia de archivos por SSH (optimizada para archivos grandes):
ssh_upload_content: Subir contenido vía SSH con auto-optimizaciónssh_download_content: Descargar contenido vía SSH con fragmentaciónssh_estimate_transfer_time: Estimar tiempos de transferencia y obtener recomendaciones
- Transferencia de archivos por shell inverso:
reverse_shell_upload_file: Subir archivos vía shell inversoreverse_shell_upload_content: Subir contenido vía shell inversoreverse_shell_download_file: Descargar archivos vía shell inversoreverse_shell_download_content: Descargar contenido vía shell inverso
🛠️ Integración del sistema
- Ejecución de comandos: Ejecución directa de comandos en el servidor Kali
- Monitoreo de salud: Verificaciones de salud del servidor y monitoreo de estado
- Persistencia de sesiones: Mantener múltiples sesiones concurrentes
🔒 Características de seguridad
- Integridad de datos: Verificación de suma de comprobación SHA256 para todas las transferencias de archivos
- Comunicaciones seguras: Conexiones SSH cifradas
- Aislamiento de sesiones: Gestión independiente de sesiones
- Manejo de errores: Detección y reporte integral de errores
📊 Optimización del rendimiento
- Transferencias fragmentadas: Optimizadas para operaciones con archivos grandes
- Selección automática de método: Selección inteligente según el tamaño del archivo
- Procesamiento en segundo plano: Operaciones no bloqueantes para tareas de larga duración
- Gestión de recursos: Uso eficiente de memoria y CPU
🛠️ Instalación
Consulte install.md para obtener instrucciones detalladas de instalación.
Configuración del cliente MCP
Después de la instalación, configure su cliente MCP para conectarse al servidor Kali:
Esta guía cubre:
- Configuración de
.claude/mcp_settings.jsonpara Claude Desktop - Configuración de clientes MCP alternativos
- Cómo encontrar su ruta de Python y la dirección IP de Kali
- Ejemplos específicos por plataforma (Windows, Linux, macOS)
Configuración de red WSL
Si está ejecutando Kali Linux en WSL 2, una configuración de red adecuada es crítica para que el servidor MCP funcione. Consulte nuestra guía completa:
📖 Guía de configuración de red WSL
Esta guía cubre:
- Configuración esencial de WSL (
wsl.conf) - Configuración de resolución DNS para herramientas de Kali
- Crítico: Comprender el comportamiento de localhost en WSL 2 (comunicación Windows → Kali)
- Pruebas de red y resolución de problemas
⚠️ Importante: El cliente MCP en Windows debe poder acceder al servidor Kali a través de localhost. Revise esta guía antes de ejecutar el servidor.
Separación de dependencias
Este proyecto ahora separa las dependencias de Python para los dos componentes de ejecución:
requirements.kali.txt– Solo lo que necesita el código Python del servidor API de Kali (Flask, etc.)requirements.mcp.txt– Dependencias para la interfaz del cliente del servidor MCP (requests, FastMCP, librerías de prueba)requirements.txt– Archivo informativo que describe la separación; ya no contiene paquetes directos.
Instale en cada máquina según corresponda:
pip install -r requirements.kali.txt # On Kali host running kali-server/
pip install -r requirements.mcp.txt # On host running mcp-server/
⚠️ Advertencia de seguridad
IMPORTANTE: Tenga mucha precaución al ejecutar el servidor Kali con privilegios de sudo:
# ⚠️ DANGEROUS - Avoid if possible
sudo python kali_server.py
Por qué esto es riesgoso:
- Todo el servidor se ejecuta con privilegios de root
- Todos los endpoints de API y comandos se ejecutan con acceso completo al sistema
- Cualquier compromiso del servidor otorga acceso root completo al sistema
- No hay separación de privilegios ni control de acceso
Alternativas más seguras:
- Ejecute el servidor como un usuario normal (muchas herramientas funcionan sin root)
- Use permisos sudo específicos solo para los comandos que los requieran
- Considere la contenedorización o virtualización para el aislamiento
- Implemente la escalada de privilegios solo cuando sea absolutamente necesario
Para entornos de producción: Consulte TODO.md para conocer las mejoras de seguridad planificadas, incluida la gestión granular de privilegios y los controles de acceso.
📖 Uso
Consulte usage.md para obtener instrucciones detalladas de uso y ejemplos.
🧪 Pruebas
El proyecto incluye suites de pruebas integrales que utilizan contenedores Docker para entornos de prueba aislados.
Ejecutar todas las pruebas
cd tests
./run_all.bat # Windows
# or
chmod +x run_all.sh && ./run_all.sh # Linux
Entorno de pruebas Docker
cd tests/docker
docker-compose up -d --build
python test_config_docker.py
Pruebas del gestor SSH
cd tests/kali
python -m pytest test_ssh_manager.py -v
Configuración de pruebas
Las pruebas utilizan contenedores Docker para entornos de prueba consistentes y aislados. La configuración se establece automáticamente en:
tests/kali/test_config.py- Configuración principal de pruebas (basada en Docker)tests/docker/test_config_docker.py- Configuración de pruebas específica de Docker
📋 Herramientas MCP disponibles
El servidor MCP proporciona las siguientes herramientas:
| Herramienta | Descripción |
|---|---|
mcp_kali_mcp_nmap_scan | Escaneo de red y enumeración |
mcp_kali_mcp_gobuster_scan | Enumeración de directorios y archivos |
mcp_kali_mcp_hydra_attack | Fuerza bruta de contraseñas |
mcp_kali_mcp_start_ssh_session | Gestión de sesiones SSH |
mcp_kali_mcp_execute_ssh_command | Ejecución de comandos SSH |
mcp_kali_mcp_ssh_upload_content | Subida de archivos vía SSH |
mcp_kali_mcp_ssh_download_content | Descarga de archivos vía SSH |
mcp_kali_mcp_start_reverse_shell_listener | Gestión de shells inversos |
mcp_kali_mcp_generate_reverse_shell_payload | Generación de payloads |
🔍 Operaciones de archivos
Subida con verificación de integridad
# The system automatically verifies file integrity using SHA256 checksums
upload_result = {
"success": True,
"source_checksum": "abc123...",
"remote_checksum": "abc123...",
"checksum_verified": True,
"integrity_check": "PASSED"
}
Descarga con verificación de integridad
# All downloads include automatic integrity verification
download_result = {
"success": True,
"remote_checksum": "def456...",
"local_checksum": "def456...",
"checksum_verified": True,
"integrity_check": "PASSED"
}
🚨 Consideraciones de seguridad
- Entorno de pruebas: Todas las pruebas utilizan contenedores Docker aislados por seguridad
- Seguridad de red: Asegúrese de tener una configuración de firewall adecuada
- Autenticación: Use contraseñas seguras y autenticación basada en claves
- Gestión de sesiones: Limpie regularmente las sesiones no utilizadas
- Permisos de archivos: Establezca permisos de archivos apropiados en los archivos subidos
- Registro: Monitoree todas las actividades mediante un registro integral
🐛 Solución de problemas
Problemas comunes
-
Conexión rechazada
# Check if server is running curl http://localhost:5000/health -
Conexión SSH fallida
# Verify SSH connectivity ssh user@target-host -
Herramienta no encontrada
# Install missing tools sudo apt update && sudo apt install nmap gobuster -
Problemas con el modo de prueba Docker
Si encuentra errores relacionados con Docker al usar el modo
--testen Kali Linux:Soluciones comunes de Docker en Kali Linux:
# Install Docker sudo apt update && sudo apt install docker.io # Start Docker service sudo systemctl start docker sudo systemctl enable docker # Add user to docker group (then logout/login) sudo usermod -aG docker $USER # Test Docker access docker --version docker psSi los comandos de Docker funcionan manualmente pero fallan en el modo de prueba:
- El problema podría estar relacionado con PATH en el entorno de Python
- Intente ejecutar con sudo:
sudo python kali_server.py --test - Verifique los permisos del socket de Docker:
ls -la /var/run/docker.sock - Asegúrese de estar ejecutando esto en Kali Linux, no en Windows
Modo de depuración
Habilite el registro de depuración:
# For the server
python kali_server.py --test --debug
# For Python logging
import logging
logging.basicConfig(level=logging.DEBUG)
🤝 Contribuciones
- Haga un fork del repositorio
- Cree una rama de características
- Siga los estándares de codificación (comentarios en inglés, nombres adecuados)
- Agregue pruebas integrales
- Actualice la documentación
- Envíe una solicitud de extracción (pull request)
Estándares de codificación
- Todo el código, variables y funciones deben estar en inglés
- Todos los comentarios y documentación deben estar en inglés claro
- Siga las convenciones de nomenclatura estándar
- Agregue pruebas para nuevas características o correcciones de errores
- Actualice el README y la documentación
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Proyecto original: Este proyecto es inicialmente un fork de MCP-Kali-Server pero ha sido completamente reescrito y reestructurado
- Kali Linux por la plataforma integral de pruebas de penetración
- Model Context Protocol por la interfaz estandarizada
- La comunidad de ciberseguridad por el desarrollo continuo de herramientas
📞 Soporte
- Problemas: GitHub Issues
- Documentación: Wiki
⚠️ Aviso legal: Esta herramienta está diseñada únicamente para pruebas de penetración autorizadas e investigación de seguridad. Los usuarios son responsables de cumplir con las leyes y regulaciones aplicables.