Safe, self-hosted OWASP ZAP operator for guided AI security scans and reports.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Give AI agents a safe, self-hosted OWASP ZAP operator for guided web security scans, findings, reports, and production guardrails.
Note This project is not affiliated with or endorsed by OWASP or the OWASP ZAP project. It is an independent implementation.
mcp-zap-server exposes OWASP ZAP through MCP over streamable HTTP so agentic tools can run operator-controlled security workflows without brittle glue scripts or unsafe scanner access.
Use it when you want:
Full documentation: danieltse.org/mcp-zap-server
Watch the demo: browser demo or YouTube
Prerequisites:
docker compose)Those scripts are the supported local happy path, not hidden magic:
bootstrap-local.sh creates .env, generates local API keys, and prepares the ZAP workspace.dev.sh starts the Docker Compose stack with the faster JVM image.self-serve-doctor.sh checks Docker, auth, MCP initialize, tools/list, guided tools, and a harmless tool call.The JVM image remains Java 25 end to end: source compilation, bytecode, and
runtime all target Java 25. Its final runtime is distroless, so it intentionally
contains no shell, package manager, or curl. A small built-in HTTP probe keeps
the normal Docker Compose health status; docker compose ps still reports the
MCP service as (healthy) after startup.
Then open:
http://localhost:3000http://localhost:7456/mcpexamples/cursor/mcp.jsonWhen scanning the bundled demo targets, use the container URLs that ZAP can reach from inside Compose:
http://juice-shop:3000http://petstore:8080The default Compose stack publishes host ports on 127.0.0.1 only. Set MCP_ZAP_BIND_ADDRESS=0.0.0.0 only when you intentionally expose the stack behind trusted network controls.
Client setup:
There are two independent authentication layers. The API key or JWT lets Cursor call MCP ZAP Server. An optional target-auth profile lets ZAP log in to an application you are authorized to scan. Most first runs need only the MCP API key; never put a target website password in Cursor or an MCP prompt.
This repository includes MCP Registry metadata in .mcp/server.json. The v0.11.0 Docker images are labeled with the MCP server name expected by registry and catalog tooling.
Docker Compose remains the easiest installation path because the MCP server is designed to operate with an OWASP ZAP sidecar and explicit auth keys. The OCI package metadata is for advanced standalone installs where OWASP ZAP is already running and reachable from the MCP container.
zap_policy_dry_run and policy-mode configuration.v0.11.0 modernizes the runtime and container supply chain without changing MCP tool names or input schemas:
0.8.0, with application data binding migrated to Jackson 3 and managed by the Jackson 3.2.1 BOMmain or sha-* images; stable AMD64 and ARM64 images are published only from GitHub immutable-release events1000, now stated explicitly in HelmRead the full notes:
The default posture is intentionally conservative:
api-key mode is the base runtime default.none mode is for explicit local dev/test only.profileId and targetUrl.Production and shared deployments should review:
For multi-replica queueing, durable Postgres state, claim recovery, and ingress affinity, use the operations docs instead of this README:
ZAP is the first scanner engine, not the whole product boundary. The current public extension work is intentionally small:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-zap-server)<a href="https://allmcps.com/mcp/mcp-zap-server"><img src="https://allmcps.com/api/badge/mcp-zap-server?style=directory" alt="MCP ZAP Server on AllMCPs" /></a>