Nicht für Bildungszwecke: Ein MCP-Server für professionelle Penetrationstester mit STDIO/HTTP/SSE-Unterstützung, nmap, go/dirbuster, nikto, JtR, hashcat, Wörterlistenerstellung und mehr.
Professioneller MCP-Server für Penetrationstests mit moderner Transport-/Authentifizierungsunterstützung und erweiterten Recon-Werkzeugen.
@modelcontextprotocol/sdk@^1.26.0 aktualisiert@modelcontextprotocol/inspector@^0.20.0) mit gebündeltem LauncherMCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask) mit sicherem Template-Fallback hinzugefügthttpx-toolkit (bevorzugt) oder validiertes ProjectDiscovery-httpx verwendet und Kollisionen mit der Python-httpx-CLI vermieden werdenpentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistlistEngagementRecordsgetEngagementRecordcreateClientReportcancelScannpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Sie können Inspector-Flags direkt durchreichen:
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: Standard für lokale MCP-Clients.http: moderner Netzwerktransport. Empfohlen.sse: nur Kompatibilität. Veraltet und wird in einem zukünftigen Hauptrelease entfernt.pentest-mcp inspector startet die gebündelte @modelcontextprotocol/inspector-CLI.node <this-package-entrypoint> stdioSetzen Sie diese Umgebungsvariablen bei Verwendung von MCP_TRANSPORT=http (oder bei Bedarf sse):
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
# optionale alternative/Backup-Validierungsmethode:
MCP_OIDC_INTROSPECTION_URL=https://issuer.example.com/oauth/introspect
MCP_OAUTH_CLIENT_ID=...
MCP_OAUTH_CLIENT_SECRET=...
Legacy-Aliasse werden vorübergehend weiterhin akzeptiert:
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport unterstützt jetzt SoW-Verarbeitungsmodi:
scopeMode=ask: Benutzer per MCP-Elicitation auffordern (empfohlen)scopeMode=provided: den Wert scopeOfWork direkt verwendenscopeMode=template: eingebaute generische Vorlage für autorisierte Tests verwendenWenn die Elicitation abgelehnt/nicht verfügbar ist, fällt der Bericht automatisch auf die Vorlage zurück.
Es gibt noch keine separate Datei-Upload-API. Die aktuellen Optionen sind:
{
"tool": "createClientReport",
"arguments": {
"title": "Q1 External Pentest",
"assessmentType": "external-network",
"scopeMode": "ask"
}
}
scopeOfWork einfügen{
"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=...) mit Aufrufkontext.listEngagementRecords, um alle Arbeitsartefakte schnell abzurufen.recordIds (oder standardmäßig den neuesten Datensätzen) anstatt manuellem Kopieren/Einfügen.ask)provided)template)Diese Punkte sind geplant, um den Verwaltungsaufwand bei Pentests gezielt zu reduzieren.
scopeFilePath-Übernahme (SoW aus einem lokalen Dateipfad auf dem MCP-Host laden)scopeDocument-Upload in Blöcken (SoW-Inhalt direkt über MCP für entfernte Clients senden)recordId) mit Befunden und Berichtsabschnittennuclei, nikto, usw.)Adoptionshinweis:
scopeFilePath und scopeDocument wird eine starke Nutzung erwartet, da die meisten Teams SoW bereits in Dokumenten/PDFs pflegen und wiederholte Kopier- und Neuformatierungsschritte vermeiden möchten.{
"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"
}
}