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

image

🐉 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=noninteractive para 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

image

Escaneo de Vulnerabilidades

 Autonomous Vulnerability Scanning with GitHub Copilot & Kali MCP Server

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 PATH de tu sistema.
  • Python: Python 3.10 o superior.
  • Dependencias: El SDK de Python mcp (pip install mcp).
  • Permisos: Algunas herramientas expuestas, como tcpdump para 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, hydra y john.

  • 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-packages de PEP 668 para instalar el SDK de Python mcp globalmente dentro del contenedor aislado.


  1. Clona el repositorio y navega al directorio.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server

  1. 🏗️ Construye la imagen
docker build -t kali-mcp-server .

  1. 🏃 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.

  1. Clona el repositorio y navega al directorio.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server

  1. 🐍 Configura un Entorno Virtual de Python:
python3 -m venv venv
source venv/bin/activate

  1. Instala el SDK de MCP:
pip install mcp

  1. Asegúrate de que todas las herramientas de Kali estén instaladas:
    Asegúrate de que herramientas como nmap, gobuster, sqlmap y msfconsole estén disponibles en tu sistema PATH.
  2. 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)

  1. Si no existe, añade un directorio .vscode en tu espacio de trabajo.
  2. Añade el servidor MCP actualizando .vscode/mcp.json de 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íaNombre de la HerramientaDescripción y Parámetros
Reconocimientowhois_lookupRealiza una consulta WHOIS. Parámetros: domain (str).
Reconocimientodnsenum_scanEnumera registros DNS. Parámetros: domain (str).
Reconocimientowhatweb_scanIdentifica CMS y cabeceras. Parámetros: target_url (str).
Reconocimientoamass_enumEnumeración pasiva de subdominios. Parámetros: domain (str).
Reconocimientonetdiscover_scanEncuentra hosts activos. Parámetros: ip_range (str).
Escaneonmap_scanDescubrimiento de red y escaneo de puertos. Parámetros: target (str), flags (str, por defecto: -sV -F).
Escaneoenum4linux_scanEnumera sistemas Windows/Samba. Parámetros: target_ip (str).
Escaneosmbclient_listLista recursos compartidos SMB. Parámetros: target_ip (str), user (str), password (str).
Seguridad Webnikto_scanEscaneo de vulnerabilidades web. Parámetros: target_url (str).
Seguridad Webgobuster_dirFuerza bruta de directorios. Parámetros: target_url (str), wordlist (str).
Seguridad Webdirb_scanEscaneo de contenido web. Parámetros: target_url (str), wordlist (str).
Seguridad Webffuf_scanFuzzing rápido de directorios web. Parámetros: target_url (str), wordlist (str).
Seguridad Webwfuzz_scanFuzzing de parámetros/directorios web. Parámetros: target_url (str), wordlist (str).
Seguridad Websqlmap_scanDetección/explotación de inyección SQL. Parámetros: target_url (str), params (str).
Seguridad Webwpscan_enumEscáner de vulnerabilidades de WordPress. Parámetros: target_url (str).
Descifradohydra_bruteforceFuerza bruta de credenciales de inicio de sesión. Parámetros: target (str), service (str), user (str), wordlist (str).
Descifradojohn_crackDescifra hashes de contraseñas. Parámetros: hash_file (str), wordlist (str).
Descifradohashcat_crackDescifrado de hashes intensivo en recursos. Parámetros: hash_file (str), hash_type (str), wordlist (str).
Explotaciónsearchsploit_queryBusca en la Base de Datos de Exploits. Parámetros: query (str).
Explotacióntcpdump_sniffCaptura paquetes de red. Parámetros: interface (str), packet_count (str).
Explotaciónmetasploit_exploitEjecuta 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 pares KEY=VALUE separados 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 netdiscover o tcpdump dentro 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.