Skip to main content
Glama
pierre3

io.github.pierre3/zap-mcp

by pierre3

dotnet-zap-mcp

NuGet NuGet Downloads Release

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-mcp

Requisitos previos

  • .NET 10 SDK

  • 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:

  1. Extrae los activos de Docker a ~/.zap-mcp/docker/

  2. Genera una clave API aleatoria

  3. Inicia el contenedor de ZAP en localhost:8090

  4. Espera 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

zap-home

/home/zap/.ZAP

Configuración de ZAP, contextos, sesiones, políticas de escaneo (persistidos entre reinicios)

zap-data

/zap/wrk/data

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 generados

  • sessions/ — sesiones de ZAP guardadas

  • contexts/ — 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

DockerComposeUp

Inicia el contenedor de ZAP y espera a que esté en buen estado

DockerComposeDown

Detiene y elimina el contenedor de ZAP

DockerComposeStatus

Comprueba el estado del contenedor

DockerComposeLogs

tail

Obtiene los registros recientes del contenedor

Núcleo de ZAP

Herramienta

Parámetros

Descripción

GetVersion

Verifica la conectividad con ZAP

GetHosts

Lista los hosts registrados

GetSites

Lista los sitios registrados

GetUrls

baseUrl

Lista las URLs registradas para una URL base

Spider

Herramienta

Parámetros

Descripción

StartSpider

url, maxChildren, recurse, subtreeOnly, contextName

Inicia un escaneo de spider para rastrear y descubrir páginas

GetSpiderStatus

scanId

Comprueba el progreso del spider (0-100%)

GetSpiderResults

scanId

Obtiene las URLs descubiertas por el spider

StopSpider

scanId

Detiene un escaneo de spider en ejecución

Escaneo activo

Herramienta

Parámetros

Descripción

StartActiveScan

url, recurse, inScopeOnly, scanPolicyName, contextId

Inicia un escaneo activo de vulnerabilidades

GetActiveScanStatus

scanId

Comprueba el progreso del escaneo activo (0-100%)

StopActiveScan

scanId

Detiene un escaneo activo en ejecución

Escaneo pasivo

Herramienta

Parámetros

Descripción

GetPassiveScanStatus

Comprueba el progreso del escaneo pasivo (registros restantes)

Alertas

Herramienta

Parámetros

Descripción

GetAlertsSummary

baseUrl

Recuento de alertas por nivel de riesgo

GetAlerts

baseUrl, start, count, riskId

Lista detallada de alertas con paginación y filtro de riesgo

Informes

Herramienta

Parámetros

Descripción

GetHtmlReport

Genera un informe de escaneo en HTML

GetJsonReport

Genera un informe de escaneo en JSON

GetXmlReport

Genera un informe de escaneo en XML

Gestión de contexto

Herramienta

Parámetros

Descripción

GetContextList

Lista todos los contextos definidos en ZAP

GetContext

contextName

Obtiene los detalles del contexto (patrones de alcance, etc.)

CreateContext

contextName

Crea un nuevo contexto

RemoveContext

contextName

Elimina un contexto

IncludeInContext

contextName, regex

Añade un patrón de inclusión de URL al alcance del contexto

ExcludeFromContext

contextName, regex

Añade un patrón de exclusión de URL al alcance del contexto

ImportContext

contextFilePath

Importa un archivo de contexto en ZAP

ExportContext

contextName, contextFilePath

Exporta un contexto a un archivo

Autenticación

Herramienta

Parámetros

Descripción

GetAuthenticationMethod

contextId

Obtiene el método de autenticación configurado para un contexto

SetAuthenticationMethod

contextId, authMethodName, authMethodConfigParams

Establece el método de autenticación (basado en formularios, JSON, scripts, HTTP)

SetLoggedInIndicator

contextId, loggedInIndicatorRegex

Establece el patrón regex que indica el estado de sesión iniciada

SetLoggedOutIndicator

contextId, loggedOutIndicatorRegex

Establece el patrón regex que indica el estado de sesión cerrada

Usuarios

Herramienta

Parámetros

Descripción

GetUsersList

contextId

Lista todos los usuarios de un contexto

CreateUser

contextId, name

Crea un nuevo usuario

RemoveUser

contextId, userId

Elimina un usuario

SetAuthenticationCredentials

contextId, userId, authCredentialsConfigParams

Establece las credenciales del usuario (usuario/contraseña)

SetUserEnabled

contextId, userId, enabled

Habilita o deshabilita un usuario

Usuario forzado

Herramienta

Parámetros

Descripción

SetForcedUser

contextId, userId

Establece el usuario forzado para un contexto

SetForcedUserModeEnabled

enabled

Habilita o deshabilita el modo de usuario forzado globalmente

GetForcedUserStatus

contextId

Obtiene el estado del modo de usuario forzado y el usuario forzado actual

Ajax Spider

Herramienta

Parámetros

Descripción

StartAjaxSpider

url, inScope, contextName, subtreeOnly

Inicia el Ajax Spider para aplicaciones con mucho JavaScript

StartAjaxSpiderAsUser

contextName, userId, url, subtreeOnly

Inicia el Ajax Spider como un usuario específico

GetAjaxSpiderStatus

Obtiene el estado del Ajax Spider (en ejecución/detenido)

GetAjaxSpiderResults

Obtiene el resumen de resultados del Ajax Spider

StopAjaxSpider

Detiene el Ajax Spider

Flujo de trabajo típico

  1. El agente llama a DockerComposeUp para iniciar ZAP

  2. Configura el navegador/Playwright para usar ZAP como proxy (http://127.0.0.1:8090)

  3. Navega por la aplicación objetivo a través del proxy

  4. El agente llama a StartSpider para rastrear la aplicación, luego GetSpiderStatus para monitorear el progreso

  5. El agente llama a GetPassiveScanStatus para esperar a que se complete el escaneo pasivo

  6. El agente llama a StartActiveScan en páginas clave, luego GetActiveScanStatus para monitorear el progreso

  7. El agente llama a GetAlertsSummary y GetAlerts para recuperar los hallazgos de vulnerabilidades

  8. El agente llama a GetHtmlReport o GetJsonReport para generar un informe de escaneo

  9. El agente llama a DockerComposeDown cuando 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 ps

Luego 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://target desde la red Docker (utilizada por ZAP), y en http://localhost:8080 desde 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 report

ZAP 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: false

Con 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 report

El 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 -v

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Integrates 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.
    5
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.
    9
    9
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to search, retrieve, and analyze vulnerability data from the NIST National Vulnerability Database through a comprehensive Model Context Protocol server.
    8
    8
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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