[claude-in-chrome] MCP server connects (20 tools) but every tool call returns "Browser extension is not connected"
Summary
The built-in claude-in-chrome MCP server reports ✔ connected · 20 tools in /mcp, but every tool call (e.g. mcp__claude-in-chrome__tabs_context_mcp) returns:
Browser extension is not connected. Please ensure the Claude browser extension is installed and running, and that you are logged into claude.ai with the same account as Claude Code.
All visible pieces of the chain are healthy. The failure happens in an internal handshake layer between the native host and the Chrome extension that does not emit log entries even with --debug enabled.
Environment
| Component | Value |
|---|---|
| OS | Windows 11 Home 10.0.26200 |
| Shell | PowerShell 5.1 |
| Claude Code | 2.1.139 |
| Claude for Chrome extension | v1.0.70 (fcoeoabgfenejglbffodgkkbkcdhcgfn) |
| Chrome profile | Default (Google account A), claude.ai logged in as account B |
| claude.ai account | same email as Claude Code — chat in the side panel works fine |
State at the time of failure
- Native host process running:
claude.exe --chrome-native-host - Named pipe present:
\\.\pipe\claude-mcp-browser-bridge-<user> - Native messaging manifest at
%APPDATA%\Claude Code\ChromeNativeHost\com.anthropic.claude_code_browser_extension.jsonwith correctpath,type: "stdio", andallowed_originsmatching the extension ID - Registry key
HKCU:\Software\Google\Chrome\NativeMessagingHosts\com.anthropic.claude_code_browser_extensionpoints to the manifest - Only one Claude Code session running; Claude Desktop closed
- Extension permissions: "On all sites"
- claude.ai/settings/account confirms the same account as Claude Code; chat through the extension's side panel works normally
Steps that did NOT fix it
- Killed orphan native-host processes
- Cleared the named pipe (it gets recreated on next MCP call, then silently drops)
- Disable/enable extension toggle in
chrome://extensions/ - Full Chrome close (verified 0 Chrome processes) and reopen
- Multiple
/mcp reconnectruns (always reportsReconnected to claude-in-chrome.) - Logout / login on claude.ai
- Uninstall + reinstall the extension from the Chrome Web Store (extension ID came back the same, so the existing native messaging manifest remained valid)
- Disabled an unrelated extension (Cookie Guardian) that was clearing claude.ai cookies on tab close
Debug-log observations
Running a non-interactive sub-session with claude -p --debug-file <path> --debug "..." captures startup logs. The logs show MCP servers from .claude.json (playwright, claude.ai Google Drive) starting up, but the built-in claude-in-chrome server never appears in any "Starting connection" or "Connection established" log line, suggesting its initialization path is embedded and emits nothing under --debug.
No log entries match any of: chrome, native, extension, bridge, browser, pipe, disconnect around the failing call.
Extension service worker
chrome://extensions/?id=fcoeoabgfenejglbffodgkkbkcdhcgfn → Inspect service worker → Console shows no errors related to native messaging. The error log lists only:
- CSP inline-script violations from the sidepanel HTML (apparently intentional)
- Datadog Browser SDK loaded twice
- Segment/Amplitude script blocked by CSP
Unchecked runtime.lastError: Debugger is not attached to the tab with id: <id>.
The asset list includes a PairingPrompt-*.js, suggesting a pairing UI exists, but it never surfaces — the side panel only shows the normal chat.
Expected behavior
mcp__claude-in-chrome__tabs_context_mcp returns tab info instead of the "not connected" error.
Workaround
None found.
Suggestions for the team
- Either expose what
claude-in-chrome's "is extension connected" check actually verifies, or emit a[DEBUG]log line when the check fails with the specific reason (no extension hello received, account mismatch, pipe write timed out, etc.). - If pairing requires a UI confirmation (
PairingPrompt-*.js), surface a way to retrigger it when state is stuck.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗