[Cline-MCP] homelab_docs-Tool gebaut – Hänger beim Streamen von Secrets (Windows ssh.exe) #101
Labels
No labels
flugscanner
fuenfvoracht
infrastruktur
jarvis
ki-tower
nice-to-have
prio-1
wartung
wordpress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: orbitalo/homelab-brain#101
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kontext
Im Rahmen von #97 (Cline als Cursor-Ersatz) wurde beschlossen: CT 999 muss primärer Anlaufpunkt für Homelab-Wissen sein (statt raten). Dafür wurde ein
homelab_docs-MCP-Tool gebaut, das die CT-999-Doku (/root/docs) durchsucht/liest – damit Cline/DeepSeek erst nachschlägt statt zu halluzinieren.Was fertig ist
C:\dev\homelab\homelab_docs_mcp\server.pysearch_docs(query),read_doc(path),list_docs(subdir)root@100.88.230.59) →pct exec 999→/root/docs(Markdown)subprocessmit Arg-Listen,shlex.quote, Pfad-Traversal-Schutz (kein..),ssh -n+stdin=DEVNULL--include=*.md/-name '*.md'mehr durch die Remote-Shell (Quoting überlebt Windows-ssh nicht) →.md-Filter jetzt clientseitig in Pythoncline_mcp_settings.jsonregistriert (wegen offenem Blocker unten)Funktioniert
read_docauf normale Dateien: schnell (z. B.index.md, 26 KB → 1,2s)BLOCKER
Jeder Befehl, der Inhalt aus
credentials.mdüber Windows-ssh.exe+ Python-subprocesszurückstreamt, hängt 30s im Timeout – egal obcat,head -1,grep(mit Treffer) oderbase64.Eingrenzung (alle Tests vom KI-Server-Python aus)
cat index.md(kein Secret)grep xyznomatch credentials.md(liest, kein Output)cat credentials.mdhead -1 credentials.md(nur Titelzeile)base64 credentials.mdzzz_tmp.md)Ausgeschlossen
ssh -n+stdin=DEVNULLändern nichts)Beste Hypothese
Ein Windows-seitiger Content-Scanner (Defender / DLP / Endpoint-Security) auf dem KI-Server hängt sich in die
ssh.exe-Pipe ein, sobald durchfließende Daten wie Passwörter/API-Keys aussehen. Reines Lesen ohne Output und Nicht-Secret-Dateien passieren ungestört. Erklärt auch, warumsearch_docs('openrouter')hängt (Treffer stammt auscredentials.md).Nächste Schritte
cat credentials.mdvom KI-Python erneut → wenn dann schnell, ist die Ursache bestätigt.credentials.mdserverseitig maskieren (nur Zeilennr. + Key-Name, Wert***).homelab_docsincline_mcp_settings.jsonregistrieren und in.clinerulesverankern: „bei Pfaden/Configs/Zugangsdaten IMMER zuerst homelab_docs fragen".Betroffene Systeme
KI-Server (Windows, Cline), pve-hetzner, CT 999 (cluster-docu)
Gelöst ✅
Blocker analysiert und behoben, end-to-end über den echten MCP-Weg verifiziert.
Zwei unabhängige Root Causes
ssh.exe-stdout-Pipe und blockiert secret-artigen Inhalt am Stream-Ende. Beweis:cat credentials.md→ ~7680/7687 Bytes kommen an, dann kein EOF (30s Timeout); Umleitung in eine Datei statt Pipe → 1,2s. Nicht der Dateiname, sondern der Inhalt (neutraler-Name-Kopie hängt, credential-Name-mit-harmlosem-Inhalt läuft). Auch secret-dichte greps (openrouter) betroffen. Einziges AV: Windows Defender (RealTimeProtection/NIS/BehaviorMonitor).ssh.exestartet gar nicht aus dem MCP-stdio-Subprozess (rc 255, null Output, auch mit-vvv/full-path/CREATE_NO_WINDOW/cmd), währendcmd /c verim selben Kontext funktioniert → fehlende Console-/Terminal-Handles. Zusätzlich nutzte Cline einpythonohne die nötigen Pakete.Finale Lösung
ssh.exe-Pipe → beide Root Causes erledigt (kein Console-Problem, keine Defender-Pipe-Inspektion). Damit ist auch der frühere 20%-Rest (search auf secret-dichte Begriffe) weg.C:\Users\wutti\.ssh\id_ed25519→root@100.88.230.59→pct exec 999 -- ...cline_mcp_settings.jsonregistriert mit vollem Python-Pfad (...Python310\python.exe) undalwaysAllowfürsearch_docs/read_doc/list_docs..clinerulesverankert (REGEL 1b): bei Pfaden/Configs/Zugangsdaten zuersthomelab_docsfragen statt zu raten;credentials.mdnicht per direktem SSH catten.Verifikation (echter MCP-stdio-Weg, wie Cline)
list_docs()→ 79 Doku-Dateien, 1,2sread_doc('credentials.md')→ 7677 Zeichen, 1,1s (Ur-Blocker)read_doc('container/ct-116-…')→ 36343 Zeichen, 1,2ssearch_docs('openrouter')→ 4330 Zeichen, 1,1s (vorher 30s-Hänger)Cline schlägt jetzt zuverlässig in CT 999 nach statt zu halluzinieren.
Betroffene Systeme
KI-Server (Windows, Cline), pve-hetzner, CT 999 (cluster-docu)