A powerful Model Context Protocol (MCP) Server that integrates OWASP ZAP with AI assistants for security scanning and vulnerability detection
Server has 6 tools with complete input schemas and descriptions, but quality is inconsistent. All tools are READ_ONLY (good for safety), but descriptions are generic and lack actionable context. Parameter descriptions are present but minimal (avg ~40 chars, below 72-char baseline). No output schemas documented. Error handling and recovery guidance absent. Tool names follow verb_noun pattern (active_scan, passive_scan, etc.) but lack specificity about what distinguishes them for LLM selection. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only.
Run an active security scan against a target URL using OWASP ZAP
Run an AJAX crawling scan against a target URL
Run a complete security scan including AJAX crawling, spidering, and active scanning
Get the status of an ongoing or completed scan
Run a passive security scan against a target URL
Run a spider crawl against a target URL to discover endpoints
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., scan_id, vulnerability_count, findings). Responses are unstructured.
Tool descriptions lack context for LLM selection. 'Run an active security scan' does not explain when to use active_scan vs complete_scan vs passive_scan. No guidance on prerequisites, expected duration, or output structure.
Parameter descriptions are minimal (avg ~40 chars vs 72-char baseline). E.g., 'Polling interval in seconds' lacks range constraints, defaults, or guidance on when to adjust. No enum constraints on scanPolicyName or browserId.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
No error handling or recovery guidance. If a scan fails or times out, LLM has no actionable next step. No distinction between retryable errors (timeout) and user-fixable errors (invalid target URL).
Tool annotations missing. All tools are READ_ONLY but lack readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or UI presentation.