NON per scopi educativi: un server MCP per penetration tester professionisti che include supporto STDIO/HTTP/SSE, nmap, go/dirbuster, nikto, JtR, hashcat, creazione di wordlist e altro ancora.
Server MCP professionale per penetration test con supporto moderno per trasporto/autenticazione e strumentazione di ricognizione ampliata.
@modelcontextprotocol/sdk@^1.26.0@modelcontextprotocol/inspector@^0.20.0) con launcher integratoMCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask) con fallback su modello sicurohttpx-toolkit (preferito) o ProjectDiscovery httpx validato, evitando collisioni con la CLI Python httpxpentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistlistEngagementRecordsgetEngagementRecordcreateClientReportcancelScannpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Puoi inoltrare direttamente i flag di 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: predefinito per i client MCP locali.http: trasporto di rete moderno. Consigliato.sse: solo per compatibilità. Deprecato e verrà rimosso in una futura major release.pentest-mcp inspector avvia la CLI integrata @modelcontextprotocol/inspector.node <this-package-entrypoint> stdioImposta queste variabili d'ambiente quando usi MCP_TRANSPORT=http (o sse se necessario):
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=...
Gli alias legacy sono ancora accettati temporaneamente:
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport ora supporta le modalità di gestione della SoW:
scopeMode=ask: richiedi all'utente tramite elicitazione MCP (consigliato)scopeMode=provided: usa direttamente il valore scopeOfWorkscopeMode=template: usa il modello generico integrato per test autorizzatiSe l'elicitazione viene rifiutata o non è disponibile, il report ripiega automaticamente sul modello.
Non esiste ancora un'API separata per il caricamento di file. Le opzioni attuali sono:
{
"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=...) con il contesto di invocazione.listEngagementRecords per recuperare rapidamente tutti gli artefatti di lavoro.recordIds selezionati (o di default dai record più recenti) invece di copia e incolla manuali.ask)provided)template)Queste funzionalità sono pianificate specificamente per ridurre il sovraccarico amministrativo dei pentest.
scopeFilePath (carica la SoW da un percorso file locale sull'host MCP)scopeDocument (invio del contenuto della SoW direttamente tramite MCP per i client remoti)recordId) ai finding e alle sezioni del reportnuclei, nikto, ecc.)Nota sull'adozione:
scopeFilePath e scopeDocument perché la maggior parte dei team mantiene già la SoW in documenti/PDF e vuole evitare passaggi ripetuti di copia e riformattazione.{
"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"]
}
}