Claude in Chrome MCP Fehlerbehebung
Verwenden Sie dieses Skill, wenn die Claude in Chrome MCP-Tools keine Verbindung herstellen können oder unzuverlässig arbeiten.
Wann verwenden
mcp__claude-in-chrome__*Tools schlagen mit "Browser extension is not connected" fehl- Browser-Automatisierung arbeitet unberechenbar oder bricht mit Timeout ab
- Nach dem Aktualisieren von Claude Code oder Claude.app
- Beim Wechsel zwischen Claude Code CLI und Claude.app (Cowork)
- Der native Host-Prozess läuft, aber MCP-Tools schlagen immer noch fehl
Wann NICHT verwenden
- Linux- oder Windows-Benutzer - Dieses Skill behandelt macOS-spezifische Pfade und Tools (
~/Library/Application Support/,osascript) - Allgemeine Chrome-Automatisierungsprobleme, die nicht mit der Claude-Erweiterung zusammenhängen
- Probleme mit der Claude.app-Desktop-App (nicht browserbezogen)
- Netzwerkverbindungsprobleme
- Probleme bei der Installation der Chrome-Erweiterung (Support des Chrome Web Store nutzen)
Der Claude.app vs. Claude Code Konflikt (Hauptproblem)
Hintergrund: Als Claude.app Cowork-Unterstützung hinzufügte (Browser-Automatisierung von der Desktop-App aus), wurde ein konkurrierender nativer Messaging-Host eingeführt, der mit dem Claude Code CLI in Konflikt gerät.
Zwei native Hosts, zwei Socket-Formate
| Komponente | Nativer Host-Binary | Socket-Speicherort |
|---|---|---|
| Claude.app (Cowork) | /Applications/Claude.app/Contents/Helpers/chrome-native-host | /tmp/claude-mcp-browser-bridge-$USER/<PID>.sock |
| Claude Code CLI | ~/.local/share/claude/versions/<version> --chrome-native-host | $TMPDIR/claude-mcp-browser-bridge-$USER (einzelne Datei) |
Warum sie sich widersprechen
-
Beide registrieren native Messaging-Konfigurationen in Chrome:
com.anthropic.claude_browser_extension.json→ Claude.app-Helfercom.anthropic.claude_code_browser_extension.json→ Claude Code-Wrapper
-
Die Chrome-Erweiterung fordert einen nativen Host namentlich an
-
Wenn die falsche Konfiguration aktiv ist, wird das falsche Binary ausgeführt
-
Das falsche Binary erstellt Sockets in einem Format/Speicherort, den der MCP-Client nicht erwartet
-
Ergebnis: "Browser extension is not connected", obwohl alles zu laufen scheint
Die Lösung: Deaktivieren Sie den nativen Host von Claude.app
Wenn Sie Claude Code CLI für die Browser-Automatisierung verwenden (nicht Cowork):
# Deaktivieren Sie die native Messaging-Konfiguration von Claude.app
mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json \
~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json.disabled
# Stellen Sie sicher, dass die Claude Code-Konfiguration existiert und auf den Wrapper zeigt
cat ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json
Wenn Sie Cowork (Claude.app) für die Browser-Automatisierung verwenden:
# Deaktivieren Sie die native Messaging-Konfiguration von Claude Code
mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json \
~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json.disabled
Sie können nicht beide gleichzeitig verwenden. Wählen Sie eines aus und deaktivieren Sie das andere.
Umschalt-Skript
Fügen Sie dies zu ~/.zshrc hinzu oder führen Sie es direkt aus:
chrome-mcp-toggle() {
local CONFIG_DIR=~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts
local CLAUDE_APP="$CONFIG_DIR/com.anthropic.claude_browser_extension.json"
local CLAUDE_CODE="$CONFIG_DIR/com.anthropic.claude_code_browser_extension.json"
if [[ -f "$CLAUDE_APP" && ! -f "$CLAUDE_APP.disabled" ]]; then
# Verwendet derzeit Claude.app, wechsle zu Claude Code
mv "$CLAUDE_APP" "$CLAUDE_APP.disabled"
[[ -f "$CLAUDE_CODE.disabled" ]] && mv "$CLAUDE_CODE.disabled" "$CLAUDE_CODE"
echo "Wechsel zu Claude Code CLI"
echo "Starten Sie Chrome und Claude Code neu, um die Änderung zu übernehmen"
elif [[ -f "$CLAUDE_CODE" && ! -f "$CLAUDE_CODE.disabled" ]]; then
# Verwendet derzeit Claude Code, wechsle zu Claude.app
mv "$CLAUDE_CODE" "$CLAUDE_CODE.disabled"
[[ -f "$CLAUDE_APP.disabled" ]] && mv "$CLAUDE_APP.disabled" "$CLAUDE_APP"
echo "Wechsel zu Claude.app (Cowork)"
echo "Starten Sie Chrome neu, um die Änderung zu übernehmen"
else
echo "Aktueller Zustand unklar. Überprüfen Sie die Konfigurationen:"
ls -la "$CONFIG_DIR"/com.anthropic*.json* 2>/dev/null
fi
}
Verwendung: chrome-mcp-toggle ausführen, dann Chrome neu starten (und Claude Code, wenn zum CLI gewechselt wird).
Schnelldiagnose
# 1. Welcher native Host-Binary läuft?
ps aux | grep chrome-native-host | grep -v grep
# Claude.app: /Applications/Claude.app/Contents/Helpers/chrome-native-host
# Claude Code: ~/.local/share/claude/versions/X.X.X --chrome-native-host
# 2. Wo befindet sich der Socket?
# Für Claude Code (einzelne Datei in TMPDIR):
ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER" 2>&1
# Für Claude.app (Verzeichnis mit PID-Dateien):
ls -la /tmp/claude-mcp-browser-bridge-$USER/ 2>&1
# 3. Mit welchem nativen Host ist verbunden?
lsof -U 2>&1 | grep claude-mcp-browser-bridge
# 4. Welche Konfigurationen sind aktiv?
ls ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic*.json
Kritische Erkenntnis
MCP verbindet sich beim Start. Wenn die Browser-Brücke beim Start von Claude Code noch nicht bereit war, schlägt die Verbindung für die gesamte Sitzung fehl. Die Lösung ist normalerweise: Stellen Sie sicher, dass Chrome + Erweiterung mit der richtigen Konfiguration läuft, und starten Sie DANN Claude Code neu.
Vollständige Reset-Prozedur (Claude Code CLI)
# 1. Stellen Sie sicher, dass die richtige Konfiguration aktiv ist
mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json \
~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json.disabled 2>/dev/null
# 2. Aktualisieren Sie den Wrapper, um die neueste Claude Code-Version zu verwenden
cat > ~/.claude/chrome/chrome-native-host << 'EOF'
#!/bin/bash
LATEST=$(ls -t ~/.local/share/claude/versions/ 2>/dev/null | head -1)
exec "$HOME/.local/share/claude/versions/$LATEST" --chrome-native-host
EOF
chmod +x ~/.claude/chrome/chrome-native-host
# 3. Beenden Sie den vorhandenen nativen Host und bereinigen Sie Sockets
pkill -f chrome-native-host
rm -rf /tmp/claude-mcp-browser-bridge-$USER/
rm -f "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER"
# 4. Starten Sie Chrome neu
osascript -e 'quit app "Google Chrome"' && sleep 2 && open -a "Google Chrome"
# 5. Warten Sie auf Chrome, klicken Sie auf das Claude-Erweiterungssymbol
# 6. Überprüfen Sie, ob der richtige native Host läuft
ps aux | grep chrome-native-host | grep -v grep
# Sollte anzeigen: ~/.local/share/claude/versions/X.X.X --chrome-native-host
# 7. Überprüfen Sie, ob der Socket existiert
ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER"
# 8. Starten Sie Claude Code neu
Andere häufige Ursachen
Mehrere Chrome-Profile
Wenn Sie die Claude-Erweiterung in mehreren Chrome-Profilen installiert haben, erzeugt jedes seinen eigenen nativen Host und Socket. Dies kann zu Verwirrung führen.
Lösung: Aktivieren Sie die Claude-Erweiterung nur in EINEM Chrome-Profil.
Mehrere Claude Code-Sitzungen
Das gleichzeitige Ausführen mehrerer Claude Code-Instanzen kann Socket-Konflikte verursachen.
Lösung: Führen Sie immer nur eine Claude Code-Sitzung gleichzeitig aus, oder verwenden Sie /mcp, um die Verbindung nach dem Schließen anderer Sitzungen wiederherzustellen.
Hartcodierte Version im Wrapper
Der Wrapper unter ~/.claude/chrome/chrome-native-host kann eine hartcodierte Version enthalten, die nach Updates veraltet.
Diagnose:
cat ~/.claude/chrome/chrome-native-host
# Schlecht: exec "/Users/.../.local/share/claude/versions/2.0.76" --chrome-native-host
# Gut: Verwendet $(ls -t ...) um die neueste zu finden
Lösung: Verwenden Sie den dynamischen Version-Wrapper, der in der vollständigen Reset-Prozedur oben gezeigt wird.
TMPDIR nicht gesetzt
Claude Code erwartet, dass TMPDIR gesetzt ist, um den Socket zu finden.
# Überprüfen
echo $TMPDIR
# Sollte anzeigen: /var/folders/XX/.../T/
# Lösung: Fügen Sie zu ~/.zshrc hinzu
export TMPDIR="${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}"
Tiefgehende Diagnose
echo "=== Nativer Host-Binary ==="
ps aux | grep chrome-native-host | grep -v grep
echo -e "\n=== Socket (Claude Code-Speicherort) ==="
ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER" 2>&1
echo -e "\n=== Socket (Claude.app-Speicherort) ==="
ls -la /tmp/claude-mcp-browser-bridge-$USER/ 2>&1
echo -e "\n=== Geöffnete Dateien des nativen Hosts ==="
pgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>/dev/null | grep -E "(sock|claude-mcp)"
echo -e "\n=== Aktive native Messaging-Konfigurationen ==="
ls ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic*.json 2>/dev/null
echo -e "\n=== Inhalt des benutzerdefinierten Wrappers ==="
cat ~/.claude/chrome/chrome-native-host 2>/dev/null || echo "Kein benutzerdefinierter Wrapper"
echo -e "\n=== TMPDIR ==="
echo "TMPDIR=$TMPDIR"
echo "Erwartet: $(getconf DARWIN_USER_TEMP_DIR)"
Dateireferenz
| Datei | Zweck |
|---|---|
~/.claude/chrome/chrome-native-host | Benutzerdefiniertes Wrapper-Skript für Claude Code |
/Applications/Claude.app/Contents/Helpers/chrome-native-host | Nativer Host von Claude.app (Cowork) |
~/.local/share/claude/versions/<version> | Claude Code-Binary (ausgeführt mit --chrome-native-host) |
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json | Konfiguration für den nativen Host von Claude.app |
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json | Konfiguration für den nativen Host von Claude Code |
$TMPDIR/claude-mcp-browser-bridge-$USER | Socket-Datei (Claude Code) |
/tmp/claude-mcp-browser-bridge-$USER/<PID>.sock | Socket-Dateien (Claude.app) |
Zusammenfassung
- Hauptproblem: Claude.app (Cowork) und Claude Code verwenden unterschiedliche native Hosts mit inkompatiblen Socket-Formaten
- Lösung: Deaktivieren Sie die native Messaging-Konfiguration für das Tool, das Sie NICHT verwenden
- Nach jeder Lösung: Sowohl Chrome als auch Claude Code müssen neu gestartet werden (MCP verbindet sich beim Start)
- Ein Profil: Installieren Sie die Claude-Erweiterung nur in einem Chrome-Profil
- Eine Sitzung: Führen Sie immer nur eine Claude Code-Instanz aus
Original-Skill von @jeffzwang von @ExaAILabs. Verbessert und aktualisiert für die aktuellen Versionen von Claude Desktop und Claude Code.