Skip to main content
Glama
pierre3

io.github.pierre3/zap-mcp

by pierre3

dotnet-zap-mcp

NuGet NuGet Downloads Release

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

先决条件

  • .NET 10 SDK

  • 支持 docker compose 的 Docker(Docker Engine 或 Docker Desktop)(用于内置的 ZAP 容器管理)

配置

零配置(推荐)

无需任何配置。代理调用 DockerComposeUp 即可自动:

  1. 将 Docker 资源提取到 ~/.zap-mcp/docker/

  2. 生成随机 API 密钥

  3. localhost:8090 上启动 ZAP 容器

  4. 等待 ZAP 变为健康状态

数据持久化

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

容器路径

用途

zap-home

/home/zap/.ZAP

ZAP 设置、上下文、会话、扫描策略(重启后保留)

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

检查容器状态

DockerComposeLogs

tail

获取最近的容器日志

ZAP 核心

工具

参数

描述

GetVersion

验证 ZAP 连接

GetHosts

列出已记录的主机

GetSites

列出已记录的站点

GetUrls

baseUrl

列出指定基础 URL 下已记录的 URL

爬虫(Spider)

工具

参数

描述

StartSpider

urlmaxChildrenrecursesubtreeOnlycontextName

启动爬虫扫描以抓取和发现页面

GetSpiderStatus

scanId

检查爬虫进度(0-100%)

GetSpiderResults

scanId

获取爬虫发现的 URL

StopSpider

scanId

停止正在运行的爬虫扫描

主动扫描

工具

参数

描述

StartActiveScan

urlrecurseinScopeOnlyscanPolicyNamecontextId

启动主动漏洞扫描

GetActiveScanStatus

scanId

检查主动扫描进度(0-100%)

StopActiveScan

scanId

停止正在运行的主动扫描

被动扫描

工具

参数

描述

GetPassiveScanStatus

检查被动扫描进度(剩余记录数)

告警

工具

参数

描述

GetAlertsSummary

baseUrl

按风险级别统计的告警数量

GetAlerts

baseUrlstartcountriskId

带分页和风险过滤的详细告警列表

报告

工具

参数

描述

GetHtmlReport

生成 HTML 扫描报告

GetJsonReport

生成 JSON 扫描报告

GetXmlReport

生成 XML 扫描报告

上下文管理

工具

参数

描述

GetContextList

列出 ZAP 中定义的所有上下文

GetContext

contextName

获取上下文详细信息(作用域模式等)

CreateContext

contextName

创建新上下文

RemoveContext

contextName

删除上下文

IncludeInContext

contextNameregex

向上下文作用域添加 URL 包含模式

ExcludeFromContext

contextNameregex

向上下文作用域添加 URL 排除模式

ImportContext

contextFilePath

将上下文文件导入 ZAP

ExportContext

contextNamecontextFilePath

将上下文导出到文件

认证

工具

参数

描述

GetAuthenticationMethod

contextId

获取为上下文配置的认证方法

SetAuthenticationMethod

contextIdauthMethodNameauthMethodConfigParams

设置认证方法(基于表单、基于 JSON、基于脚本、HTTP)

SetLoggedInIndicator

contextIdloggedInIndicatorRegex

设置表示已登录状态的正则表达式模式

SetLoggedOutIndicator

contextIdloggedOutIndicatorRegex

设置表示已登出状态的正则表达式模式

用户

工具

参数

描述

GetUsersList

contextId

列出上下文的所有用户

CreateUser

contextIdname

创建新用户

RemoveUser

contextIduserId

移除用户

SetAuthenticationCredentials

contextIduserIdauthCredentialsConfigParams

设置用户凭据(用户名/密码)

SetUserEnabled

contextIduserIdenabled

启用或禁用用户

强制用户

工具

参数

描述

SetForcedUser

contextIduserId

为上下文设置强制用户

SetForcedUserModeEnabled

enabled

全局启用或禁用强制用户模式

GetForcedUserStatus

contextId

获取强制用户模式状态和当前强制用户

Ajax 爬虫

工具

参数

描述

StartAjaxSpider

urlinScopecontextNamesubtreeOnly

为 JavaScript 密集型应用启动 Ajax 爬虫

StartAjaxSpiderAsUser

contextNameuserIdurlsubtreeOnly

以特定用户身份启动 Ajax 爬虫

GetAjaxSpiderStatus

获取 Ajax 爬虫状态(运行中/已停止)

GetAjaxSpiderResults

获取 Ajax 爬虫结果摘要

StopAjaxSpider

停止 Ajax 爬虫

典型工作流程

  1. 代理调用 DockerComposeUp 启动 ZAP

  2. 将浏览器/Playwright 配置为使用 ZAP 作为代理(http://127.0.0.1:8090

  3. 通过代理浏览目标应用

  4. 代理调用 StartSpider 抓取应用,然后调用 GetSpiderStatus 监控进度

  5. 代理调用 GetPassiveScanStatus 等待被动扫描完成

  6. 代理对关键页面调用 StartActiveScan,然后调用 GetActiveScanStatus 监控进度

  7. 代理调用 GetAlertsSummaryGetAlerts 获取漏洞发现结果

  8. 代理调用 GetHtmlReportGetJsonReport 生成扫描报告

  9. 完成后代理调用 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 网络内可通过 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 report

ZAP 将发现诸如 /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

许可证

MIT

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Integrates 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.
    5
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.
    9
    9
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to search, retrieve, and analyze vulnerability data from the NIST National Vulnerability Database through a comprehensive Model Context Protocol server.
    8
    8
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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