1 puntos por foundcake21 2026-04-13 | Aún no hay comentarios. | Compartir por WhatsApp

Hola. Soy un estudiante universitario de la carrera de seguridad de la información.

Había usado con frecuencia kali-mcp para trabajos de pentesting / pruebas de tráfico / automatización de CTF, pero al trabajar en un entorno con varios agentes conectados al mismo tiempo empecé a tener cuellos de botella, así que decidí reimplementarlo yo mismo en Go.

GitHub: https://github.com/found-cake/kali-mcp-go


Estructura y limitaciones del kali-mcp original

La versión original está implementada con Flask + Python, y la clase CommandExecutor crea un subprocess.Popen por cada solicitud y luego lanza además 2 daemon threads para leer stdout/stderr por separado.

Para un solo agente es suficiente, pero cuando se acumulan solicitudes simultáneas en un entorno multi-agent aparecen problemas como los siguientes.

  • Worker único por defecto de Flask — los agentes se bloquean entre sí
  • Sobrecarga por crear un proceso + threads en cada solicitud
  • Los agentes confunden la demora en la respuesta con un timeout y reintentan la misma tarea

Cambios principales

Servidor

  • Antes: Flask (worker único por defecto)
  • Cambio: Fiber v3 / fasthttp — concurrencia completa

Recolección de salida

  • Antes: bucle de readline con 2 daemon threads
  • Cambio: 2 goroutines + WaitGroup para sincronización, alineando claramente el momento de recolección de stdout/stderr y evitando pérdida de salida

timeout/cancel

  • Antes: process.wait(timeout=...) + kill forzado
  • Cambio: basado en context — cerrando correctamente incluso los pipes

Archivo temporal de Metasploit

  • Antes: /tmp/mks_msf_resource.rc hardcodeado — posible race condition con solicitudes concurrentes
  • Cambio: os.CreateTemp — manejo seguro con nombre de archivo único por solicitud

Soporte para tshark

  • Antes: no había
  • Cambio: se agregó un endpoint dedicado

Arquitectura

Se mantuvo la misma estructura de 2 capas que la original, pero reemplazando el interior.

[AI Client]  →(MCP stdio)→  [mcp-client]  →(HTTP + Bearer token)→  [kali-server]  →(exec)→  [nmap, tshark, ...]  

Aún no hay comentarios.

Aún no hay comentarios.