Kali Factory MCP Server
Kali Factory Anleitung
Sicherere host-lokale Steuerungsebene für KI-Agenten, die Zugriff auf Kali Linux OSINT-Tools benötigen.
Dieses Paket spiegelt die Struktur der GPU Factory wider — typisierte Job-Übermittlung mit Bearer-Auth, Ausführung über eine Warteschlange (Worker) und Ausführung von Docker-Containern auf Basis einer Allowlist — jedoch angewendet auf ein anderes Problem: die Bereitstellung von Zugriff auf Kalis Aufklärungs- und Traffic-Analyse-Tools, ohne Agenten eine unauthentifizierte Shell zu geben.
FastAPI-Steuerungs-API
Redis-Warteschlange
RQ-Worker
Docker-first Container-Ausführung mit einem gehärteten Kali-Image
Typisierte Jobs (osint, traffic capture, JS analysis, leak hunting) statt roher Shell-Befehle
Bearer-Token-Authentifizierung
Lokaler MCP-Server für MCP-fähige Agenten
Optionaler ChromaDB-Sidecar zur Speicherung von Aufklärungsergebnissen über mehrere Durchläufe hinweg
Warum existiert dies?
Kali liefert Hunderte von Tools aus, von denen viele für legitime Wettbewerbsanalysen und Sicherheitsforschung nützlich sind, während andere für eine agentengesteuerte Automatisierung nicht geeignet sind. Der naive Ansatz — einen Agenten in eine Kali-Shell zu werfen und ihn machen zu lassen — führt zu drei Problemen:
Der Agent hat Zugriff auf jedes Tool, einschließlich Exploitation-Frameworks (
metasploit,sqlmap,hashcat,john,aircrack-ng,exploitdb), die aus einem Automatisierungskontext niemals erreichbar sein sollten.Tool-Aufrufe sind unstrukturierte Shell-Strings, was sowohl anfällig für Argument-Injection-Fehler ist als auch eine saubere Prüfung unmöglich macht.
Es gibt kein Ratenlimit, Zeitlimit oder Ausgabebudget für das, was der Agent tun kann — ein einziger fehlerhafter Agent kann ein Ziel überlasten oder die Festplatte füllen.
Dieses Paket löst alle drei Probleme, indem es Kali über eine API für typisierte Jobs bereitstellt, bei der jedes aufrufbare Tool in einem Manifest deklariert ist, jedes Argument durch Pydantic validiert wird, jeder Container-Start durch ein Image-Präfix auf einer Allowlist steht und jeder Aufruf ein Bearer-Token erfordert.
Zentrale Sicherheitseigenschaften
Kein
shell=TrueKein generischer Endpunkt zum "Ausführen beliebiger Befehle"
Jobs werden mit expliziten Schemata validiert
Container-Ausführung ist durch Image-Präfixe auf einer Allowlist beschränkt
Tool-Ausführung innerhalb des Containers ist durch den Binärnamen auf einer Allowlist beschränkt
API erfordert ein Bearer-Token
Worker und API sind separate Prozesse
Exploitation-/Credential-Cracking-/Wireless-Tools werden beim Image-Build explizit entfernt
Egress-Logging für jedes Tool, das auf das Netzwerk zugreift
Job-Typen
kali_probevalidiert, dass der Kali-Container erreichbar ist und die Tool-Allowlist intakt ist
osint_runführt ein typisiertes OSINT-Tool aus der Allowlist (amass, whatweb, gobuster, dnsenum, etc.) mit strukturierten Argumenten aus
traffic_captureführt
mitmdumpfür eine begrenzte Dauer aus und gibt eine Capture-Datei zurück
js_analysisführt
linkfinder/secretfinder/arjungegen eine JavaScript-URL aus
leak_scanführt
trufflehoggegen eine GitHub-Organisation / ein Repository auf committete Zugangsdaten aus
subdomain_enumführt
amass enum(nur passive Quellen) gegen eine Zieldomäne aus
web_fingerprintführt
whatwebaus, um den Tech-Stack eines Ziels zu identifizieren
nuclei_exposuresführt
nucleigegen ein Ziel aus, jedoch nur mit der Vorlagen-Untergruppeexposures/cves/,vulnerabilities/,default-logins/,fuzzing/Vorlagenverzeichnisse sind explizit blockiert
Schnellstart
Umgebungsvariablen kopieren:
cp .env.example .env
./scripts/bootstrap-secrets.shDas API-Token wird gespeichert in:
.secrets/api_tokenund .env verweist darauf über KALI_FACTORY_API_TOKEN_FILE.
Redis starten:
docker compose up -d redisKali-Runtime-Image bauen:
docker build -t kali-factory/recon:latest runtimes/kali/Python-Umgebung erstellen:
python3 -m venv .venv
source .venv/bin/activate
pip install -e .API ausführen:
./scripts/start-api.shWorker ausführen:
./scripts/start-worker.shMCP-Server ausführen:
./scripts/start-mcp.shBeispielanfragen
Gesundheitsstatus:
curl http://localhost:8081/healthKali-Probe:
curl -X POST http://localhost:8081/jobs \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"kali_probe"}'Subdomain-Enumeration:
curl -X POST http://localhost:8081/jobs \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type":"subdomain_enum",
"domain":"example.com",
"max_runtime_sec": 300
}'Web-Fingerprint:
curl -X POST http://localhost:8081/jobs \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type":"web_fingerprint",
"url":"https://example.com"
}'GitHub-Leak-Scan:
curl -X POST http://localhost:8081/jobs \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type":"leak_scan",
"github_org":"example-org"
}'Dateien
START_HERE_FOR_AGENTS.md— Einstiegsleitfaden für Agenten, die diese Steuerungsebene nutzenruntimes/kali/Dockerfile— Kali-Container-Image mit den installierten Allowlist-Toolsruntimes/kali/tools.json— deklaratives Tool-Manifest (Allowlist + Argument-Vorlagen)scripts/bootstrap-secrets.sh— API-Token-Datei erstellen und Berechtigungen setzenscripts/start-api.sh— Start-Wrapper für die APIscripts/start-worker.sh— Start-Wrapper für den Workerscripts/start-mcp.sh— Start-Wrapper für den lokalen MCP-Serverscripts/install-user-services.sh— Installation der systemd-Units auf Benutzerebenesrc/kali_factory/api/— API-Server (FastAPI)src/kali_factory/worker/— RQ-basierte Job-Ausführungsrc/kali_factory/models/— Pydantic-Job-Schematasrc/kali_factory/jobs/— Handler pro Job-Typsrc/kali_factory/policy/— Auth, Durchsetzung der Allowlist, Ratenbegrenzungsrc/kali_factory/mcp/server.py— stdio MCP-Adapter über die lokale Kali Factory APIcompose.yaml— Redis (und optional ChromaDB) SidecarsDockerfile— App-Container für API/Worker.env.example— erforderliche EinstellungenDEPLOYMENT.md— host-spezifische Ausführungs- und Service-Anleitung
Empfohlene weitere Härtung
API hinter Tailscale, Caddy oder ein anderes internes Gateway legen
API-Token rotieren
Audit-Logging in eine Datei oder SQLite hinzufügen
Explizite Job-Kontingente und Ratenbegrenzungen pro Tool hinzufügen
Allowlist pro Ziel hinzufügen (Agenten nur Domains scannen lassen, die Sie besitzen oder für die Sie eine Testgenehmigung haben)
Egress-Logging auf dem Kali-Container aktivieren, damit jede ausgehende Anfrage erfasst wird
Servicemodell
kali-factory-api.servicesollte dauerhaft laufenkali-factory-worker.servicesollte dauerhaft laufender MCP-Server sollte nicht als dauerhafter Dienst laufen
MCP-Clients sollten
scripts/start-mcp.shbei Bedarf über stdio starten
Beziehung zu anderen Factory-Paketen
Factory | Verteilt | Job-Beispiele |
GPU Factory | CUDA / GPU-Rechenleistung |
|
Kali Factory | OSINT / Aufklärungs-Tools |
|
Die beiden Pakete teilen sich die gleiche architektonische Form (FastAPI + Redis + RQ + Bearer-Auth + typisierte Jobs + Allowlist-Docker-Exec) und sind so konzipiert, dass sie auf demselben Host mit nicht überlappenden Ports koexistieren (8080 für GPU Factory, 8081 für Kali Factory).
Ein zukünftiger parallel-OS-Orchestrator kann Agentenanfragen an die Factory weiterleiten, die der benötigten Laufzeitumgebung entspricht.
Was Kali Factory nicht ist
Kein Schwachstellenscanner.
nucleiist enthalten, aber aufexposures/-Vorlagen beschränkt. CVE- / Exploit- / Default-Login- / Fuzzing-Vorlagen sind explizit blockiert.Kein Exploitation-Framework. Metasploit, sqlmap, hashcat, john, aircrack-ng, exploitdb, hydra, medusa, ncrack, nikto, wpscan, responder, impacket, crackmapexec werden beim Build-Zeitpunkt aus dem Runtime-Image entfernt.
Kein Tool für unautorisierte Tests. Nur gegen Ziele verwenden, die Sie besitzen oder für die Sie eine explizite Testgenehmigung haben. Die API protokolliert jeden Job; Missbrauch liegt in Ihrer Verantwortung.
Lizenz
Apache 2.0 (siehe LICENSE).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcmunoz-uno/Kali-Factory-Instructions'
If you have feedback or need assistance with the MCP directory API, please join our Discord server