
НЕ для образовательных целей: MCP-сервер для профессиональных пентестеров, включающий поддержку STDIO/HTTP/SSE, а также nmap, go/dirbuster, nikto, JtR, hashcat, создание wordlist и многое другое.
Профессиональный MCP-сервер для пентеста с поддержкой современных транспортных протоколов и аутентификации, а также расширенным набором инструментов разведки.
@modelcontextprotocol/sdk@^1.26.0@modelcontextprotocol/inspector@^0.20.0) со встроенным лаунчеромMCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask) и безопасным запасным шаблономhttpx-toolkit (предпочтительно) или проверенный ProjectDiscovery httpx, что позволяет избежать коллизий с Python-клиентом httpxpentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistnpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Вы можете передавать флаги Inspector напрямую:
pentest-mcp inspector --help
MCP_TRANSPORT=http MCP_SERVER_HOST=0.0.0.0 MCP_SERVER_PORT=8000 pentest-mcp
MCP_TRANSPORT=sse MCP_SERVER_PORT=8001 pentest-mcp
stdio: по умолчанию для локальных MCP-клиентов.http: современный сетевой транспорт. Рекомендуется.sse: только совместимость. Устарел и будет удалён в одном из будущих мажорных релизов.pentest-mcp inspector запускает встроенный CLI @modelcontextprotocol/inspector.node <this-package-entrypoint> stdioЗадайте эти переменные окружения при использовании MCP_TRANSPORT=http (или sse, если необходимо):
MCP_AUTH_ENABLED=true
MCP_AUTH_MODE=bearer
MCP_AUTH_SCOPES=read,write
MCP_AUTH_AUDIENCE=
MCP_OIDC_ISSUER=https://issuer.example.com
MCP_OIDC_JWKS_URL=https://issuer.example.com/.well-known/jwks.json
# optional alternative/backup validation mode:
MCP_OIDC_INTROSPECTION_URL=https://issuer.example.com/oauth/introspect
MCP_OAUTH_CLIENT_ID=...
MCP_OAUTH_CLIENT_SECRET=...
Устаревшие псевдонимы по-прежнему временно принимаются:
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport теперь поддерживает режимы обработки SoW:
scopeMode=ask: запросить ввод у пользователя через MCP-элиситацию (рекомендуется)scopeMode=provided: использовать значение scopeOfWork напрямуюscopeMode=template: использовать встроенный общий шаблон авторизованного тестированияЕсли элиситация отклонена или недоступна, отчёт автоматически переключается на шаблон.
Отдельного API для загрузки файлов пока нет. Текущие варианты:
{
"tool": "createClientReport",
"arguments": {
"title": "Q1 External Pentest",
"assessmentType": "external-network",
"scopeMode": "ask"
}
}
scopeOfWork{
"tool": "createClientReport",
"arguments": {
"title": "Q1 External Pentest",
"assessmentType": "external-network",
"scopeMode": "provided",
"scopeOfWork": "Authorized targets: ...\nOut-of-scope: ...\nTesting window: ...\nRules of engagement: ..."
}
}
{
"tool": "createClientReport",
"arguments": {
"title": "Q1 External Pentest",
"assessmentType": "external-network",
"scopeMode": "template"
}
}
recordId=...) с контекстом вызова.listEngagementRecords, чтобы быстро получить все артефакты работы.recordIds (или по умолчанию из последних записей) вместо ручного копирования и вставки.ask)provided)template)Ниже запланировано специально для снижения административной нагрузки при пентестах.
scopeFilePath (загрузка SoW из локального пути к файлу на хосте MCP)scopeDocument (отправка содержимого SoW напрямую через MCP для удалённых клиентов)recordId) к находкам и разделам отчётаnuclei, nikto и т. д.)Примечание о внедрении:
scopeFilePath и scopeDocument, поскольку большинство команд уже ведут SoW в документах/PDF и хотят избежать повторяющихся шагов по копированию и переформатированию.{
"tool": "subfinderEnum",
"arguments": {
"domain": "example.com",
"recursive": true,
"allSources": true
}
}
{
"tool": "httpxProbe",
"arguments": {
"targets": ["example.com", "api.example.com"],
"includeTitle": true,
"includeStatusCode": true
}
}
{
"tool": "ffufScan",
"arguments": {
"targetUrl": "https://example.com/FUZZ",
"wordlist": "/usr/share/seclists/Discovery/Web-Content/common.txt",
"threads": 40
}
}
{
"tool": "nucleiScan",
"arguments": {
"targets": ["https://example.com"],
"severities": ["medium", "high", "critical"]
}
}
{
"tool": "trafficCapture",
"arguments": {
"networkInterface": "eth0",
"packetCount": 200,
"bpfFilter": "tcp port 80"
}
}
{
"tool": "hydraBruteforce",
"arguments": {
"target": "10.10.10.20",
"service": "ssh",
"usernameList": "/usr/share/seclists/Usernames/top-usernames-shortlist.txt",
"passwordList": "/usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt"
}
}
{
"tool": "extractionSweep",
"arguments": {
"targetUrl": "https://target.local/item.php?id=1",
"risk": 2,
"level": 3
}
}
docker-compose --profile http up
docker-compose --profile stdio up
docker-compose --profile sse up
В Docker-образ устанавливаются:
nmap, john, hashcat, gobuster, nikto, ffuf, hydra, sqlmap, tcpdumpsubfinder, httpx + алиас httpx-toolkit, nucleiУбедитесь, что бинарники доступны в PATH:
which nmap john hashcat gobuster nikto subfinder httpx-toolkit ffuf nuclei hydra sqlmap tcpdump
Если httpx-toolkit не установлен, в качестве запасного варианта принимается проверенный бинарник ProjectDiscovery httpx.
Только для авторизованного использования. Запускайте только против систем и сетей, на которые у вас есть явное письменное разрешение.
Последнее обновление: 2026-03-23
Model Context Protocol (MCP) до сих пор остаётся одним из самых полезных уровней интероперабельности для инструментов и агентов. Оборотная сторона в том, что крупные MCP-серверы могут предоставлять множество инструментов, а наивный вызов инструментов способен переполнять контекстные окна схемами, служебным шумом инструментов и нерелевантными трассировками вызовов.
На практике «больше инструментов» не всегда значит «лучше результаты». Площадь поверхности инструментов должна сочетаться с паттернами выполнения, которые удерживают расход токенов в рамках и делают поведение предсказуемым.
В последних рабочих процессах сложная оркестрация всё чаще выносится из контекста чата в циклы выполнения кода. Это сокращает повторяющиеся токены схем и делает использование инструментов проверяемым и тестируемым.
Основные материалы:
Для пользователей, которым нужен воспроизводимый и менее шумный режим использования MCP, начните с настройки, ориентированной на codemode:
Практическое замечание: даже при хорошей настройке поведение модели может оставаться нестабильным у разных провайдеров и версий. Сохраняйте повторы, защитные ограничения и детерминированные запасные варианты.
Высокоэффективный паттерн — оборачивать MCP-серверы в вызываемые кодовые интерфейсы и узкоспециализированные CLI вместо того, чтобы всегда предоставлять модели все сырые инструменты.
Релевантные инструменты:
Эта область быстро меняется. Если вы читаете это сейчас, часть этих рекомендаций может уже устареть.
Инъекция промптов остаётся открытой проблемой безопасности для агентов, использующих инструменты. Она управляема, но не «решена».
Основные риски:
Последствия:
Базовые меры защиты:
Относитесь к выводу любого инструмента как к ненадёжному входу, если он явно не проверен.
Этот сервер нацелен на версию протокола MCP 2025-11-25 и SDK @modelcontextprotocol/sdk@^1.27.1.
listEngagementRecordsgetEngagementRecordcreateClientReportcancelScan| Функция | Статус |
|---|
| Транспорт stdio | Поддерживается (по умолчанию) |
| Транспорт Streamable HTTP | Поддерживается (MCP_TRANSPORT=http) |
| Транспорт SSE (устаревший) | Устаревший режим совместимости |
| Аннотации инструментов | Все инструменты аннотированы: title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint |
| Bearer-аутентификация (OIDC/JWKS) | Поддерживается |
| Проверка Origin (HTTP) | 403 при недопустимом Origin, если задан MCP_ALLOWED_ORIGINS |
| JSON Schema 2020-12 | Схемы, генерируемые Zod |
| Структурированные ошибки инструментов | Флаг isError с описательными сообщениями для самокоррекции модели |
| Элиситация | Используется для сбора SoW при генерации отчётов |