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 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