NÃO para fins educacionais: Um servidor MCP para testadores de penetração profissionais, incluindo suporte STDIO/HTTP/SSE, nmap, go/dirbuster, nikto, JtR, hashcat, construção de wordlists e mais.
Servidor MCP profissional de teste de penetração com suporte moderno a transporte/autenticação e ferramentas de reconhecimento expandidas.
@modelcontextprotocol/sdk@^1.26.0@modelcontextprotocol/inspector@^0.20.0) com lançador integradoMCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask) com fallback seguro para templatehttpx-toolkit (preferido) ou httpx validado do ProjectDiscovery, evitando colisões com o CLI httpx do Pythonpentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistlistEngagementRecordsgetEngagementRecordcreateClientReportcancelScannpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Você pode encaminhar flags do Inspector diretamente:
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: padrão para clientes MCP locais.http: transporte de rede moderno. Recomendado.sse: apenas compatibilidade. Obsoleto e será removido em uma futura versão principal.pentest-mcp inspector inicia o CLI integrado do @modelcontextprotocol/inspector.node <this-package-entrypoint> stdioDefina estas variáveis de ambiente ao usar MCP_TRANSPORT=http (ou sse se necessário):
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
# modo de validação alternativo/backup opcional:
MCP_OIDC_INTROSPECTION_URL=https://issuer.example.com/oauth/introspect
MCP_OAUTH_CLIENT_ID=...
MCP_OAUTH_CLIENT_SECRET=...
Aliases legados ainda são aceitos temporariamente:
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport agora suporta modos de manipulação de SoW:
scopeMode=ask: solicitar usuário via elicitação MCP (recomendado)scopeMode=provided: usar valor scopeOfWork diretamentescopeMode=template: usar template interno genérico de teste autorizadoSe a elicitação for recusada/indisponível, o relatório automaticamente recorre ao template.
Ainda não há uma API separada de upload de arquivo. As opções atuais são:
{
"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=...) com contexto de invocação.listEngagementRecords para obter todos os artefatos de trabalho rapidamente.recordIds selecionados (ou registros mais recentes por padrão) em vez de copiar/colar manualmente.ask)provided)template)Estes são planejados especificamente para reduzir a sobrecarga administrativa de pentest.
scopeFilePath (carregar SoW de um caminho de arquivo local no host MCP)scopeDocument (enviar conteúdo SoW diretamente via MCP para clientes remotos)recordId) a descobertas e seções de relatórionuclei, nikto, etc.)Nota de adoção:
scopeFilePath e scopeDocument porque a maioria das equipes já mantém SoW em documentos/PDF e quer evitar etapas repetitivas de copiar e reformatar.{
"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"
}
}