MCP ZAP Server
Expõe o OWASP ZAP como um servidor MCP, permitindo que agentes de IA orquestrem varreduras de segurança, importem especificações OpenAPI e gerem relatórios.
Documentação
MCP ZAP Server
Dê aos agentes de IA um operador OWASP ZAP seguro e auto-hospedado para varreduras guiadas de segurança web, descobertas, relatórios e proteções de produção.
Nota Este projeto não é afiliado ou endossado pela OWASP ou pelo projeto OWASP ZAP. É uma implementação independente.
mcp-zap-server expõe o OWASP ZAP por meio de MCP sobre HTTP transmissível para que ferramentas agênticas possam executar fluxos de trabalho de segurança controlados pelo operador, sem scripts de cola frágeis ou acesso inseguro ao scanner.
Use quando quiser:
- varredura agêntica segura com padrões guiados para spider, varredura ativa, varredura passiva, importações de API, descobertas e relatórios
- controle do operador por meio de autenticação por chave de API ou JWT, escopos de ferramentas, pacotes de política em tempo de execução, limites de taxa e eventos de auditoria
- implantação auto-hospedada com Docker Compose para adoção local e Helm para Kubernetes
- acesso ZAP especializado quando você precisa intencionalmente de controles de contexto, usuário, varredura e relatório de nível mais baixo do ZAP
Documentação completa: danieltse.org/mcp-zap-server
Assista à demonstração: demonstração no navegador ou YouTube
Início Rápido
Pré-requisitos:
- Docker 20.10+
- Docker Compose v2 (
docker compose) - um cliente compatível com MCP, ou o cliente Open WebUI incluído
git clone https://github.com/dtkmn/mcp-zap-server.git
cd mcp-zap-server
./bin/bootstrap-local.sh
./dev.sh
./bin/self-serve-doctor.sh
Esses scripts são o caminho feliz local suportado, não mágica oculta:
bootstrap-local.shcria.env, gera chaves de API locais e prepara o espaço de trabalho do ZAP.dev.shinicia a pilha Docker Compose com a imagem JVM mais rápida.self-serve-doctor.shverifica Docker, autenticação, inicialização do MCP,tools/list, ferramentas guiadas e uma chamada de ferramenta inofensiva.
A imagem JVM permanece Java 25 de ponta a ponta: compilação de código-fonte, bytecode e tempo de execução têm como alvo o Java 25. Seu tempo de execução final é distroless, portanto contém intencionalmente nenhum shell, gerenciador de pacotes ou curl. Uma pequena sonda HTTP integrada mantém o status de saúde normal do Docker Compose; docker compose ps ainda relata o serviço MCP como (healthy) após a inicialização.
Em seguida, abra:
- Open WebUI:
http://localhost:3000 - endpoint MCP para clientes do lado do host:
http://localhost:7456/mcp - exemplo de configuração do Cursor:
examples/cursor/mcp.json
Ao varrer os alvos de demonstração incluídos, use as URLs de contêiner que o ZAP pode alcançar de dentro do Compose:
- alvo de varredura Juice Shop:
http://juice-shop:3000 - alvo de varredura Petstore:
http://petstore:8080
A pilha Compose padrão publica portas do host apenas em 127.0.0.1. Defina MCP_ZAP_BIND_ADDRESS=0.0.0.0 somente quando você expor intencionalmente a pilha atrás de controles de rede confiáveis.
Configuração do cliente:
- Primeira Execução Autônoma
- Autenticação de Acesso MCP
- Configuração de Cliente MCP
- Login de Formulário de Alvo Opcional
- Superfícies de Ferramentas
- Notas de instalação do agente
Existem duas camadas de autenticação independentes. A chave de API ou JWT permite que o Cursor chame o MCP ZAP Server. Um perfil opcional de autenticação de alvo permite que o ZAP faça login em um aplicativo que você está autorizado a varrer. A maioria das primeiras execuções precisa apenas da chave de API do MCP; nunca coloque uma senha de site de destino no Cursor ou em um prompt MCP.
Metadados de Descoberta
Este repositório inclui metadados do MCP Registry em .mcp/server.json. As imagens Docker v0.11.0 são rotuladas com o nome do servidor MCP esperado pelas ferramentas de registro e catálogo.
O Docker Compose continua sendo o caminho de instalação mais fácil porque o servidor MCP é projetado para operar com um sidecar OWASP ZAP e chaves de autenticação explícitas. Os metadados do pacote OCI são para instalações autônomas avançadas onde o OWASP ZAP já está em execução e acessível a partir do contêiner MCP.
O Que Você Obtém
- Varreduras guiadas: ferramentas orientadas por intenção para spider, varredura ativa, varredura passiva, importações de API, descobertas, relatórios e histórico de varredura.
- Controle ZAP especializado: ferramentas opcionais de nível mais baixo para fluxos de trabalho avançados de contexto, usuário, varredura e relatório do ZAP.
- Autenticação: modo de chave de API por padrão, modo JWT opcional com suporte a atualização e revogação.
- Pacotes de política em tempo de execução: suporte a simulação (dry-run) e aplicação por meio de
zap_policy_dry_rune configuração de modo de política. - Fila e histórico de varredura: trabalhos enfileirados de varredura ativa, spider e AJAX Spider com recuperação baseada em reivindicação, estado Postgres durável e exportação de evidências.
- Contratos de extensão: APIs experimentais de política, proteção, metadados de evidência e metadados de extensão com empacotamento de extensão de exemplo.
- Proteções operacionais: limites de corpo de solicitação, limites de taxa, cotas de espaço de trabalho, autorização de escopo de ferramenta, logs estruturados, métricas e eventos de auditoria.
- Caminhos de implantação: Docker Compose local, imagens de contêiner JVM publicadas e charts Helm para Kubernetes.
Última Versão
v0.11.0 moderniza o tempo de execução e a cadeia de suprimentos de contêineres sem alterar os nomes das ferramentas MCP ou os esquemas de entrada:
- gateway-core e seu adaptador WebFlux migram para
0.8.0, com a vinculação de dados do aplicativo migrada para Jackson 3 e gerenciada pelo BOM Jackson3.2.1 - a imagem final Java 25 é construída em um tempo de execução distroless verificado por Cosign e fixado por digest, com uma sonda de saúde HTTP sem shell
- a fachada de implantação native-image não suportada foi removida; use a imagem JVM versionada ou Helm
- a CI principal não publica mais imagens contínuas
mainousha-*; imagens estáveis AMD64 e ARM64 são publicadas apenas a partir de eventos de lançamento imutável do GitHub - nenhuma migração de banco de dados ou alteração de configuração de autenticação é necessária; o contêiner permanece UID/GID
1000, agora declarado explicitamente no Helm
Leia as notas completas:
Padrões de Segurança
A postura padrão é intencionalmente conservadora:
- O modo
api-keyé o padrão base do tempo de execução. - O modo
noneé apenas para desenvolvimento/teste local explícito. - O Docker Compose vincula portas publicadas ao loopback por padrão.
- A imagem JVM Java 25 usa um tempo de execução distroless fixado por digest, sem shell ou gerenciador de pacotes; depure-a por meio de logs, métricas e contêineres de diagnóstico externos, em vez de instalar ferramentas no contêiner do aplicativo.
- A validação de URL bloqueia localhost, redes privadas e alvos link-local por padrão.
- A autenticação de alvo é opcional e os perfis padrão são uma lista vazia. Quando habilitada, a autenticação guiada vincula uma referência exata de credencial no lado do servidor e configurações de login a uma origem aprovada; os chamadores fornecem apenas
profileIdetargetUrl. - Os endpoints públicos de troca de autenticação têm limite de taxa.
- Os corpos de solicitação MCP têm um limite rígido de tamanho antecipado.
Implantações de produção e compartilhadas devem revisar:
- Modos de Segurança
- Autenticação JWT
- Login de Formulário de Alvo Opcional
- Referência de Varredura Autenticada
- Proteção contra Abuso
- Checklist de Prontidão para Produção
- Política de Segurança
Arquitetura
flowchart LR
Client["Open WebUI / MCP Client"] -->|"MCP over Streamable HTTP"| MCP["MCP ZAP Server"]
MCP -->|"ZAP API"| ZAP["OWASP ZAP"]
ZAP -->|"scan"| Target["Authorized target app"]
MCP -->|"reports / findings / history"| Evidence["Evidence + reports"]
Para filas com múltiplas réplicas, estado Postgres durável, recuperação de reivindicação e afinidade de entrada, use os documentos de operações em vez deste README:
- Coordenador de Fila e Reivindicações de Trabalhador
- Simulação Local de HA com Compose
- Registro de Histórico de Varredura
- Implantação Helm
Modelo de Extensão
O ZAP é o primeiro mecanismo de varredura, não o limite completo do produto. O trabalho público atual de extensão é intencionalmente pequeno:
mcp-zap-extension-apiempacota contratos selecionados de política, proteção, evidência e metadados sem os internos do tempo de execução do gateway.- Como as extensões funcionam explica o limite entre núcleo e extensão.
- Crie sua própria extensão mostra o formato do repositório autônomo de destino.
- Política de versão da API de extensão explica os estágios de publicação e os portões de compatibilidade.
- Extensão de exemplo autônoma prova que um projeto separado pode compilar contra o artefato da API.
Isso ainda não é suporte a múltiplos mecanismos em tempo de execução. Mecanismos de varredura adicionais precisam de um design de adaptador e limites de capacidade explícitos de falha fechada antes de se tornarem promessas do produto.
Mapa de Documentação
Comece aqui:
- Documentação completa
- Primeira Execução Autônoma
- Modelo de Extensão OSS
- Autenticação de Acesso MCP
- Autenticação de Cliente MCP
- Login de Formulário de Alvo Opcional
- Superfícies de Ferramentas
Varredura:
- Varredura de Cliente MCP até Evidência
- Modos de Execução de Varredura
- Manual do Portão de API com Semente
- Importações de Esquema de API
- AJAX Spider
- Descobertas e Relatórios
Operações:
- Pacotes de Política em Tempo de Execução
- Observabilidade
- Checklist de Produção
- Entrega de Evidências de Versão
Núcleo de Código Aberto e Modelo de Extensão
mcp-zap-server é o núcleo de código aberto licenciado sob Apache-2.0. Ele é projetado para ser útil por conta própria para fluxos de trabalho MCP auto-hospedados e OWASP ZAP.
Capacidades privadas ou empresariais podem ser construídas como extensões separadas em torno deste núcleo. Essas extensões não são necessárias para executar o projeto OSS, e o código de implementação empresarial não é distribuído neste repositório.
O limite é intencional:
- este repositório permanece como a distribuição pública OSS
- os pontos de extensão devem ser documentados e mantidos estáveis quando prático
- extensões privadas não devem enfraquecer a segurança, o licenciamento ou a usabilidade do núcleo OSS
- a varredura de segurança e os direitos de programa de código aberto para este repositório se aplicam apenas a este projeto público
Contribuição e Suporte
Se este projeto economizar seu tempo ou fizer parte do seu fluxo de trabalho de segurança, você pode patrocinar o mantenedor para apoiar a manutenção contínua.
A Agentic Lab oferece suporte pago opcional para equipes que adotam o núcleo público em produção. O suporte comercial é separado da distribuição OSS licenciada sob Apache-2.0, e o núcleo público deve permanecer utilizável sem extensões privadas ou serviços pagos.
Licença
Apache License 2.0. Copyright 2025-2026 Daniel Tse. Consulte LICENSE.