Troubleshooting
Zuerst werden Prozessstatus und strukturierte Logs auf beiden Seiten geprüft:
curl --fail http://127.0.0.1:9334/health/live
curl --fail http://127.0.0.1:9334/health/ready
private-proxy-mcp version
live beweist nur einen laufenden MCP-Prozess. Readiness 503 mit
not_ready bedeutet, dass kein verwendbarer privater Proxy verbunden ist.
Zum Diagnostizieren temporär log.level: debug verwenden, ohne Payloads oder
Secrets in zusätzliche Logs aufzunehmen.
Connector-Authentisierung
Symptome: wiederholter Reconnect, serverseitig error_code=auth_error, HTTP
401 am /connector, Readiness bleibt 503.
- Prüfen, dass
private_proxy.shared_keyauf beiden Hosts aus derselben Secret-Version geladen und danach beide Prozesse neu gestartet wurden. - Auf unsichtbaren Whitespace oder eine mitkopierte Zeilenumbruchssequenz im Secret Store prüfen, ohne den Wert auszugeben.
- Sicherstellen, dass die URL exakt
/connectorund einen expliziten Port enthält. - TLS-Fehler separat beheben;
insecure_skip_verifynicht als Auth-Fix verwenden.
Nach einer Rotation wird zuerst der Server und danach der private Proxy mit dem neuen Key gestartet.
TLS und Upgrade
Symptome: TLS handshake with connector, Zertifikatsfehler, HTTP 426/505 oder
invalid upgrade response.
- CA-Datei, Zertifikatskette, Gültigkeitszeit und
tls_server_namemit dem URL-Host abgleichen. - Der Edge-Proxy muss HTTP/1.1,
Connection: Upgrade,Upgradeund diePrivate-Proxy-MCP-*-Header durchreichen. HTTP/2/3 am Connector-Upstream deaktivieren. - Response-Buffering, kurze Proxy-Timeouts und Body-Injektion für Status 101 deaktivieren.
- Port 9335 vom privaten Host aus erreichbar machen; Port 9334 ist dafür irrelevant.
Reconnect-Schleifen
connector unavailable; retrying vor einem erfolgreichen Upgrade nutzt
exponentiellen Backoff zwischen backoff_initial und backoff_max mit Jitter.
connector session ended; reconnecting nach einer etablierten Session nutzt
reconnect_delay.
- DNS, Firewall, Listener und Edge-Proxy prüfen.
goaway(replaced)zeigt eine zweite Proxy-Instanz mit demselben Connector; nur die neueste Verbindung bleibt aktiv.pong timeoutweist auf einen toten Stream oder zu kurze Zwischenproxy- Idle-Timeouts hin. Diese müssen deutlich größer als Ping- plus Pong-Zeit sein.- Backoff nicht auf nahezu null reduzieren; die Ursache beheben, um Lastspitzen zu vermeiden.
Request-Timeouts und Abbrüche
deadline_exceeded kann vom MCP-Aufruf, der lokalen
http.request_timeout-Grenze, Browser/Media-Limits oder der absoluten
Tunneldeadline stammen. Der wirksame Wert ist jeweils das kleinste Limit und
niemals mehr als die Tunnel-Deadline (Wire 1.1: 30m, Legacy: 120s).
Bei langen Downloads hält bidirektionales Ping den Tunnel am Leben; der Proxy
sendet zusätzlich progress-Frames.
- DNS- und Connect-Latenz vom privaten Host zum Ziel messen.
dns_timeout,runtime.connect_timeoutundrequest_timeoutnur gezielt erhöhen; die Tunnelobergrenze bleibt bestehen.- Clientabbruch erzeugt
cancelled; das ist kein Reconnect-Problem. - HTTP 4xx/5xx sind normale Antworten und nicht mit Transport-Timeouts zu verwechseln.
Truncation und Größenlimits
truncated: true bedeutet, dass ein gültiger HTTP-Responsebody am
response_body_limit, decompressed_body_limit oder am maximalen Tunnel-
Frame abgeschnitten wurde. response_too_large bedeutet, dass selbst keine
sichere begrenzte Frame-Antwort erzeugt werden konnte. Die Metrik-/Eventklasse
lautet truncation.
- Zielabfrage enger formulieren oder einen kleineren Upstream-Response anfordern.
- Limits nur zusammen mit Speicher-, Frame- und MCP-Client-Grenzen erhöhen.
- Komprimierte Antworten nach dekomprimierter Größe beurteilen.
- Große Media-/Screenshot-Ausgaben über die vorgesehenen kurzlebigen Artefakt-Links und Chunk-Reads beziehen.
Fehlender Proxy oder fehlende Tools
Symptome: Readiness 503, private proxy is unavailable, oder Media-/Browser-
Tools fehlen in tools/list.
- Beide Prozesse müssen laufen und die Connector-Session muss authentisiert sein.
- Media-Tools erscheinen nur, wenn der Private Proxy
media capability availableloggt und die Capabilities im Connector-Upgrade mitgibt. Der MCP-Server führt yt-dlp nicht selbst aus. - Auto-Discovery:
yt-dlpmuss imPATHdes Proxy-Prozesses liegen oder übermedia.yt_dlp_patherreichbar sein.media.enabled: falseschaltet Media hart aus. Ein optionaleryt_dlp_version-Pin muss zur Binary passen. - Transcripts: Default-Kette
ytdlp→innertube. Beisubtitles_missing/upstream_errorgreift InnerTube;translation_languagebraucht InnerTube. yt-dlp-CDN bleibt Host-Egress; InnerTube unterliegthttp.network_policy. - Bei
media capability unavailableden Log-Hinweis undyt_dlp_pathprüfen; absoluten Pfad setzen, wenn die Binary nicht imPATHsteht. browser.enabled, Host-Allowlisten und Limits auf dem privaten Proxy prüfen. Eine nicht verfügbare Capability wird geloggt und nicht angekündigt.- Browser:
executable_path/executable_versiongegen--versionprüfen. Beibackend: playwrightzusätzlichplaywright_node_pathundplaywright_sidecar_path. Details und OS-Setup: Browser-Tools. - Auf dem mcp-server ist bei aktivem Media
artifact_base_urlals HTTPS-URL erforderlich. - Nach Wiederherstellung eine neue
tools/list-Abfrage ausführen; die Capability-Liste ist dynamisch.