io.github.pierre3/zap-mcp
dotnet-zap-mcp
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-mcpVoraussetzungen
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:
Docker-Assets nach
~/.zap-mcp/docker/extrahiertEinen zufälligen API-Schlüssel generiert
Den ZAP-Container auf
localhost:8090startetWartet, bis ZAP bereit ist (healthy)
Datenpersistenz
Der ZAP-Container verwendet zwei benannte Docker-Volumes:
Volume | Container-Pfad | Zweck |
|
| ZAP-Einstellungen, Kontexte, Sitzungen, Scan-Richtlinien (über Neustarts hinweg beibehalten) |
|
| 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-Berichtesessions/– gespeicherte ZAP-Sitzungencontexts/– 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 |
| — | ZAP-Container starten und auf Bereitschaft warten |
| — | ZAP-Container stoppen und entfernen |
| — | Containerstatus prüfen |
|
| Aktuelle Container-Logs abrufen |
ZAP-Kern
Tool | Parameter | Beschreibung |
| — | ZAP-Konnektivität überprüfen |
| — | Aufgezeichnete Hosts auflisten |
| — | Aufgezeichnete Sites auflisten |
|
| Aufgezeichnete URLs für eine Basis-URL auflisten |
Spider
Tool | Parameter | Beschreibung |
|
| Einen Spider-Scan starten, um Seiten zu crawlen und zu entdecken |
|
| Spider-Fortschritt prüfen (0-100%) |
|
| Vom Spider entdeckte URLs abrufen |
|
| Einen laufenden Spider-Scan stoppen |
Aktiver Scan
Tool | Parameter | Beschreibung |
|
| Einen aktiven Schwachstellenscan starten |
|
| Fortschritt des aktiven Scans prüfen (0-100%) |
|
| Einen laufenden aktiven Scan stoppen |
Passiver Scan
Tool | Parameter | Beschreibung |
| — | Fortschritt des passiven Scans prüfen (verbleibende Datensätze) |
Alerts
Tool | Parameter | Beschreibung |
|
| Alert-Anzahl nach Risikostufe |
|
| Detaillierte Alert-Liste mit Paginierung und Risikofilter |
Berichte
Tool | Parameter | Beschreibung |
| — | HTML-Scanbericht generieren |
| — | JSON-Scanbericht generieren |
| — | XML-Scanbericht generieren |
Kontextverwaltung
Tool | Parameter | Beschreibung |
| — | Alle in ZAP definierten Kontexte auflisten |
|
| Kontextdetails abrufen (Scope-Muster usw.) |
|
| Einen neuen Kontext erstellen |
|
| Einen Kontext löschen |
|
| URL-Einschlussmuster zum Kontext-Scope hinzufügen |
|
| URL-Ausschlussmuster zum Kontext-Scope hinzufügen |
|
| Eine Kontextdatei in ZAP importieren |
|
| Einen Kontext in eine Datei exportieren |
Authentifizierung
Tool | Parameter | Beschreibung |
|
| Die für einen Kontext konfigurierte Authentifizierungsmethode abrufen |
|
| Authentifizierungsmethode festlegen (formularbasiert, JSON-basiert, skriptbasiert, HTTP) |
|
| Regex-Muster für den angemeldeten Zustand festlegen |
|
| Regex-Muster für den abgemeldeten Zustand festlegen |
Benutzer
Tool | Parameter | Beschreibung |
|
| Alle Benutzer für einen Kontext auflisten |
|
| Einen neuen Benutzer erstellen |
|
| Einen Benutzer entfernen |
|
| Benutzeranmeldedaten festlegen (Benutzername/Passwort) |
|
| Einen Benutzer aktivieren oder deaktivieren |
Erzwungener Benutzer
Tool | Parameter | Beschreibung |
|
| Den erzwungenen Benutzer für einen Kontext festlegen |
|
| Erzwungenen Benutzermodus global aktivieren oder deaktivieren |
|
| Status des erzwungenen Benutzermodus und aktuellen erzwungenen Benutzer abrufen |
Ajax Spider
Tool | Parameter | Beschreibung |
|
| Ajax Spider für JavaScript-lastige Apps starten |
|
| Ajax Spider als bestimmten Benutzer starten |
| — | Ajax-Spider-Status abrufen (läuft/gestoppt) |
| — | Zusammenfassung der Ajax-Spider-Ergebnisse abrufen |
| — | Ajax Spider stoppen |
Typischer Arbeitsablauf
Der Agent ruft
DockerComposeUpauf, um ZAP zu startenBrowser/Playwright so konfigurieren, dass ZAP als Proxy verwendet wird (
http://127.0.0.1:8090)Die Zielanwendung über den Proxy durchsuchen
Der Agent ruft
StartSpiderauf, um die Anwendung zu crawlen, und dannGetSpiderStatus, um den Fortschritt zu überwachenDer Agent ruft
GetPassiveScanStatusauf, um auf den Abschluss des passiven Scans zu wartenDer Agent ruft
StartActiveScanfür wichtige Seiten auf und dannGetActiveScanStatus, um den Fortschritt zu überwachenDer Agent ruft
GetAlertsSummaryundGetAlertsauf, um Schwachstellenbefunde abzurufenDer Agent ruft
GetHtmlReportoderGetJsonReportauf, um einen Scanbericht zu generierenDer Agent ruft
DockerComposeDownauf, wenn er fertig ist
Hinweis: ZAP-Einstellungen (Kontexte, Authentifizierung, Scan-Richtlinien) werden im Docker-Volume
zap-homegespeichert. 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 psKonfigurieren 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://targetinnerhalb des Docker-Netzwerks (von ZAP verwendet) und unterhttp://localhost:8080von 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 reportZAP 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: falseMit 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 reportDer 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 -vLizenz
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