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 logo

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.

GitHub stars GitHub forks GitHub tag GitHub license

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

MCP ZAP Server demo video thumbnail

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.sh cria .env, gera chaves de API locais e prepara o espaço de trabalho do ZAP.
  • dev.sh inicia a pilha Docker Compose com a imagem JVM mais rápida.
  • self-serve-doctor.sh verifica 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:

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_run e 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 Jackson 3.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 main ou sha-*; 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 profileId e targetUrl.
  • 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:

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:

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:

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:

Varredura:

Operações:

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.

Contate a Agentic Lab

Licença

Apache License 2.0. Copyright 2025-2026 Daniel Tse. Consulte LICENSE.