Skip to main content
Glama
pierre3

io.github.pierre3/zap-mcp

by pierre3

dotnet-zap-mcp

NuGet NuGet Downloads Release

MCP-Server (Model Context Protocol) für OWASP ZAP. Ermöglicht KI-Agenten (Claude, GitHub Copilot usw.), ZAP-Schwachstellenscans über MCP zu steuern.

Funktionen

  • 45 MCP-Tools zur Steuerung von OWASP ZAP (Scannen, Alerts, Spider, Ajax Spider, Kontext, Authentifizierung, Berichte usw.)

  • Integrierte Docker-Compose-Verwaltung (ZAP mit einem einzigen Tool-Aufruf starten/stoppen)

  • Zero-Config-Setup: automatische Generierung von API-Schlüsseln und Extraktion von Docker-Assets

  • Funktioniert mit jedem MCP-kompatiblen Client (Claude Desktop, VS Code usw.)

Related MCP server: Grype MCP Server

Installation

dotnet tool install -g dotnet-zap-mcp

Voraussetzungen

  • .NET 10 SDK

  • Docker (Docker Engine oder Docker Desktop) mit docker compose-Unterstützung (für die integrierte ZAP-Containerverwaltung)

Konfiguration

Zero-Config (empfohlen)

Keine Konfiguration erforderlich. Der Agent ruft DockerComposeUp auf, das automatisch:

  1. Docker-Assets nach ~/.zap-mcp/docker/ extrahiert

  2. Einen zufälligen API-Schlüssel generiert

  3. Den ZAP-Container auf localhost:8090 startet

  4. Wartet, bis ZAP bereit ist (healthy)

Datenpersistenz

Der ZAP-Container verwendet zwei benannte Docker-Volumes:

Volume

Container-Pfad

Zweck

zap-home

/home/zap/.ZAP

ZAP-Einstellungen, Kontexte, Sitzungen, Scan-Richtlinien (über Neustarts hinweg beibehalten)

zap-data

/zap/wrk/data

Gemeinsames Verzeichnis für Berichte, Sitzungsdateien und Kontext-Import/Export

Beim ersten Start wird die Vorlage config.xml in zap-home kopiert. Bei späteren Starts wird nur der API-Schlüssel aktualisiert – alle über ZAP vorgenommenen Änderungen (Kontexte, Authentifizierungseinstellungen, Scan-Richtlinien usw.) bleiben erhalten.

Das zap-data-Volume enthält:

  • reports/ – generierte Scan-Berichte

  • sessions/ – gespeicherte ZAP-Sitzungen

  • contexts/ – exportierte Kontextdateien

Claude Desktop / Claude Code

Fügen Sie zu Ihrer MCP-Konfiguration hinzu:

{
  "mcpServers": {
    "zap": {
      "command": "zap-mcp"
    }
  }
}

VS Code (Copilot)

Fügen Sie zu .vscode/mcp.json hinzu:

{
  "servers": {
    "zap": {
      "command": "zap-mcp"
    }
  }
}

Mit vorhandener ZAP-Instanz

Wenn Sie bereits eine ZAP-Instanz ausführen, übergeben Sie die Verbindungsdetails über Umgebungsvariablen:

{
  "mcpServers": {
    "zap": {
      "command": "zap-mcp",
      "env": {
        "ZAP_BASE_URL": "http://localhost:8090",
        "ZAP_API_KEY": "your-api-key"
      }
    }
  }
}

Verfügbare Tools

Docker-Verwaltung

Tool

Parameter

Beschreibung

DockerComposeUp

ZAP-Container starten und auf Bereitschaft warten

DockerComposeDown

ZAP-Container stoppen und entfernen

DockerComposeStatus

Containerstatus prüfen

DockerComposeLogs

tail

Aktuelle Container-Logs abrufen

ZAP-Kern

Tool

Parameter

Beschreibung

GetVersion

ZAP-Konnektivität überprüfen

GetHosts

Aufgezeichnete Hosts auflisten

GetSites

Aufgezeichnete Sites auflisten

GetUrls

baseUrl

Aufgezeichnete URLs für eine Basis-URL auflisten

Spider

Tool

Parameter

Beschreibung

StartSpider

url, maxChildren, recurse, subtreeOnly, contextName

Einen Spider-Scan starten, um Seiten zu crawlen und zu entdecken

GetSpiderStatus

scanId

Spider-Fortschritt prüfen (0-100%)

GetSpiderResults

scanId

Vom Spider entdeckte URLs abrufen

StopSpider

scanId

Einen laufenden Spider-Scan stoppen

Aktiver Scan

Tool

Parameter

Beschreibung

StartActiveScan

url, recurse, inScopeOnly, scanPolicyName, contextId

Einen aktiven Schwachstellenscan starten

GetActiveScanStatus

scanId

Fortschritt des aktiven Scans prüfen (0-100%)

StopActiveScan

scanId

Einen laufenden aktiven Scan stoppen

Passiver Scan

Tool

Parameter

Beschreibung

GetPassiveScanStatus

Fortschritt des passiven Scans prüfen (verbleibende Datensätze)

Alerts

Tool

Parameter

Beschreibung

GetAlertsSummary

baseUrl

Alert-Anzahl nach Risikostufe

GetAlerts

baseUrl, start, count, riskId

Detaillierte Alert-Liste mit Paginierung und Risikofilter

Berichte

Tool

Parameter

Beschreibung

GetHtmlReport

HTML-Scanbericht generieren

GetJsonReport

JSON-Scanbericht generieren

GetXmlReport

XML-Scanbericht generieren

Kontextverwaltung

Tool

Parameter

Beschreibung

GetContextList

Alle in ZAP definierten Kontexte auflisten

GetContext

contextName

Kontextdetails abrufen (Scope-Muster usw.)

CreateContext

contextName

Einen neuen Kontext erstellen

RemoveContext

contextName

Einen Kontext löschen

IncludeInContext

contextName, regex

URL-Einschlussmuster zum Kontext-Scope hinzufügen

ExcludeFromContext

contextName, regex

URL-Ausschlussmuster zum Kontext-Scope hinzufügen

ImportContext

contextFilePath

Eine Kontextdatei in ZAP importieren

ExportContext

contextName, contextFilePath

Einen Kontext in eine Datei exportieren

Authentifizierung

Tool

Parameter

Beschreibung

GetAuthenticationMethod

contextId

Die für einen Kontext konfigurierte Authentifizierungsmethode abrufen

SetAuthenticationMethod

contextId, authMethodName, authMethodConfigParams

Authentifizierungsmethode festlegen (formularbasiert, JSON-basiert, skriptbasiert, HTTP)

SetLoggedInIndicator

contextId, loggedInIndicatorRegex

Regex-Muster für den angemeldeten Zustand festlegen

SetLoggedOutIndicator

contextId, loggedOutIndicatorRegex

Regex-Muster für den abgemeldeten Zustand festlegen

Benutzer

Tool

Parameter

Beschreibung

GetUsersList

contextId

Alle Benutzer für einen Kontext auflisten

CreateUser

contextId, name

Einen neuen Benutzer erstellen

RemoveUser

contextId, userId

Einen Benutzer entfernen

SetAuthenticationCredentials

contextId, userId, authCredentialsConfigParams

Benutzeranmeldedaten festlegen (Benutzername/Passwort)

SetUserEnabled

contextId, userId, enabled

Einen Benutzer aktivieren oder deaktivieren

Erzwungener Benutzer

Tool

Parameter

Beschreibung

SetForcedUser

contextId, userId

Den erzwungenen Benutzer für einen Kontext festlegen

SetForcedUserModeEnabled

enabled

Erzwungenen Benutzermodus global aktivieren oder deaktivieren

GetForcedUserStatus

contextId

Status des erzwungenen Benutzermodus und aktuellen erzwungenen Benutzer abrufen

Ajax Spider

Tool

Parameter

Beschreibung

StartAjaxSpider

url, inScope, contextName, subtreeOnly

Ajax Spider für JavaScript-lastige Apps starten

StartAjaxSpiderAsUser

contextName, userId, url, subtreeOnly

Ajax Spider als bestimmten Benutzer starten

GetAjaxSpiderStatus

Ajax-Spider-Status abrufen (läuft/gestoppt)

GetAjaxSpiderResults

Zusammenfassung der Ajax-Spider-Ergebnisse abrufen

StopAjaxSpider

Ajax Spider stoppen

Typischer Arbeitsablauf

  1. Der Agent ruft DockerComposeUp auf, um ZAP zu starten

  2. Browser/Playwright so konfigurieren, dass ZAP als Proxy verwendet wird (http://127.0.0.1:8090)

  3. Die Zielanwendung über den Proxy durchsuchen

  4. Der Agent ruft StartSpider auf, um die Anwendung zu crawlen, und dann GetSpiderStatus, um den Fortschritt zu überwachen

  5. Der Agent ruft GetPassiveScanStatus auf, um auf den Abschluss des passiven Scans zu warten

  6. Der Agent ruft StartActiveScan für wichtige Seiten auf und dann GetActiveScanStatus, um den Fortschritt zu überwachen

  7. Der Agent ruft GetAlertsSummary und GetAlerts auf, um Schwachstellenbefunde abzurufen

  8. Der Agent ruft GetHtmlReport oder GetJsonReport auf, um einen Scanbericht zu generieren

  9. Der Agent ruft DockerComposeDown auf, wenn er fertig ist

Hinweis: ZAP-Einstellungen (Kontexte, Authentifizierung, Scan-Richtlinien) werden im Docker-Volume zap-home gespeichert. Sie können den Container stoppen und neu starten, ohne die Konfiguration zu verlieren.

Ausprobieren (mit der enthaltenen verwundbaren App)

Dieses Repository enthält eine absichtlich verwundbare Webanwendung zum Ausprobieren des ZAP-Scans. Die App enthält häufige Schwachstellen (XSS, SQL Injection, CSRF, Open Redirect), sodass ZAP echte Befunde erkennen kann.

Einrichtung

# 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

Konfigurieren Sie dann Ihren MCP-Client, um eine Verbindung zu dieser ZAP-Instanz herzustellen:

{
  "mcpServers": {
    "zap": {
      "command": "zap-mcp",
      "env": {
        "ZAP_BASE_URL": "http://localhost:8090",
        "ZAP_API_KEY": "test-api-key-for-ci"
      }
    }
  }
}

Die verwundbare App ist unter http://target innerhalb des Docker-Netzwerks (von ZAP verwendet) und unter http://localhost:8080 von Ihrem Host-Rechner aus erreichbar.

Beispiel 1: Schnellscan

Prompt an den Agenten:

Scannen Sie http://target auf Schwachstellen. Führen Sie einen Spider-Crawl aus, warten Sie, bis der passive Scan abgeschlossen ist, und zeigen Sie mir dann die Warnungsübersicht und generieren Sie einen HTML-Bericht.

Erwarteter Tool-Ablauf:

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 wird Seiten wie /search, /login, /users, /about, /contact entdecken, und der passive Scan wird Probleme wie fehlende Sicherheitsheader und CSRF-Schwachstellen melden.

Beispiel 2: Authentifizierter Scan

Die Seite /admin erfordert eine Anmeldung (Benutzername: admin, Passwort: password). Ein authentifizierter Scan ermöglicht ZAP den Zugriff auf geschützte Seiten.

Prompt an den Agenten:

Richten Sie einen authentifizierten Scan für http://target ein. Das Anmeldeformular befindet sich unter /login mit den Feldern "username" und "password" (Anmeldedaten: admin / password). Der Anmeldeindikator ist "Welcome, admin". Nach der Konfiguration der Authentifizierung crawlen Sie die Website mit dem Spider als authentifizierter Benutzer und führen Sie einen aktiven Scan aus.

Erwarteter Tool-Ablauf:

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

Mit konfigurierter Authentifizierung kann ZAP auf /admin zugreifen und Schwachstellen hinter der Anmeldung testen.

Beispiel 3: Vollständige Schwachstellenbewertung

Prompt an den Agenten:

Führen Sie eine vollständige Schwachstellenbewertung von http://target durch. Crawlen Sie die Website, führen Sie einen aktiven Scan aus, und geben Sie mir dann eine detaillierte Aufschlüsselung aller entdeckten Schwachstellen, gruppiert nach Risikostufe.

Erwarteter Tool-Ablauf:

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

Der aktive Scan wird Schwachstellen erkennen, darunter:

  • Hoch: SQL-Injection (/users?id=), Cross-Site-Scripting (/search?q=)

  • Mittel: CSRF (fehlende Tokens auf /login), Open Redirect (/redirect?url=)

  • Niedrig/Informativ: Fehlende Sicherheitsheader, Cookie-Probleme usw.

Bereinigung

docker compose -f tests/docker/docker-compose.test.yml down -v

Lizenz

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