io.github.pierre3/zap-mcp
dotnet-zap-mcp
Servidor MCP (Model Context Protocol) para OWASP ZAP. Permite a los agentes de IA (Claude, GitHub Copilot, etc.) controlar el escaneo de vulnerabilidades de ZAP mediante MCP.
Características
45 herramientas MCP para controlar OWASP ZAP (escaneo, alertas, spider, ajax spider, contexto, autenticación, informes, etc.)
Gestión integrada de Docker Compose (iniciar/detener ZAP con una sola llamada de herramienta)
Configuración sin configuración: genera automáticamente claves API y extrae activos de Docker
Funciona con cualquier cliente compatible con MCP (Claude Desktop, VS Code, etc.)
Related MCP server: Grype MCP Server
Instalación
dotnet tool install -g dotnet-zap-mcpRequisitos previos
Docker (Docker Engine o Docker Desktop) con soporte de
docker compose(para la gestión integrada del contenedor de ZAP)
Configuración
Configuración cero (recomendada)
No se necesita configuración. El agente llama a DockerComposeUp que automáticamente:
Extrae los activos de Docker a
~/.zap-mcp/docker/Genera una clave API aleatoria
Inicia el contenedor de ZAP en
localhost:8090Espera a que ZAP esté en buen estado
Persistencia de datos
El contenedor de ZAP utiliza dos volúmenes Docker con nombre:
Volumen | Ruta del contenedor | Propósito |
|
| Configuración de ZAP, contextos, sesiones, políticas de escaneo (persistidos entre reinicios) |
|
| Directorio compartido para informes, archivos de sesión e importación/exportación de contextos |
En el primer lanzamiento, la plantilla config.xml se copia en zap-home. En lanzamientos posteriores, solo se actualiza la clave API: cualquier cambio realizado a través de ZAP (contextos, ajustes de autenticación, políticas de escaneo, etc.) se conserva.
El volumen zap-data contiene:
reports/— informes de escaneo generadossessions/— sesiones de ZAP guardadascontexts/— archivos de contexto exportados
Claude Desktop / Claude Code
Añade a tu configuración de MCP:
{
"mcpServers": {
"zap": {
"command": "zap-mcp"
}
}
}VS Code (Copilot)
Añade a .vscode/mcp.json:
{
"servers": {
"zap": {
"command": "zap-mcp"
}
}
}Con una instancia de ZAP existente
Si ya tienes una instancia de ZAP en ejecución, pasa los detalles de conexión mediante variables de entorno:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "your-api-key"
}
}
}
}Herramientas disponibles
Gestión de Docker
Herramienta | Parámetros | Descripción |
| — | Inicia el contenedor de ZAP y espera a que esté en buen estado |
| — | Detiene y elimina el contenedor de ZAP |
| — | Comprueba el estado del contenedor |
|
| Obtiene los registros recientes del contenedor |
Núcleo de ZAP
Herramienta | Parámetros | Descripción |
| — | Verifica la conectividad con ZAP |
| — | Lista los hosts registrados |
| — | Lista los sitios registrados |
|
| Lista las URLs registradas para una URL base |
Spider
Herramienta | Parámetros | Descripción |
|
| Inicia un escaneo de spider para rastrear y descubrir páginas |
|
| Comprueba el progreso del spider (0-100%) |
|
| Obtiene las URLs descubiertas por el spider |
|
| Detiene un escaneo de spider en ejecución |
Escaneo activo
Herramienta | Parámetros | Descripción |
|
| Inicia un escaneo activo de vulnerabilidades |
|
| Comprueba el progreso del escaneo activo (0-100%) |
|
| Detiene un escaneo activo en ejecución |
Escaneo pasivo
Herramienta | Parámetros | Descripción |
| — | Comprueba el progreso del escaneo pasivo (registros restantes) |
Alertas
Herramienta | Parámetros | Descripción |
|
| Recuento de alertas por nivel de riesgo |
|
| Lista detallada de alertas con paginación y filtro de riesgo |
Informes
Herramienta | Parámetros | Descripción |
| — | Genera un informe de escaneo en HTML |
| — | Genera un informe de escaneo en JSON |
| — | Genera un informe de escaneo en XML |
Gestión de contexto
Herramienta | Parámetros | Descripción |
| — | Lista todos los contextos definidos en ZAP |
|
| Obtiene los detalles del contexto (patrones de alcance, etc.) |
|
| Crea un nuevo contexto |
|
| Elimina un contexto |
|
| Añade un patrón de inclusión de URL al alcance del contexto |
|
| Añade un patrón de exclusión de URL al alcance del contexto |
|
| Importa un archivo de contexto en ZAP |
|
| Exporta un contexto a un archivo |
Autenticación
Herramienta | Parámetros | Descripción |
|
| Obtiene el método de autenticación configurado para un contexto |
|
| Establece el método de autenticación (basado en formularios, JSON, scripts, HTTP) |
|
| Establece el patrón regex que indica el estado de sesión iniciada |
|
| Establece el patrón regex que indica el estado de sesión cerrada |
Usuarios
Herramienta | Parámetros | Descripción |
|
| Lista todos los usuarios de un contexto |
|
| Crea un nuevo usuario |
|
| Elimina un usuario |
|
| Establece las credenciales del usuario (usuario/contraseña) |
|
| Habilita o deshabilita un usuario |
Usuario forzado
Herramienta | Parámetros | Descripción |
|
| Establece el usuario forzado para un contexto |
|
| Habilita o deshabilita el modo de usuario forzado globalmente |
|
| Obtiene el estado del modo de usuario forzado y el usuario forzado actual |
Ajax Spider
Herramienta | Parámetros | Descripción |
|
| Inicia el Ajax Spider para aplicaciones con mucho JavaScript |
|
| Inicia el Ajax Spider como un usuario específico |
| — | Obtiene el estado del Ajax Spider (en ejecución/detenido) |
| — | Obtiene el resumen de resultados del Ajax Spider |
| — | Detiene el Ajax Spider |
Flujo de trabajo típico
El agente llama a
DockerComposeUppara iniciar ZAPConfigura el navegador/Playwright para usar ZAP como proxy (
http://127.0.0.1:8090)Navega por la aplicación objetivo a través del proxy
El agente llama a
StartSpiderpara rastrear la aplicación, luegoGetSpiderStatuspara monitorear el progresoEl agente llama a
GetPassiveScanStatuspara esperar a que se complete el escaneo pasivoEl agente llama a
StartActiveScanen páginas clave, luegoGetActiveScanStatuspara monitorear el progresoEl agente llama a
GetAlertsSummaryyGetAlertspara recuperar los hallazgos de vulnerabilidadesEl agente llama a
GetHtmlReportoGetJsonReportpara generar un informe de escaneoEl agente llama a
DockerComposeDowncuando termina
Nota: La configuración de ZAP (contextos, autenticación, políticas de escaneo) se persiste en el volumen Docker
zap-home. Puedes detener y reiniciar el contenedor sin perder la configuración.
Pruébalo (con la aplicación vulnerable incluida)
Este repositorio incluye una aplicación web intencionalmente vulnerable para probar el escaneo de ZAP. La aplicación contiene vulnerabilidades comunes (XSS, inyección SQL, CSRF, redirección abierta) para que ZAP pueda detectar hallazgos reales.
Configuración
# Start ZAP and the vulnerable target app
docker compose -f tests/docker/docker-compose.test.yml up -d --build
# Wait until both containers are healthy
docker compose -f tests/docker/docker-compose.test.yml psLuego configura tu cliente MCP para conectarse a esta instancia de ZAP:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "test-api-key-for-ci"
}
}
}
}La aplicación vulnerable es accesible en
http://targetdesde la red Docker (utilizada por ZAP), y enhttp://localhost:8080desde tu máquina host.
Ejemplo 1: Escaneo Rápido
Indicación al agente:
Escanea http://target en busca de vulnerabilidades. Ejecuta un rastreo con spider, espera a que termine el escaneo pasivo, luego muéstrame el resumen de alertas y genera un informe HTML.
Flujo de herramientas esperado:
GetVersion → Verify ZAP connectivity
StartSpider → url: "http://target"
GetSpiderStatus → Poll until 100%
GetPassiveScanStatus → Poll until 0 records remaining
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target"
GetHtmlReport → Generate reportZAP descubrirá páginas como /search, /login, /users, /about, /contact, y el escaneo pasivo reportará problemas como cabeceras de seguridad faltantes y vulnerabilidades CSRF.
Ejemplo 2: Escaneo Autenticado
La página /admin requiere inicio de sesión (usuario: admin, contraseña: password). Un escaneo autenticado permite que ZAP acceda a páginas protegidas.
Indicación al agente:
Configura un escaneo autenticado para http://target. El formulario de inicio de sesión está en /login con los campos "username" y "password" (credenciales: admin / password). El indicador de sesión iniciada es "Welcome, admin". Después de configurar la autenticación, rastrea el sitio como el usuario autenticado y ejecuta un escaneo activo.
Flujo de herramientas esperado:
CreateContext → contextName: "target-auth"
IncludeInContext → regex: "http://target.*"
SetAuthenticationMethod → contextId, authMethodName: "formBasedAuthentication",
authMethodConfigParams: "loginUrl=http://target/login&loginRequestData=username%3D%7B%25username%25%7D%26password%3D%7B%25password%25%7D"
SetLoggedInIndicator → loggedInIndicatorRegex: "Welcome, admin"
CreateUser → contextId, name: "admin"
SetAuthenticationCredentials → contextId, userId, authCredentialsConfigParams: "username=admin&password=password"
SetUserEnabled → contextId, userId, enabled: true
SetForcedUser → contextId, userId
SetForcedUserModeEnabled → enabled: true
StartSpider → url: "http://target", contextName: "target-auth"
GetSpiderStatus → Poll until 100%
GetPassiveScanStatus → Poll until 0 records remaining
StartActiveScan → url: "http://target"
GetActiveScanStatus → Poll until 100%
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target"
SetForcedUserModeEnabled → enabled: falseCon la autenticación configurada, ZAP puede acceder a /admin y probar vulnerabilidades detrás del inicio de sesión.
Ejemplo 3: Evaluación Completa de Vulnerabilidades
Indicación al agente:
Realiza una evaluación completa de vulnerabilidades de http://target. Rastrea el sitio, ejecuta un escaneo activo y luego dame un desglose detallado de todas las vulnerabilidades descubiertas agrupadas por nivel de riesgo.
Flujo de herramientas esperado:
StartSpider → url: "http://target", recurse: true
GetSpiderStatus → Poll until 100%
GetSpiderResults → Review discovered URLs
GetPassiveScanStatus → Poll until 0 records remaining
StartActiveScan → url: "http://target", recurse: true
GetActiveScanStatus → Poll until 100%
GetAlertsSummary → baseUrl: "http://target"
GetAlerts → baseUrl: "http://target", riskId: "3" (High)
GetAlerts → baseUrl: "http://target", riskId: "2" (Medium)
GetAlerts → baseUrl: "http://target", riskId: "1" (Low)
GetHtmlReport → Generate final reportEl escaneo activo detectará vulnerabilidades que incluyen:
Alta: SQL Injection (
/users?id=), Cross Site Scripting (/search?q=)Media: CSRF (tokens faltantes en
/login), Open Redirect (/redirect?url=)Baja/Informativa: Cabeceras de seguridad faltantes, problemas de cookies, etc.
Limpieza
docker compose -f tests/docker/docker-compose.test.yml down -vLicencia
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceIntegrates OWASP ZAP security testing with AI assistants through MCP, enabling automated vulnerability scanning and AI-powered security analysis during development. Supports multiple scan types including active, passive, and AJAX spider scans with real-time status updates.5MIT

Grype MCP Serverofficial
AlicenseAqualityFmaintenanceEnables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.99Apache 2.0- AlicenseAqualityDmaintenanceEnables AI agents to search, retrieve, and analyze vulnerability data from the NIST National Vulnerability Database through a comprehensive Model Context Protocol server.88MIT
- FlicenseNot gradedqualityCmaintenanceA lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.
Related MCP Connectors
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pierre3/dotnet-zap-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server