mcpField
O
OWASP ZAP MCP Server

OWASP ZAP MCP Server

本地服务
github.com安全430 周前更新

关于 OWASP ZAP MCP Server

OWASP ZAP MCP Server 让 AI Agent 和 MCP 客户端通过工具控制 OWASP ZAP,涵盖爬取、认证配置、漏洞结果与报告,并可管理 ZAP Docker 容器。

主要功能

  1. 01提供 45 个 OWASP ZAP 工具
  2. 02支持 Spider 和主动扫描
  3. 03查看告警并生成扫描报告
  4. 04配置上下文与身份验证
  5. 05管理 Docker 容器生命周期

适用场景

  1. 01扫描前爬取 Web 应用
  2. 02扫描需要登录的站点区域
  3. 03按风险级别查看漏洞结果
  4. 04生成 HTML、JSON 或 XML 报告

MCP 相关

将 OWASP ZAP 扫描、配置、报告和 Docker 管理功能作为工具提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetdotnet-zap-mcp1.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dotnet-zap-mcp

NuGet NuGet Downloads Release

适用于 OWASP ZAP 的 MCP(Model Context Protocol)服务。让 AI Agent(Claude、GitHub Copilot 等)通过 MCP 驱动 ZAP 漏洞扫描。

功能

  • 提供 45 个用于控制 OWASP ZAP 的 MCP 工具(扫描、警报、爬虫、Ajax 爬虫、上下文、身份验证、报告等)
  • 内置 Docker Compose 管理(通过一次工具调用启动或停止 ZAP)
  • 零配置设置:自动生成 API 密钥并提取 Docker 资源
  • 适用于任何兼容 MCP 的客户端(Claude Desktop、VS Code 等)

安装

dotnet tool install -g dotnet-zap-mcp
先决条件
  • .NET 10 SDK
  • 支持 docker compose 的 Docker(Docker Engine 或 Docker Desktop,用于内置 ZAP 容器管理)

配置

零配置(推荐)

无需配置。Agent 会调用 DockerComposeUp,该工具会自动:

  1. 将 Docker 资源提取到 ~/.zap-mcp/docker/
  2. 生成随机 API 密钥
  3. 在 localhost:8090 上启动 ZAP 容器
  4. 等待 ZAP 就绪
数据持久化

ZAP 容器使用两个 Docker 命名卷:

卷容器路径用途
zap-home/home/zap/.ZAPZAP 设置、上下文、会话、扫描策略(重启后保留)
zap-data/zap/wrk/data用于报告、会话文件和上下文导入/导出的共享目录

首次启动时,模板 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 管理
工具参数描述
DockerComposeUp—启动 ZAP 容器并等待其就绪
DockerComposeDown—停止并移除 ZAP 容器
DockerComposeStatus—检查容器状态
DockerComposeLogstail获取近期容器日志
ZAP 核心
工具参数描述
GetVersion—验证与 ZAP 的连接
GetHosts—列出已记录的主机
GetSites—列出已记录的网站
GetUrlsbaseUrl列出指定基础 URL 下已记录的 URL
爬虫
工具参数描述
StartSpiderurl、maxChildren、recurse、subtreeOnly、contextName启动爬虫扫描,以抓取并发现页面
GetSpiderStatusscanId检查爬虫进度(0-100%)
GetSpiderResultsscanId获取爬虫发现的 URL
StopSpiderscanId停止正在运行的爬虫扫描
主动扫描
工具参数描述
StartActiveScanurl、recurse、inScopeOnly、scanPolicyName、contextId启动主动漏洞扫描
GetActiveScanStatusscanId检查主动扫描进度(0-100%)
StopActiveScanscanId停止正在运行的主动扫描
被动扫描
工具参数描述
GetPassiveScanStatus—检查被动扫描进度(剩余记录数)
警报
工具参数描述
GetAlertsSummarybaseUrl按风险级别统计警报数量
GetAlertsbaseUrl、start、count、riskId带分页和风险筛选的详细警报列表
报告
工具参数描述
GetHtmlReport—生成 HTML 扫描报告
GetJsonReport—生成 JSON 扫描报告
GetXmlReport—生成 XML 扫描报告
上下文管理
工具参数描述
GetContextList—列出 ZAP 中定义的所有上下文
GetContextcontextName获取上下文详情(作用域模式等)
CreateContextcontextName创建新上下文
RemoveContextcontextName删除上下文
IncludeInContextcontextName、regex向上下文作用域添加 URL 包含模式
ExcludeFromContextcontextName、regex向上下文作用域添加 URL 排除模式
ImportContextcontextFilePath将上下文文件导入 ZAP
ExportContextcontextName、contextFilePath将上下文导出到文件
身份验证
工具参数描述
GetAuthenticationMethodcontextId获取为上下文配置的身份验证方法
SetAuthenticationMethodcontextId、authMethodName、authMethodConfigParams设置身份验证方法(基于表单、基于 JSON、基于脚本、HTTP)
SetLoggedInIndicatorcontextId、loggedInIndicatorRegex设置用于指示已登录状态的正则表达式模式
SetLoggedOutIndicatorcontextId、loggedOutIndicatorRegex设置用于指示已退出登录状态的正则表达式模式
用户
工具参数描述
GetUsersListcontextId列出上下文的所有用户
CreateUsercontextId、name创建新用户
RemoveUsercontextId、userId移除用户
SetAuthenticationCredentialscontextId、userId、authCredentialsConfigParams设置用户凭据(用户名/密码)
SetUserEnabledcontextId、userId、enabled启用或禁用用户
强制用户
工具参数描述
SetForcedUsercontextId、userId为上下文设置强制用户
SetForcedUserModeEnabledenabled全局启用或禁用强制用户模式
GetForcedUserStatuscontextId获取强制用户模式状态和当前强制用户
Ajax Spider
工具参数描述
StartAjaxSpiderurl、inScope、contextName、subtreeOnly为 JavaScript 密集型应用启动 Ajax Spider
StartAjaxSpiderAsUsercontextName、userId、url、subtreeOnly以指定用户身份启动 Ajax Spider
GetAjaxSpiderStatus—获取 Ajax Spider 状态(运行中/已停止)
GetAjaxSpiderResults—获取 Ajax Spider 结果摘要
StopAjaxSpider—停止 Ajax Spider

典型工作流

  1. Agent 调用 DockerComposeUp 启动 ZAP
  2. 配置浏览器/Playwright,将 ZAP 用作代理(http://127.0.0.1:8090)
  3. 通过代理浏览目标应用
  4. Agent 调用 StartSpider 爬取应用,然后调用 GetSpiderStatus 监控进度
  5. Agent 调用 GetPassiveScanStatus,等待被动扫描完成
  6. Agent 在关键页面调用 StartActiveScan,然后调用 GetActiveScanStatus 监控进度
  7. Agent 调用 GetAlertsSummary 和 GetAlerts 获取漏洞发现结果
  8. Agent 调用 GetHtmlReport 或 GetJsonReport 生成扫描报告
  9. 完成后,Agent 调用 DockerComposeDown

注意: ZAP 设置(上下文、身份验证、扫描策略)会保存在 zap-home Docker 卷中。你可以停止并重启容器,而不会丢失配置。

试用(使用随附的易受攻击应用)

此仓库包含一个有意设置为易受攻击的 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 网络内(ZAP 使用的网络)可通过 http://target 访问易受攻击的应用;在宿主机上则可通过 http://localhost:8080 访问。

示例 1:快速扫描

给 Agent 的提示词:

扫描 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 report

ZAP 会发现 /search、/login、/users、/about 和 /contact 等页面;被动扫描则会报告缺少安全标头、存在 CSRF 漏洞等问题。

示例 2:经过身份验证的扫描

/admin 页面需要登录(用户名:admin,密码:password)。经过身份验证的扫描可让 ZAP 访问受保护的页面。

给 Agent 的提示词:

为 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:全面漏洞评估

给 Agent 的提示词:

对 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

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。