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, , , , , , , httpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweeplistEngagementRecords, 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"
}
}
{
"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
A imagem Docker instala:
nmap, john, hashcat, gobuster, nikto, ffuf, hydra, sqlmap, tcpdumpsubfinder, httpx + alias httpx-toolkit, nucleiGaranta que os binários estejam no PATH:
which nmap john hashcat gobuster nikto subfinder httpx-toolkit ffuf nuclei hydra sqlmap tcpdump
Se httpx-toolkit não estiver instalado, um binário httpx validado do ProjectDiscovery é aceito como fallback.
Uso autorizado apenas. Execute apenas contra sistemas/redes onde você tenha permissão explícita por escrito.
Última atualização: 2026-03-23
O Protocolo de Contexto de Modelo (MCP) ainda é uma das camadas de interoperabilidade mais úteis para ferramentas e agentes. A compensação é que servidores MCP grandes podem expor muitas ferramentas, e chamadas ingênuas de ferramentas podem inundar janelas de contexto com esquemas, conversas de ferramentas e rastros de chamadas irrelevantes.
Na prática, 'mais ferramentas' nem sempre significa 'melhores resultados'. A área de superfície das ferramentas deve ser combinada com padrões de execução que mantenham o uso de tokens limitado e o comportamento previsível.
Fluxos de trabalho recentes estão cada vez mais movendo a orquestração complexa para fora do contexto de chat e para loops de execução de código. Isso reduz tokens de esquema repetitivos e torna o uso de ferramentas auditável e testável.
Leitura essencial:
Para usuários que desejam uso reprodutível e com menos ruído do MCP, comece com uma configuração orientada a modo de código:
Advertência prática: mesmo com uma configuração robusta, o comportamento do modelo ainda pode ser inconsistente entre provedores e versões. Mantenha tentativas, proteções e fallbacks determinísticos no lugar.
Um padrão de alta alavancagem é encapsular servidores MCP em interfaces de código chamáveis e CLIs focados em tarefas, em vez de expor todas as ferramentas brutas ao modelo o tempo todo.
Ferramentas de referência:
Este espaço muda rapidamente. Se você está lendo isso agora, partes desta orientação podem já estar desatualizadas.
A injeção de prompt continua sendo um problema de segurança em aberto para agentes que utilizam ferramentas. É gerenciável, mas não 'resolvido'.
Riscos principais:
Consequências:
Base de mitigação:
Trate toda saída de ferramenta como entrada não confiável, a menos que verificada explicitamente.
Este servidor tem como alvo a versão 2025-11-25 do protocolo MCP e o SDK @modelcontextprotocol/sdk@^1.27.1.
| Recurso | Status |
|---|---|
| Transporte stdio | Suportado (padrão) |
| Transporte HTTP Streamable | Suportado (MCP_TRANSPORT=http) |
| Transporte SSE (legado) | Modo de compatibilidade obsoleto |
| Anotações de ferramentas | Todas as ferramentas anotadas com título, readOnlyHint, destructiveHint, idempotentHint, openWorldHint |
| Autenticação Bearer (OIDC/JWKS) | Suportado |
| Validação de origem (HTTP) | 403 em Origin inválida quando MCP_ALLOWED_ORIGINS está definida |
| JSON Schema 2020-12 | Esquemas gerados por Zod |
| Erros de ferramenta estruturados | Flag isError com mensagens descritivas para autocorreção do modelo |
| Elicitação | Usado para captura de SoW na geração de relatórios |