io.github.pierre3/zap-mcp
dotnet-zap-mcp
用于 OWASP ZAP 的 MCP(模型上下文协议)服务器。使 AI 代理(Claude、GitHub Copilot 等)能够通过 MCP 驱动 ZAP 漏洞扫描。
功能特性
45 个 MCP 工具,用于控制 OWASP ZAP(扫描、告警、爬虫、Ajax 爬虫、上下文、认证、报告等)
内置 Docker Compose 管理(通过一次工具调用即可启动/停止 ZAP)
零配置设置:自动生成 API 密钥并提取 Docker 资源
兼容任何支持 MCP 的客户端(Claude Desktop、VS Code 等)
Related MCP server: Grype MCP Server
安装
dotnet tool install -g dotnet-zap-mcp先决条件
支持
docker compose的 Docker(Docker Engine 或 Docker Desktop)(用于内置的 ZAP 容器管理)
配置
零配置(推荐)
无需任何配置。代理调用 DockerComposeUp 即可自动:
将 Docker 资源提取到
~/.zap-mcp/docker/生成随机 API 密钥
在
localhost:8090上启动 ZAP 容器等待 ZAP 变为健康状态
数据持久化
ZAP 容器使用两个 Docker 命名卷:
卷 | 容器路径 | 用途 |
|
| ZAP 设置、上下文、会话、扫描策略(重启后保留) |
|
| 用于报告、会话文件以及上下文导入/导出的共享目录 |
首次启动时,模板 config.xml 会被复制到 zap-home 中。后续启动时,仅更新 API 密钥——通过 ZAP 所做的任何更改(上下文、认证设置、扫描策略等)都会被保留。
zap-data 卷包含:
reports/— 生成的扫描报告sessions/— 保存的 ZAP 会话contexts/— 导出的上下文文件
Claude Desktop / Claude Code
添加到您的 MCP 配置中:
{
"mcpServers": {
"zap": {
"command": "zap-mcp"
}
}
}VS Code (Copilot)
添加到 .vscode/mcp.json:
{
"servers": {
"zap": {
"command": "zap-mcp"
}
}
}使用现有的 ZAP 实例
如果您已有正在运行的 ZAP 实例,可通过环境变量传递连接信息:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "your-api-key"
}
}
}
}可用工具
Docker 管理
工具 | 参数 | 描述 |
| — | 启动 ZAP 容器并等待其变为健康状态 |
| — | 停止并移除 ZAP 容器 |
| — | 检查容器状态 |
|
| 获取最近的容器日志 |
ZAP 核心
工具 | 参数 | 描述 |
| — | 验证 ZAP 连接 |
| — | 列出已记录的主机 |
| — | 列出已记录的站点 |
|
| 列出指定基础 URL 下已记录的 URL |
爬虫(Spider)
工具 | 参数 | 描述 |
|
| 启动爬虫扫描以抓取和发现页面 |
|
| 检查爬虫进度(0-100%) |
|
| 获取爬虫发现的 URL |
|
| 停止正在运行的爬虫扫描 |
主动扫描
工具 | 参数 | 描述 |
|
| 启动主动漏洞扫描 |
|
| 检查主动扫描进度(0-100%) |
|
| 停止正在运行的主动扫描 |
被动扫描
工具 | 参数 | 描述 |
| — | 检查被动扫描进度(剩余记录数) |
告警
工具 | 参数 | 描述 |
|
| 按风险级别统计的告警数量 |
|
| 带分页和风险过滤的详细告警列表 |
报告
工具 | 参数 | 描述 |
| — | 生成 HTML 扫描报告 |
| — | 生成 JSON 扫描报告 |
| — | 生成 XML 扫描报告 |
上下文管理
工具 | 参数 | 描述 |
| — | 列出 ZAP 中定义的所有上下文 |
|
| 获取上下文详细信息(作用域模式等) |
|
| 创建新上下文 |
|
| 删除上下文 |
|
| 向上下文作用域添加 URL 包含模式 |
|
| 向上下文作用域添加 URL 排除模式 |
|
| 将上下文文件导入 ZAP |
|
| 将上下文导出到文件 |
认证
工具 | 参数 | 描述 |
|
| 获取为上下文配置的认证方法 |
|
| 设置认证方法(基于表单、基于 JSON、基于脚本、HTTP) |
|
| 设置表示已登录状态的正则表达式模式 |
|
| 设置表示已登出状态的正则表达式模式 |
用户
工具 | 参数 | 描述 |
|
| 列出上下文的所有用户 |
|
| 创建新用户 |
|
| 移除用户 |
|
| 设置用户凭据(用户名/密码) |
|
| 启用或禁用用户 |
强制用户
工具 | 参数 | 描述 |
|
| 为上下文设置强制用户 |
|
| 全局启用或禁用强制用户模式 |
|
| 获取强制用户模式状态和当前强制用户 |
Ajax 爬虫
工具 | 参数 | 描述 |
|
| 为 JavaScript 密集型应用启动 Ajax 爬虫 |
|
| 以特定用户身份启动 Ajax 爬虫 |
| — | 获取 Ajax 爬虫状态(运行中/已停止) |
| — | 获取 Ajax 爬虫结果摘要 |
| — | 停止 Ajax 爬虫 |
典型工作流程
代理调用
DockerComposeUp启动 ZAP将浏览器/Playwright 配置为使用 ZAP 作为代理(
http://127.0.0.1:8090)通过代理浏览目标应用
代理调用
StartSpider抓取应用,然后调用GetSpiderStatus监控进度代理调用
GetPassiveScanStatus等待被动扫描完成代理对关键页面调用
StartActiveScan,然后调用GetActiveScanStatus监控进度代理调用
GetAlertsSummary和GetAlerts获取漏洞发现结果代理调用
GetHtmlReport或GetJsonReport生成扫描报告完成后代理调用
DockerComposeDown
注意: ZAP 设置(上下文、认证、扫描策略)会持久化保存在
zap-homeDocker 卷中。您可以停止并重新启动容器,而不会丢失配置。
试用(使用附带的易受攻击应用)
此仓库包含一个故意存在漏洞的 Web 应用,用于试用 ZAP 扫描。该应用包含常见漏洞(XSS、SQL 注入、CSRF、开放重定向),因此 ZAP 可以检测到真实的发现结果。
设置
# 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然后将您的 MCP 客户端配置为连接到这个 ZAP 实例:
{
"mcpServers": {
"zap": {
"command": "zap-mcp",
"env": {
"ZAP_BASE_URL": "http://localhost:8090",
"ZAP_API_KEY": "test-api-key-for-ci"
}
}
}
}易受攻击的应用在 Docker 网络内可通过
http://target访问(供 ZAP 使用),在宿主机上可通过http://localhost:8080访问。
示例 1:快速扫描
给代理的提示:
扫描 http://target 以查找漏洞。运行爬虫抓取,等待被动扫描完成,然后向我显示警报摘要并生成 HTML 报告。
预期工具流程:
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 将发现诸如 /search、/login、/users、/about、/contact 之类的页面,被动扫描将报告诸如缺少安全标头和 CSRF 漏洞之类的问题。
示例 2:认证扫描
/admin 页面需要登录(用户名:admin,密码:password)。认证扫描让 ZAP 能够访问受保护的页面。
给代理的提示:
为 http://target 设置认证扫描。登录表单位于 /login,包含 "username" 和 "password" 字段(凭据:admin / password)。登录成功的指示是 "Welcome, admin"。配置认证后,以认证用户身份爬取站点并运行主动扫描。
预期工具流程:
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配置认证后,ZAP 可以访问 /admin 并测试登录后的漏洞。
示例 3:完整漏洞评估
给代理的提示:
对 http://target 执行完整的漏洞评估。爬取站点,运行主动扫描,然后按风险级别对所有已发现的漏洞进行详细分类。
预期工具流程:
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主动扫描将检测到以下漏洞:
高危:SQL 注入(
/users?id=)、跨站脚本(/search?q=)中危:CSRF(
/login上缺少令牌)、开放重定向(/redirect?url=)低危/信息:缺少安全标头、Cookie 问题等。
清理
docker compose -f tests/docker/docker-compose.test.yml down -v许可证
This server cannot be deployed
Maintenance
Related MCP Connectors
Security scanner for AI agents: prompt injection, leaked secrets, PII, and SSRF-risk URL detection.
Security scanner for AI agents and MCP servers: injection, jailbreak, tool abuse.
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.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates 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- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.-

Aribot MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables security work such as threat modeling, scanning, compliance checks, and remediation through AI assistants using the Model Context Protocol.MIT