io.github.pierre3/zap-mcp
dotnet-zap-mcp
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Предварительные требования
Docker (Docker Engine или Docker Desktop) с поддержкой
docker compose(для встроенного управления контейнером ZAP)
Конфигурация
Без конфигурации (рекомендуется)
Конфигурация не требуется. Агент вызывает DockerComposeUp, который автоматически:
Извлекает Docker-ресурсы в
~/.zap-mcp/docker/Генерирует случайный API-ключ
Запускает контейнер ZAP на
localhost:8090Ожидает, пока ZAP станет здоровым
Постоянное хранение данных
Контейнер ZAP использует два именованных Docker-тома:
Том | Путь в контейнере | Назначение |
|
| Настройки ZAP, контексты, сессии, политики сканирования (сохраняются между перезапусками) |
|
| Общий каталог для отчётов, файлов сессий и импорта/экспорта контекстов |
При первом запуске шаблон config.xml копируется в zap-home. При последующих запусках обновляется только API-ключ — все изменения, внесённые через ZAP (контексты, настройки аутентификации, политики сканирования и т.д.), сохраняются.
Том zap-data содержит:
reports/— сгенерированные отчёты о сканированииsessions/— сохранённые сессии ZAPcontexts/— экспортированные файлы контекстов
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
Инструмент | Параметры | Описание |
| — | Запустить контейнер ZAP и дождаться готовности |
| — | Остановить и удалить контейнер ZAP |
| — | Проверить статус контейнера |
|
| Получить последние логи контейнера |
Ядро ZAP
Инструмент | Параметры | Описание |
| — | Проверить подключение к ZAP |
| — | Список записанных хостов |
| — | Список записанных сайтов |
|
| Список URL для базового URL |
Spider
Инструмент | Параметры | Описание |
|
| Запустить spider-сканирование для обхода и обнаружения страниц |
|
| Проверить прогресс spider (0-100%) |
|
| Получить URL, обнаруженные spider |
|
| Остановить выполняющееся spider-сканирование |
Активное сканирование
Инструмент | Параметры | Описание |
|
| Запустить активное сканирование уязвимостей |
|
| Проверить прогресс активного сканирования (0-100%) |
|
| Остановить выполняющееся активное сканирование |
Пассивное сканирование
Инструмент | Параметры | Описание |
| — | Проверить прогресс пассивного сканирования (оставшиеся записи) |
Оповещения
Инструмент | Параметры | Описание |
|
| Количество оповещений по уровню риска |
|
| Подробный список оповещений с пагинацией и фильтром по риску |
Отчёты
Инструмент | Параметры | Описание |
| — | Сгенерировать HTML-отчёт о сканировании |
| — | Сгенерировать JSON-отчёт о сканировании |
| — | Сгенерировать XML-отчёт о сканировании |
Управление контекстами
Инструмент | Параметры | Описание |
| — | Список всех контекстов, определённых в ZAP |
|
| Получить детали контекста (шаблоны области и т.д.) |
|
| Создать новый контекст |
|
| Удалить контекст |
|
| Добавить шаблон включения URL в область контекста |
|
| Добавить шаблон исключения URL из области контекста |
|
| Импортировать файл контекста в ZAP |
|
| Экспортировать контекст в файл |
Аутентификация
Инструмент | Параметры | Описание |
|
| Получить метод аутентификации, настроенный для контекста |
|
| Установить метод аутентификации (на основе формы, JSON, скрипта, HTTP) |
|
| Установить регулярное выражение, указывающее на состояние входа |
|
| Установить регулярное выражение, указывающее на состояние выхода |
Пользователи
Инструмент | Параметры | Описание |
|
| Список всех пользователей для контекста |
|
| Создать нового пользователя |
|
| Удалить пользователя |
|
| Установить учётные данные пользователя (имя пользователя/пароль) |
|
| Включить или отключить пользователя |
Принудительный пользователь
Инструмент | Параметры | Описание |
|
| Установить принудительного пользователя для контекста |
|
| Включить или отключить режим принудительного пользователя глобально |
|
| Получить статус режима принудительного пользователя и текущего принудительного пользователя |
Ajax Spider
Инструмент | Параметры | Описание |
|
| Запустить Ajax Spider для приложений с интенсивным использованием JavaScript |
|
| Запустить Ajax Spider от имени конкретного пользователя |
| — | Получить статус Ajax Spider (работает/остановлен) |
| — | Получить сводку результатов Ajax Spider |
| — | Остановить Ajax Spider |
Типичный рабочий процесс
Агент вызывает
DockerComposeUpдля запуска ZAPНастройте браузер/Playwright на использование ZAP в качестве прокси (
http://127.0.0.1:8090)Просмотрите целевое приложение через прокси
Агент вызывает
StartSpiderдля обхода приложения, затемGetSpiderStatusдля отслеживания прогрессаАгент вызывает
GetPassiveScanStatusдля ожидания завершения пассивного сканированияАгент вызывает
StartActiveScanна ключевых страницах, затемGetActiveScanStatusдля отслеживания прогрессаАгент вызывает
GetAlertsSummaryиGetAlertsдля получения данных об уязвимостяхАгент вызывает
GetHtmlReportилиGetJsonReportдля генерации отчёта о сканированииАгент вызывает
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 reportZAP обнаружит такие страницы, как /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Лицензия
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceIntegrates 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.5MIT

Grype MCP Serverofficial
AlicenseAqualityFmaintenanceEnables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.99Apache 2.0- AlicenseAqualityDmaintenanceEnables AI agents to search, retrieve, and analyze vulnerability data from the NIST National Vulnerability Database through a comprehensive Model Context Protocol server.88MIT
- FlicenseNot gradedqualityCmaintenanceA lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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