Skip to main content
Glama
pierre3

io.github.pierre3/zap-mcp

by pierre3

dotnet-zap-mcp

NuGet NuGet Downloads Release

MCP-сервер (Model Context Protocol) для OWASP ZAP. Позволяет AI-агентам (Claude, GitHub Copilot и др.) управлять сканированием уязвимостей ZAP через MCP.

Возможности

  • 45 MCP-инструментов для управления OWASP ZAP (сканирование, оповещения, spider, ajax spider, контексты, аутентификация, отчёты и т.д.)

  • Встроенное управление 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 (Docker Engine или Docker Desktop) с поддержкой docker compose (для встроенного управления контейнером ZAP)

Конфигурация

Без конфигурации (рекомендуется)

Конфигурация не требуется. Агент вызывает DockerComposeUp, который автоматически:

  1. Извлекает Docker-ресурсы в ~/.zap-mcp/docker/

  2. Генерирует случайный API-ключ

  3. Запускает контейнер ZAP на localhost:8090

  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

url, maxChildren, recurse, subtreeOnly, contextName

Запустить spider-сканирование для обхода и обнаружения страниц

GetSpiderStatus

scanId

Проверить прогресс spider (0-100%)

GetSpiderResults

scanId

Получить URL, обнаруженные spider

StopSpider

scanId

Остановить выполняющееся spider-сканирование

Активное сканирование

Инструмент

Параметры

Описание

StartActiveScan

url, recurse, inScopeOnly, scanPolicyName, contextId

Запустить активное сканирование уязвимостей

GetActiveScanStatus

scanId

Проверить прогресс активного сканирования (0-100%)

StopActiveScan

scanId

Остановить выполняющееся активное сканирование

Пассивное сканирование

Инструмент

Параметры

Описание

GetPassiveScanStatus

Проверить прогресс пассивного сканирования (оставшиеся записи)

Оповещения

Инструмент

Параметры

Описание

GetAlertsSummary

baseUrl

Количество оповещений по уровню риска

GetAlerts

baseUrl, start, count, riskId

Подробный список оповещений с пагинацией и фильтром по риску

Отчёты

Инструмент

Параметры

Описание

GetHtmlReport

Сгенерировать HTML-отчёт о сканировании

GetJsonReport

Сгенерировать JSON-отчёт о сканировании

GetXmlReport

Сгенерировать XML-отчёт о сканировании

Управление контекстами

Инструмент

Параметры

Описание

GetContextList

Список всех контекстов, определённых в ZAP

GetContext

contextName

Получить детали контекста (шаблоны области и т.д.)

CreateContext

contextName

Создать новый контекст

RemoveContext

contextName

Удалить контекст

IncludeInContext

contextName, regex

Добавить шаблон включения URL в область контекста

ExcludeFromContext

contextName, regex

Добавить шаблон исключения URL из области контекста

ImportContext

contextFilePath

Импортировать файл контекста в ZAP

ExportContext

contextName, contextFilePath

Экспортировать контекст в файл

Аутентификация

Инструмент

Параметры

Описание

GetAuthenticationMethod

contextId

Получить метод аутентификации, настроенный для контекста

SetAuthenticationMethod

contextId, authMethodName, authMethodConfigParams

Установить метод аутентификации (на основе формы, JSON, скрипта, HTTP)

SetLoggedInIndicator

contextId, loggedInIndicatorRegex

Установить регулярное выражение, указывающее на состояние входа

SetLoggedOutIndicator

contextId, loggedOutIndicatorRegex

Установить регулярное выражение, указывающее на состояние выхода

Пользователи

Инструмент

Параметры

Описание

GetUsersList

contextId

Список всех пользователей для контекста

CreateUser

contextId, name

Создать нового пользователя

RemoveUser

contextId, userId

Удалить пользователя

SetAuthenticationCredentials

contextId, userId, authCredentialsConfigParams

Установить учётные данные пользователя (имя пользователя/пароль)

SetUserEnabled

contextId, userId, enabled

Включить или отключить пользователя

Принудительный пользователь

Инструмент

Параметры

Описание

SetForcedUser

contextId, userId

Установить принудительного пользователя для контекста

SetForcedUserModeEnabled

enabled

Включить или отключить режим принудительного пользователя глобально

GetForcedUserStatus

contextId

Получить статус режима принудительного пользователя и текущего принудительного пользователя

Ajax Spider

Инструмент

Параметры

Описание

StartAjaxSpider

url, inScope, contextName, subtreeOnly

Запустить Ajax Spider для приложений с интенсивным использованием JavaScript

StartAjaxSpiderAsUser

contextName, userId, url, subtreeOnly

Запустить Ajax Spider от имени конкретного пользователя

GetAjaxSpiderStatus

Получить статус Ajax Spider (работает/остановлен)

GetAjaxSpiderResults

Получить сводку результатов Ajax Spider

StopAjaxSpider

Остановить Ajax Spider

Типичный рабочий процесс

  1. Агент вызывает DockerComposeUp для запуска ZAP

  2. Настройте браузер/Playwright на использование ZAP в качестве прокси (http://127.0.0.1:8090)

  3. Просмотрите целевое приложение через прокси

  4. Агент вызывает StartSpider для обхода приложения, затем GetSpiderStatus для отслеживания прогресса

  5. Агент вызывает GetPassiveScanStatus для ожидания завершения пассивного сканирования

  6. Агент вызывает StartActiveScan на ключевых страницах, затем GetActiveScanStatus для отслеживания прогресса

  7. Агент вызывает GetAlertsSummary и GetAlerts для получения данных об уязвимостях

  8. Агент вызывает GetHtmlReport или GetJsonReport для генерации отчёта о сканировании

  9. Агент вызывает DockerComposeDown по завершении

Примечание: Настройки ZAP (контексты, аутентификация, политики сканирования) сохраняются в Docker-томе zap-home. Вы можете остановить и перезапустить контейнер без потери конфигурации.

Попробуйте (с включённым уязвимым приложением)

Этот репозиторий включает намеренно уязвимое веб-приложение для тестирования сканирования 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"
      }
    }
  }
}

Уязвимое приложение доступно по адресу http://target внутри сети Docker (используется 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