PAS à des fins éducatives : Un serveur MCP pour les testeurs d'intrusion professionnels, incluant la prise en charge de STDIO/HTTP/SSE, nmap, go/dirbuster, nikto, JtR, hashcat, la création de wordlists, et plus encore.
Serveur MCP professionnel de tests d'intrusion avec prise en charge moderne des transports/authentification et outillage de reconnaissance étendu.
@modelcontextprotocol/sdk@^1.26.0@modelcontextprotocol/inspector@^0.20.0) avec lanceur intégréMCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask) avec repli sûr sur le modèlehttpx-toolkit (préférable) ou un httpx ProjectDiscovery validé, évitant les collisions avec l'interface CLI Python httpxpentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistlistEngagementRecordsgetEngagementRecordcreateClientReportcancelScannpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Vous pouvez transmettre directement les options d'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 : par défaut pour les clients MCP locaux.http : transport réseau moderne. Recommandé.sse : compatibilité uniquement. Déprécié et sera supprimé dans une future version majeure.pentest-mcp inspector lance l'interface CLI @modelcontextprotocol/inspector intégrée.node <this-package-entrypoint> stdioDéfinissez ces variables d'environnement lorsque vous utilisez MCP_TRANSPORT=http (ou sse si nécessaire) :
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=...
Les alias hérités sont encore acceptés temporairement :
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport prend désormais en charge les modes de gestion de la portée des travaux (SoW) :
scopeMode=ask : invite l'utilisateur via l'élicitation MCP (recommandé)scopeMode=provided : utilise directement la valeur scopeOfWorkscopeMode=template : utilise le modèle générique intégré de tests autorisésSi l'élicitation est refusée/indisponible, le rapport revient automatiquement au modèle.
Il n'existe pas encore d'API distincte de téléversement de fichiers. Les options actuelles sont :
{
"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=...) avec le contexte d'invocation.listEngagementRecords pour récupérer rapidement tous les artefacts de travail.recordIds sélectionnés (ou des enregistrements les plus récents par défaut) au lieu d'un copier-coller manuel.ask)provided)template)Ces éléments sont prévus spécifiquement pour réduire la charge administrative des tests d'intrusion.
scopeFilePath (chargement de la portée des travaux depuis un chemin de fichier local sur l'hôte MCP)scopeDocument (envoi du contenu de la portée des travaux directement via MCP pour les clients distants)recordId) aux constats et sections du rapportnuclei, nikto, etc.)Note d'adoption :
scopeFilePath et scopeDocument, car la plupart des équipes gèrent déjà la portée des travaux dans des documents/PDF et souhaitent éviter les étapes répétées de collage et de reformatage.{
"tool": "subfinderEnum",
"arguments": {
"domain": "example.com",
"recursive": true,
"allSources": true
}
}
{
"tool": "httpxProbe",
"arguments": {
"targets": ["example.com", "api.example.com"],
"includeTitle": true,
"includeStatusCode": true
}
}