
Servidor del Model Context Protocol para el descubrimiento autónomo de vulnerabilidades
MCPwner es un servidor del Protocolo de Contexto del Modelo (MCP) que integra herramientas de pruebas de seguridad en flujos de trabajo impulsados por LLM. Proporciona una interfaz unificada para escaneo de secretos, análisis estático (SAST), análisis de composición de software (SCA), seguridad de infraestructura como código (IaC), fuzzing de código fuente, reconocimiento, pruebas dinámicas de seguridad de aplicaciones (DAST) e investigación de vulnerabilidades, incluido el descubrimiento de 0-day. En lugar de encadenar herramientas manualmente y pegar salidas en su LLM, MCPwner estandariza y transmite los resultados directamente al contexto de trabajo del modelo. Esto permite un razonamiento continuo, correlación y descubrimiento de rutas de ataque a lo largo del ciclo de vida de la investigación de seguridad, desde el mapeo de superficies de ataque y la identificación de vulnerabilidades conocidas hasta el descubrimiento de vectores de ataque novedosos.
Nota: Este proyecto está en desarrollo activo. Obtenga más información sobre los MCP aquí.
![]() | ![]() |
|---|
Las siguientes herramientas están planificadas para versiones futuras.
Generadores de cadenas de gadgets y payloads para weaponizar sumideros de deserialización identificados durante SAST. Existen ecosistemas maduros de cadenas de gadgets para Java, .NET y PHP; Python está cubierto mediante generación de pickle malicioso (la deserialización de Ruby/Node está basada en payloads y reside en el corpus de Payloads a continuación):
Corpus curados de payloads y listas de palabras para respaldar las herramientas anteriores:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### Escanear un repositorio de GitHub en busca de secretos```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### Análisis de Rutas de Ataque```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## Instalación
### Prerrequisitos
**Requisitos del sistema:**
- Docker Engine 20.10+ y Docker Compose 2.0+
- 8GB de RAM como mínimo (16GB recomendados para ejecutar múltiples herramientas)
- 20GB de espacio libre en disco (las imágenes de herramientas de seguridad son grandes)
- Plataformas compatibles: Linux, macOS, Windows (con WSL2)
**Cliente MCP:**
- Claude Desktop, Cursor, Kiro o cualquier cliente compatible con MCP
### Configuración
1. **Clona el repositorio**: ```bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
Una vez que los contenedores Docker estén en ejecución, agrega MCPwner a tu cliente MCP:
Importante: Registro Dinámico de Herramientas
MCPwner utiliza una arquitectura modular con opción de participación. Las herramientas de seguridad se rigen por los profiles de Docker Compose.
.env (COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc) determina qué contenedores se ponen en línea. Alternativamente, puedes sobrescribir esto e iniciar perfiles específicos a través de la CLI: docker compose --profile sast --profile dast up -d.semgrep), omite su categoría (sast) del archivo .env y lista manualmente las otras herramientas que desees (bandit,gosec,codeql).utilities (por ejemplo, Linguist, WireMock, Chromium) se tratan como dependencias centrales permanentes. Se ejecutan incondicionalmente con docker compose up -d para garantizar que las dependencias críticas entre herramientas (como la detección de idiomas) siempre funcionen.Ubicaciones de los Archivos de Configuración:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.json en tu proyecto o directorio de configuraciónInstalación con un Solo Clic (requiere Docker en ejecución):
Configuración Manual:
Agrega lo siguiente a tu archivo de configuración MCP:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
Reinicie su cliente MCP para cargar la nueva configuración del servidor.
### Escaneo de Proyectos Locales
Para escanear proyectos desde su máquina anfitriona, móntelos en el contenedor agregando un volumen en `docker-compose.yaml`:```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Luego usa la herramienta create_workspace con:
source_type="local"source="/mnt/projects/my-project"MCPwner persiste automáticamente los metadatos del espacio de trabajo y de la base de datos de CodeQL en los reinicios del contenedor mediante almacenamiento basado en archivos en el volumen compartido de Docker (/workspaces/.metadata/). No se requiere configuración: el sistema carga los datos existentes al iniciar y los guarda después de cada operación mediante escrituras atómicas para evitar la corrupción.
Control de Limpieza del Espacio de Trabajo:
delete_files=True, delete_metadata=False - Libera espacio en disco pero conserva el historial del espacio de trabajo (recomendado)delete_files=True, delete_metadata=True - Eliminación completa del espacio de trabajo y metadatosdelete_files=False, delete_metadata=True - Elimina de la lista pero conserva los archivos en discoCopia de seguridad:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## Arquitectura
MCPwner utiliza comunicación basada en HTTP entre contenedores para soportar futuros despliegues remotos. Aunque actualmente optimizado para uso local, la arquitectura puede adaptarse para despliegues remotos con modificaciones mínimas.
**Principios de diseño:**
- Aislamiento de contenedores para la ejecución de herramientas de seguridad
- Formatos de salida estandarizados para consumo de LLM (SARIF/JSON)
- Arquitectura de complementos extensible para nuevas herramientas
- API sin estado (las memorias son gestionadas por el usuario)
**Resumen de la arquitectura:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
MCPwner expone las siguientes herramientas a través de la interfaz MCP:
Gestión del Espacio de Trabajo:
create_workspace - Inicializar espacio de trabajo de escaneo desde una ruta local, URL de Git o repositorio de GitHublist_workspaces - Listar todos los espacios de trabajo disponiblescleanup_workspace - Eliminar espacio de trabajo y datos asociadosRegistro de Hallazgos:
Con alcance al espacio de trabajo, persistido en disco (<workspace>/findings/<id>.json), y siempre disponible — no se requiere contenedor ni verificación de estado. Esta es la fuente de verdad para el pipeline de investigación profunda multi-agente: cada hipótesis, resultado de PoC y veredicto de revisión es una entrada de hallazgo en lugar de prosa.
upsert_finding - Crear o actualizar un hallazgo. Fusiona en profundidad con una entrada existente por defecto, por lo que un agente puede escribir su propio subobjeto (ej. poc) sin sobrescribir los campos de otro agente (ej. review)list_findings - Listar todos los hallazgos en un espacio de trabajo, opcionalmente filtrados por status (ej. poc-confirmed, review-approved)get_finding - Recuperar un único hallazgo por idSAST (Análisis Estático):
run_sast_scan - Ejecutar herramientas de análisis estático (Semgrep, Bandit, Gosec, Brakeman, PMD, Psalm, NodeJsScan, Joern, YASA)get_sast_report - Recuperar resultados del escaneo SASTsast_list_tools - Listar herramientas SAST disponiblesDetección de Secretos:
run_secrets_scan - Ejecutar herramientas de escaneo de secretos (Gitleaks, TruffleHog, Whispers, detect-secrets, Hawk-Eye)get_secrets_report - Recuperar resultados del escaneo de secretossecrets_list_tools - Listar herramientas de escaneo de secretos disponiblesSCA (Análisis de Composición de Software):
run_sca_scan - Analizar dependencias en busca de vulnerabilidades (Grype, Syft, OSV-Scanner, Retire.js)get_sca_report - Recuperar resultados del escaneo SCAsca_list_tools - Listar herramientas SCA disponiblesReconocimiento:
run_reconnaissance_scan - Ejecutar una única herramienta de reconocimiento (Subfinder, Amass, Nmap, Masscan, httpx, Katana, ffuf, bbot, gau, Arjun, wafw00f, Kiterunner)run_reconnaissance_chain - Encadenar múltiples herramientas de reconocimiento secuencialmenteget_reconnaissance_report - Recuperar resultados del escaneo de reconocimientoreconnaissance_list_tools - Listar herramientas de reconocimiento disponiblesCodeQL:
detect_languages - Detectar lenguajes en el código base mediante Linguistcreate_codeql_database - Crear base de datos CodeQL para análisislist_databases - Listar bases de datos CodeQL disponibleslist_query_packs - Listar paquetes de consultas disponiblesexecute_query - Ejecutar consultas CodeQL específicasSeguridad de Infraestructura e IaC:
run_iac_scan - Escanear infraestructura como código en busca de configuraciones incorrectas (Checkov, KICS, Terrascan, TFSec, Hadolint)get_iac_report - Recuperar resultados del escaneo IaCiac_list_tools - Listar herramientas de escaneo IaC disponiblesFuzzing de Código Fuente:
run_fuzzing_scan - Ejecutar una campaña de fuzzing de caja blanca guiada por cobertura contra un harness por objetivo (Atheris, Jazzer, Jazzer.js, PHP-Fuzzer)get_fuzzing_report - Recuperar resultados de fallos de fuzzing (entrada que causa el fallo + traza de pila)fuzzing_list_tools - Listar motores de fuzzing disponibles, filtrados por lenguaje detectadoDAST (Pruebas Dinámicas de Seguridad de Aplicaciones):
run_dast_scan - Ejecutar herramientas de pruebas dinámicas de seguridad de aplicaciones (sqlmap, NoSQLMap, Commix, Dalfox, SSTImap, SSRFmap, jwt_tool, interactsh)get_dast_report - Recuperar resultados del escaneo DASTdast_list_tools - Listar herramientas DAST disponiblesUtilidades:
run_utilities_scan - Ejecutar una herramienta de utilidad contra un objetivo en vivo (Linguist, WireMock, Mitmproxy, aiohttp, Headless Chromium)get_utilities_report - Recuperar resultados del escaneo de utilidadesutilities_list_tools - Listar herramientas de utilidad disponibles y sus opciones de configuraciónSalud y Monitoreo:
health_check - Verificar disponibilidad del servidor y las herramientaslist_tools - Listar todas las herramientas disponibles y su estadoMCPwner ejecuta herramientas de seguridad que pueden realizar operaciones intrusivas. Úselo solo en sistemas y bases de código de su propiedad o para los que tenga permiso explícito para realizar pruebas; el acceso no autorizado es ilegal. Restrinja el acceso al servidor MCP a usuarios autorizados y considere el aislamiento de la red para implementaciones en producción. Revise las configuraciones de las herramientas antes de ejecutar escaneos, ya que algunas herramientas pueden generar tráfico de red significativo o carga del sistema. Registre la ejecución y los resultados de las herramientas, teniendo en cuenta que los escaneos de seguridad pueden activar alertas en los sistemas de monitoreo. Siga prácticas de divulgación responsable al informar vulnerabilidades descubiertas con MCPwner. Mantenga las imágenes Docker actualizadas y escanee los contenedores en busca de vulnerabilidades regularmente. Nunca confíe claves de API, tokens o credenciales a archivos de configuración; use variables de entorno o sistemas de gestión de secretos en su lugar.
Además, usted debe ser responsable de su propia seguridad al ejecutar estas herramientas y acceder a bibliotecas de terceros; se sugiere ejecutar todo en un entorno aislado y sin autenticación especial (minimizado y endurecido cuando sea factible).
![]() | ![]() | ![]() | ![]() |
|---|
| bbot | httpx | Katana | gau | Arjun |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| CodeQL | Psalm | Gosec | Bandit | Semgrep |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Brakeman | PMD | NodeJsScan | Joern | YASA |
![]() | ![]() | ![]() | ![]() |
|---|
| Atheris | Jazzer | Jazzer.js | PHP-Fuzzer |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Gitleaks | TruffleHog | detect-secrets | Whispers | Hawk-Eye |
![]() | ![]() | ![]() | ![]() |
|---|
| Grype | Syft | OSV-Scanner | Retire.js |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Checkov | KICS | Terrascan | TFSec | Hadolint |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| sqlmap | NoSQLMap | Commix | Dalfox | SSTImap |
![]() |
|---|
| SSRFmap | jwt_tool | interactsh |
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Linguist | WireMock | Mitmproxy | aiohttp | Chromium w. Playwright |