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, , , , , , , httpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweeplistEngagementRecords, 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"]
}
}
{
"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
L'immagine Docker installa:
nmap, john, hashcat, gobuster, nikto, ffuf, hydra, sqlmap, tcpdumpsubfinder, httpx + alias httpx-toolkit, nucleiAssicurati che i binari siano nel PATH:
which nmap john hashcat gobuster nikto subfinder httpx-toolkit ffuf nuclei hydra sqlmap tcpdump
Se httpx-toolkit non è installato, viene accettato come fallback un binario ProjectDiscovery httpx validato.
Solo uso autorizzato. Esegui solo su sistemi/rete per cui disponi di un esplicito permesso scritto.
Ultimo aggiornamento: 2026-03-23
Il Model Context Protocol (MCP) è ancora uno dei layer di interoperabilità più utili per strumenti e agenti. Il compromesso è che i grandi server MCP possono esporre molti strumenti, e le chiamate naive agli strumenti possono inondare le finestre di contesto con schemi, chiacchiere degli strumenti e tracce di chiamate irrilevanti.
Nella pratica, "più strumenti" non è sempre "risultati migliori". La superficie degli strumenti deve essere abbinata a pattern di esecuzione che mantengano limitato l'uso dei token e prevedibile il comportamento.
I flussi di lavoro recenti spostano sempre più l'orchestrazione complessa fuori dal contesto della chat e dentro cicli di esecuzione del codice. Questo riduce i token di schema ripetitivi e rende l'uso degli strumenti verificabile e testabile.
Letture principali:
Per gli utenti che desiderano un uso di MCP riproducibile e a basso rumore, inizia con una configurazione orientata al codemode:
Avvertenza pratica: anche con una configurazione solida, il comportamento del modello può ancora essere incoerente tra provider e versioni. Mantieni retry, guardrail e fallback deterministici.
Un pattern ad alta leva è avvolgere i server MCP in interfacce di codice richiamabili e CLI focalizzate sulle attività, invece di esporre ogni strumento grezzo al modello in ogni momento.
Strumentazione di riferimento:
Questo ambito cambia rapidamente. Se stai leggendo questo ora, parti di queste indicazioni potrebbero essere già obsolete.
La prompt injection rimane un problema di sicurezza aperto per gli agenti che usano strumenti. È gestibile, ma non "risolta".
Rischi principali:
Conseguenze:
Baseline di mitigazione:
Tratta ogni output degli strumenti come input non fidato, a meno che non sia esplicitamente verificato.
Questo server punta alla versione 2025-11-25 del protocollo MCP e all'SDK @modelcontextprotocol/sdk@^1.27.1.
| Funzionalità | Stato |
|---|---|
| Trasporto stdio | Supportato (predefinito) |
| Trasporto Streamable HTTP | Supportato (MCP_TRANSPORT=http) |
| Trasporto SSE (legacy) | Modalità di compatibilità deprecata |
| Annotazioni degli strumenti | Tutti gli strumenti annotati con title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint |
| Autenticazione Bearer (OIDC/JWKS) | Supportata |
| Validazione Origin (HTTP) | 403 su Origin non valido quando MCP_ALLOWED_ORIGINS è impostato |
| JSON Schema 2020-12 | Schemi generati con Zod |
| Errori strutturati degli strumenti | Flag isError con messaggi descrittivi per l'auto-correzione del modello |
| Elicitazione | Usata per l'acquisizione della SoW nella generazione dei report |