关于 MCP ZAP Server
MCP ZAP Server 是基于 Spring Boot 的 MCP 服务,将 OWASP ZAP 的引导式扫描和高级操作提供给 AI Agent。它面向需要自托管 Web 安全工作流的团队,并包含认证、策略和审计等运行控制。
主要功能
- 01引导式爬取与扫描
- 02导入 API 定义
- 03查看发现并生成报告
- 04高级 ZAP 上下文与扫描控制
- 05认证、权限范围与策略
- 06扫描队列、历史记录与审计
适用场景
- 01让 AI Agent 对授权网站执行爬取和被动分析
- 02导入 OpenAPI 内容以开展 API 安全测试
- 03汇总发现并生成可读取的扫描报告
MCP 相关
通过 Streamable HTTP 向 MCP 客户端公开 ZAP 扫描、导入、发现和报告等工具。可通过 API 密钥或 JWT 认证,并应用工具权限范围与运行策略。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e ZAP_API_URL -e ZAP_API_PORT -e ZAP_API_KEY -e MCP_API_KEY -e MCP_SERVER_TOOLS_SURFACE -e MCP_SECURITY_MODE -e MCP_SECURITY_ENABLED -e MCP_SECURITY_ALLOW_PLACEHOLDER_API_KEY ghcr.io/dtkmn/mcp-zap-server:v0.17.1ZAP_API_URLHostname or URL of a separately running ZAP daemon reachable from this container.ZAP_API_PORTZAP API port.ZAP_API_KEY密钥API key configured on the ZAP daemon.MCP_API_KEY密钥API key clients must send as X-API-Key.MCP_SERVER_TOOLS_SURFACETool surface to expose. Use guided for the safer default workflow, including report readback. Use expert only when clients need raw ZAP tools outside the guided surface.MCP_SECURITY_MODEMCP_SECURITY_ENABLEDMCP_SECURITY_ALLOW_PLACEHOLDER_API_KEY密钥本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP ZAP Server
为 AI Agent 提供安全、可自托管的 ZAP 操作工具,用于引导式 Web 安全扫描、发现项、报告和生产环境防护。
注意 本项目与 ZAP 项目无关,也未获得其认可。本项目是独立实现。
mcp-zap-server 通过可流式传输的 HTTP 上的 MCP 暴露 ZAP,让 Agent 工具无需脆弱的胶水脚本或不安全的扫描器访问方式,即可运行由操作人员控制的安全工作流。
适用于以下场景:
- 安全的 Agent 扫描,提供用于爬取、主动扫描、被动扫描、API 导入、发现项和报告的引导式默认设置
- 操作人员控制,支持 API 密钥或 JWT 身份验证、工具范围、运行时策略包、速率限制和审计事件
- 自托管部署,可使用 Docker Compose 进行本地部署,也可使用 Helm 部署到 Kubernetes
- ZAP 专家级访问,适用于确实需要更底层的 ZAP 上下文、用户、扫描和报告控制的场景
完整文档:danieltse.org/mcp-zap-server
实验性的无头 Apple Silicon 软件包 捆绑了 Java 和 ZAP,可用于 HTTP 工作流。这是维护者构建的本地预览版; 目前不提供公开下载,提供的预览版均未签名。 ChatGPT 私有连接指南 介绍了 Secure MCP Tunnel 的先决条件以及如何访问本地扫描器。
## 快速开始
前置条件:
- Docker 20.10+
- Docker Compose v2 或更高版本(
docker compose),支持--wait和--wait-timeout - 你自己的 MCP 客户端,支持 Streamable HTTP 和自定义请求头
此源配置使用镜像 v0.17.1。启动前,请确认对应的
GitHub 发布版本以及 Linux AMD64/ARM64
镜像均已发布。在此之前,请使用已发布的 v0.16.0
版本,或通过贡献者设置构建本地源代码。更改现有安装前,请阅读
0.17.1 升级指南。设置和选定的版本都会保留;升级时请谨慎设置
.env 中的 IMAGE_TAG。
希望让 Codex 处理设置?请手动安装可选的 MCP ZAP Connect 插件, 然后让它检查前置条件、启动 Docker 堆栈、配置你的私有 MCP 连接并验证状态。经你批准后,该技能可协助安装缺失的前置组件,然后重新检查并继续设置。扫描需要单独提出 请求。即使不安装插件,仍可使用下方的命令。
对于 Cursor Desktop Free,请按照Cursor 引导式设置操作。 使用可用 Cursor 额度进行本地 Agent 对话,以设置扫描器、 检查状态,然后单独请求演示爬取并汇报。
Claude Code 本地预览版 在本地 Claude Code 会话中使用同一套扫描器和设置技能。
对于 Claude Desktop Free,请按照下载、设置和首次扫描指南操作。
macOS MCPB 预览版围绕同一套 Docker
脚本添加了可由 Agent 调用的设置工具,并可复用现有安装。请选择包含
Desktop .mcpb、对应指南和校验和文件的扫描器发布版本。
如果未列出这些资源,请使用本地构建说明。
此扩展与 Claude Code 插件相互独立。
git clone https://github.com/dtkmn/mcp-zap-server.git
cd mcp-zap-server
./bin/bootstrap-local.sh --start
此操作会创建缺失的设置、保留现有键和工作区数据,
并启动带版本号的发布镜像。容器健康检查和通过身份验证的 MCP 检查均通过后,系统会报告就绪。打包客户端使用 * 表示精选的
引导式工具;仅在收到请求时才运行扫描。现有设置的权限会保留。有关默认限制和可选的按客户端限制,请参阅
快速开始权限。
有关版本选择、配置、停止/重启、启动超时 和恢复,请参阅自助首次运行。如需构建源代码,请使用 贡献者设置。
连接你的 MCP 客户端:
- 面向主机端客户端的 MCP 端点:
http://localhost:7456/mcp - 身份验证:在
X-API-Key请求头中发送.env中的MCP_API_KEY - MCP 客户端设置与身份验证
此堆栈会运行 MCP 服务、ZAP 和演示目标。请单独安装并配置你偏好的 MCP 客户端。
连接后,先尝试以下提示词:
Use the guided ZAP tools to crawl http://juice-shop:3000. Wait for the crawl
and passive analysis to finish, show a findings summary, generate an HTML
report, and read it back through MCP. Do not run an active scan.
预期结果是完成一次爬取、获得发现项摘要,以及一份客户端可读取的报告。本次扫描请使用容器 URL http://juice-shop:3000;主机预览地址
http://localhost:3001 供浏览器使用。发现项数量可能不同;
连接或扫描错误并不代表结果正常。
默认堆栈会将已发布的端口绑定到回环地址。更改访问权限或 扫描目标设置前,请阅读快速开始安全须知。Agent 安装说明介绍了设置 权限和独立 OCI 用法。
发现元数据
此源代码在 .mcp/server.json 中包含 0.17.1 MCP Registry 元数据。源代码中的元数据不会发布注册表版本或镜像。请查看 MCP Registry,并使用与要部署的镜像版本相同的已发布版本中的元数据。镜像包含注册表和目录工具所需的 MCP 服务名称。已发布的 0.16.0 版本及其不可变摘要仍记录在 0.16.0 发布指南 中。
Docker Compose 仍是最简单的安装方式,因为 MCP 服务设计为与 ZAP sidecar 配合运行,并使用显式身份验证密钥。OCI 包元数据适用于高级独立安装场景,此时 ZAP 已在运行,且可从 MCP 容器访问。
你将获得
- 引导式扫描:以意图为先的工具,涵盖爬虫、主动扫描、被动扫描、API 导入、发现项、报告和扫描历史。
- 专家级 ZAP 控制:可选的底层工具,适用于高级 ZAP 上下文、用户、扫描和报告工作流。
- 身份验证:默认采用 API 密钥模式,可选 JWT 模式,并支持刷新和撤销。
- 运行时策略包:通过
zap_policy_dry_run和策略模式配置支持试运行和强制执行。 - 扫描队列和历史记录:排队执行主动扫描、传统爬虫、AJAX Spider 和 Client Spider 作业,并支持基于认领的恢复、持久化 Postgres 状态和证据导出。
- 扩展契约:实验性的策略、防护、证据元数据和扩展元数据 API,并提供示例扩展打包方式。
- 运维防护机制:请求正文限制、速率限制、工作区配额、工具范围授权、结构化日志、指标和审计事件。
- 部署方式:本地 Docker Compose、已发布的 JVM 容器镜像和 Kubernetes Helm 图表。
在 v0.13.0 中,Client Spider 和浏览器身份验证配置文件支持直接和排队执行浏览器爬取。有关设置、经过身份验证的爬取和报告,请参阅 Client Spider 指南。这些功能不包含在 v0.12.0 中。
版本 0.17.1
0.17.1 发布和升级指南介绍了中性的已记录发现项响应、权威的显式目标拒绝、考虑权限的后续操作,以及本地客户端的设置选项。必须在 GitHub Releases 中分别确认标签、镜像、注册表版本和 Desktop 下载是否已发布。在对应发行版可用之前,请使用已验证存在已发布镜像的版本。v0.17.0 GitHub 发行版不完整:缺少 Desktop 资源,且镜像发布工作流未完成。有关可用性检查,请参阅升级指南。
版本 0.16.0
版本 v0.16.0 已发布。
Linux AMD64 和 ARM64 镜像已发布到 GHCR 和 Docker Hub,MCP
Registry 0.16.0 已设为 active/latest。
发布与升级指南记录了
镜像摘要和安装要求。
Automation Framework 计划现在会验证整个计划的时长和所需的
引擎/附加组件能力,对计划和构件强制执行文件系统路径限制,并验证报告输出目录和文件名。
计划状态会将 Successful 报告为 pending、no 或 unknown,不会把完成时间戳视为扫描已完成的证明。
了解扫描器的 CI 对比要求引擎/附加组件清单一致,面向目标的报告则会保留所请求来源的根警报证据。
本地 Docker 快速入门使用明确指定版本的发布镜像和经过身份验证的就绪检查。 Apple Silicon 软件包和私有 ChatGPT 连接是可选的预览路径;安装和网络要求请参阅相应指南。
版本 0.15.0
请参阅 GitHub Releases, 了解最新发布的版本及其发布日期。特定版本的文档介绍该版本的行为,不代表镜像 已可用。只有在相应的发布工作流成功且版本化镜像已在你的镜像仓库中可用后, 才能部署。
版本 v0.15.0 新增了从客户端提供的内容导入 OpenAPI 的可选功能,以及完整的分页报告检索功能。
面向目标的报告会移除无关的共享会话数据,HTTP 爬取深度可独立于子项数量进行配置;
如果 ZAP 延迟启动或其引擎被替换,健康检查会重新应用强制出站设置。启用内容导入或升级现有部署前,
请先查看存储和配置要求。
此版本还包含一个 CloudFormation EKS 入门示例, 以及一份使用 JWT 身份验证、持久化报告存储和网络策略部署 Helm chart 的操作指南。
版本 0.14.0
版本 v0.14.0 加固了 API 密钥配置、JWT 撤销与刷新、
Automation Framework 计划、OpenAPI 目标覆盖、HTTP 指标和 Helm
入口策略。此版本还采用了 Gateway Core 和 Spring WebFlux 适配器
0.11.0,其中包含共享治理审计和活动工具验证。部署前请阅读升级说明:旧版 API 密钥属性已移除,
JWT 后端故障将按失败关闭方式处理,接受的自动化输入和审计字段也已更改。升级时请使用已发布的镜像。
安全默认设置
默认配置有意采取保守策略:
api-key模式是运行时的基础默认模式。none模式仅用于明确指定的本地开发/测试。- Docker Compose 默认将已发布端口绑定到环回地址。
- Java 25 JVM 镜像使用固定摘要的 distroless 运行时,不含 shell 或软件包管理器;应通过日志、指标和外部诊断容器进行调试,而不要在应用容器中安装工具。
- URL 验证默认会阻止 localhost、专用网络和链路本地目标。
- 目标身份验证为可选项,配置文件默认是空列表。启用后,引导式身份验证会将精确的服务端凭据引用和登录设置绑定到一个获准的源;调用方只需提供
profileId和targetUrl。 - 公开的身份验证交换端点受到速率限制。
- MCP 请求正文设有严格的提前大小上限。
如需在没有 Kubernetes 的情况下首次部署到私有 AWS 环境,请使用 AWS EC2 with Docker Compose 及其独立示例。
如需使用 Kubernetes,请使用 EKS 基础设施入门模板,在现有 VPC 中创建专用评估集群,然后使用现有 Helm 图表进行部署。请遵循演练指南,完成网络配置、JWT 身份验证、持久化存储和部署检查。
生产环境和共享部署应查阅:
架构
flowchart LR
Client["Your MCP Client"] -->|"MCP over Streamable HTTP"| MCP["MCP ZAP Server"]
MCP -->|"ZAP API"| ZAP["ZAP"]
ZAP -->|"scan"| Target["Authorized target app"]
MCP -->|"reports / findings / history"| Evidence["Evidence + reports"]
如需多副本排队、持久化 Postgres 状态、声明恢复和入口亲和性,请参阅运维文档,而不要参考本 README:
扩展模型
扩展 API 提供用于策略、防护、证据和元数据集成的选定契约:
mcp-zap-extension-api包含选定的策略、防护、证据和元数据契约,不包含网关运行时内部组件。- 扩展的工作方式介绍核心与扩展之间的边界。
- 构建自己的扩展展示目标独立仓库的结构。
- 扩展 API 发布策略介绍发布阶段和兼容性门槛。
- 独立示例扩展展示单独项目如何依赖 API 构件。
扩展不会增加运行时多引擎支持。增加其他扫描器引擎需要为其提供各自的适配器,并明确界定能力边界。
文档索引
从这里开始:
扫描:
运维:
开源核心与扩展模型
mcp-zap-server 是基于 Apache-2.0 许可的开源核心,旨在独立提供实用的可自托管 MCP 和 ZAP 工作流。
私有或企业级功能可以围绕此核心构建为独立扩展。运行开源项目并不需要这些扩展,企业实现代码也不会随本仓库一同发布。
此边界是有意设定的:
- 本仓库仍是公开的开源发行版
- 扩展点应有文档说明,并在可行时保持稳定
- 私有扩展不得削弱开源核心的安全性、许可合规性或易用性
- 本仓库的安全扫描和开源计划权益仅适用于此公开项目
贡献与支持
如果此项目为你节省了时间,或成为你安全工作流的一部分,你可以赞助维护者,以支持持续维护。
Agentic Lab 为在生产环境中采用公开核心的团队提供可选的付费支持。商业支持与基于 Apache-2.0 许可的开源发行版相互独立;即使没有私有扩展或付费服务,公开核心也应仍可使用。
许可证
Apache License 2.0。版权所有 2025-2026 Daniel Tse。参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。