zap_target_importLABSCO SUMMARY
The guardrails are the product; ZAP was already there.
An active scan is an attack against a real system, so the interesting design decisions are the limits: scoped tokens, policy dry runs before rule changes, rate limits and an audit trail. The findings diff is the operationally useful piece - it answers whether this release made things worse, which a raw scan report never does.
What it is
A self-hosted server that exposes ZAP over streamable HTTP with an operator in charge. Rather than handing a scanner to a model, it offers guided workflows with defaults, tool scopes, policy bundles, rate limits and audit events around them.
What you get
- Crawl and active-scan lifecycles that can each be started, polled and stopped, plus passive-scan status and a wait
- Findings as a summary, in detail, as a snapshot, or as a diff between two runs - so a scan can be compared with the previous one
- Reports generated and read back, with the available templates listable
- Target import from an OpenAPI spec, a GraphQL schema or a SOAP WSDL, each from a file or a URL
- Scan policies listed and viewed, individual rules set, and a dry run that shows what a policy change would do before it is applied
- Authenticated scanning: prepare and validate a session, and test a user
- Scan history listed, retrieved, exported, and packaged as a customer handoff or a release evidence bundle
- The site, host and URL inventory ZAP has built up
Requirements
Docker 20.10 or newer with Compose v2, and an MCP-capable client - a bundled Open WebUI client is included. Three scripts are the supported path: one generates the local API keys and prepares the ZAP workspace, one starts the stack, and a doctor script checks authentication, the handshake, the tool listing and a harmless call. Access is by API key or JWT, with per-tool scopes. Kubernetes deployment goes through Helm.
Setup effort
Build from source — git clone https://github.com/dtkmn/mcp-zap-server.git
USE CASES
Scanning an API you have a spec for
Import the OpenAPI document, crawl the discovered surface, then start the active scan against it.
Answering whether this release got worse
Snapshot the findings, then diff the new run against the previous one instead of re-reading a full report.
Reaching pages behind a login
Prepare the authenticated session, validate it and test the user before starting a scan that would otherwise cover only the login page.
Changing a scan policy without surprises
View the policy, set the rule, and run the dry run to see what would change before scanning with it.
Handing results to someone outside the team
Generate the report, then export the scan history as a customer handoff or a release evidence bundle.
38 tools
Listed in project docs. Your client may show a different list.
zap_crawl_startzap_crawl_statuszap_crawl_stopzap_attack_startzap_attack_statuszap_attack_stopzap_auth_session_preparezap_auth_session_validatezap_findings_summaryzap_findings_detailszap_report_generatezap_report_readzap_passive_scan_statuszap_passive_scan_waitzap_scan_history_listzap_scan_history_getzap_scan_history_exportzap_scan_history_release_evidencezap_scan_history_customer_handoffzap_hostszap_siteszap_urlszap_import_openapi_spec_urlzap_import_openapi_spec_filezap_import_graphql_schema_urlzap_import_graphql_schema_filezap_import_soap_wsdl_urlzap_import_soap_wsdl_filezap_findings_snapshotzap_findings_diffzap_view_templateszap_generate_reportzap_auth_test_userzap_scan_policies_listzap_scan_policy_viewzap_scan_policy_rule_setzap_policy_dry_runBEFORE YOU INSTALL
What to know first
Tools you get
38 tools named in the project's documentation.
Requires
- Docker 20.10+
- Docker Compose v2
INSTALLATION
Connect your client
Server setup
git clone https://github.com/dtkmn/mcp-zap-server.git
cd mcp-zap-server
./bin/bootstrap-local.sh
./dev.shMCP Clients
Cursor
{
"mcpServers": {
"zap-security": {
"url": "http://localhost:7456/mcp",
"headers": {
"X-API-Key": "${env:MCP_API_KEY}"
}
}
}
}Open WebUI
{
"services": {
"open-webui": {
"environment": {
"TOOL_SERVER_CONNECTIONS": "[{\"url\":\"http://mcp-server:7456/mcp\",\"path\":\"\",\"type\":\"mcp\",\"auth_type\":\"none\",\"headers\":{\"X-API-Key\":\"${MCP_API_KEY}\"},\"config\":{\"enable\":true},\"info\":{\"id\":\"zap-security\",\"name\":\"ZAP Security\",\"description\":\"OWASP ZAP tools exposed by the MCP server.\"}}]"
}
}
}
}Any MCP client — HTTP
{
"mcpServers": {
"zap-security": {
"protocol": "mcp",
"type": "http",
"url": "http://localhost:7456/mcp",
"headers": {
"X-API-Key": "<YOUR_API_KEY>"
}
}
}
}