
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)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistnpm 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
}
}
{
"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'image Docker installe :
nmap, john, hashcat, gobuster, nikto, ffuf, hydra, sqlmap, tcpdumpsubfinder, httpx + httpx-toolkit (alias), nucleiAssurez-vous que les binaires sont dans le PATH :
which nmap john hashcat gobuster nikto subfinder httpx-toolkit ffuf nuclei hydra sqlmap tcpdump
Si httpx-toolkit n'est pas installé, un binaire httpx ProjectDiscovery validé est accepté en remplacement.
Utilisation autorisée uniquement. Exécutez les tests uniquement sur des systèmes/réseaux pour lesquels vous disposez d'une autorisation écrite explicite.
Dernière mise à jour : 2026-03-23
Le Model Context Protocol (MCP) reste l'une des couches d'interopérabilité les plus utiles pour les outils et les agents. La contrepartie est que les grands serveurs MCP peuvent exposer de nombreux outils, et un appel d'outils naïf peut inonder les fenêtres de contexte avec des schémas, des bavardages d'outils et des traces d'appels non pertinentes.
En pratique, « plus d'outils » ne signifie pas toujours « de meilleurs résultats ». La surface d'exposition des outils doit être associée à des schémas d'exécution qui maintiennent une utilisation bornée des jetons et un comportement prévisible.
Les flux de travail récents déplacent de plus en plus l'orchestration complexe hors du contexte de discussion vers des boucles d'exécution de code. Cela réduit les jetons de schéma répétitifs et rend l'utilisation des outils auditable et testable.
Lectures essentielles :
Pour les utilisateurs qui souhaitent une utilisation MCP reproductible et moins bruyante, commencez par une configuration orientée mode code :
Avertissement pratique : même avec une configuration solide, le comportement du modèle peut encore être incohérent selon les fournisseurs et les versions. Conservez les nouvelles tentatives, les garde-fous et les replis déterministes en place.
Un schéma à fort effet de levier consiste à encapsuler les serveurs MCP dans des interfaces de code appelables et des CLI axées sur les tâches, plutôt que d'exposer chaque outil brut au modèle en permanence.
Outillage de référence :
Ce domaine évolue rapidement. Si vous lisez ceci maintenant, certaines parties de ces conseils peuvent déjà être obsolètes.
L'injection d'invite reste un problème de sécurité ouvert pour les agents utilisant des outils. Elle est gérable, mais pas « résolue ».
Risques principaux :
Conséquences :
Socle de mesures d'atténuation :
Traitez chaque sortie d'outil comme une entrée non fiable, sauf vérification explicite.
Ce serveur cible la version 2025-11-25 du protocole MCP et le SDK @modelcontextprotocol/sdk@^1.27.1.
listEngagementRecordsgetEngagementRecordcreateClientReportcancelScan| Fonctionnalité | Statut |
|---|
| Transport stdio | Pris en charge (par défaut) |
| Transport HTTP streamable | Pris en charge (MCP_TRANSPORT=http) |
| Transport SSE (hérité) | Mode de compatibilité déprécié |
| Annotations d'outils | Tous les outils annotés avec titre, readOnlyHint, destructiveHint, idempotentHint, openWorldHint |
| Authentification Bearer (OIDC/JWKS) | Pris en charge |
| Validation de l'origine (HTTP) | 403 sur origine invalide lorsque MCP_ALLOWED_ORIGINS est défini |
| JSON Schema 2020-12 | Schémas générés par Zod |
| Erreurs d'outils structurées | Indicateur isError avec messages descriptifs pour l'auto-correction du modèle |
| Élicitation | Utilisée pour la capture de la portée des travaux (SoW) dans la génération de rapports |