Claude in Chrome: MCP bridge fails to connect despite correct native messaging setup
Bug Description
The Claude in Chrome MCP server fails to connect to the Chrome extension, despite the extension showing "Connected" in its popup and all native messaging host configuration being correct.
Environment
- Claude Code version: 2.1.47 (installed via Homebrew cask on macOS)
- OS: macOS Darwin 25.3.0 (Apple Silicon)
- Browser: Google Chrome (latest)
- Extension: Claude in Chrome (installed from Chrome Web Store)
Steps to Reproduce
- Install Claude in Chrome extension
- Run
/chromein Claude Code session (orclaude --chrome) - Extension popup shows "Connected"
- Any MCP tool call (e.g.
tabs_context_mcp) returns "Browser extension is not connected"
Debugging Details
Native messaging host config exists and is correct
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json:
{
"name": "com.anthropic.claude_code_browser_extension",
"description": "Claude Code Browser Extension Native Host",
"path": "/Users/<user>/.claude/chrome/chrome-native-host",
"type": "stdio",
"allowed_origins": [
"chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/"
]
}
Native host script exists and is executable
~/.claude/chrome/chrome-native-host:
#!/bin/sh
exec "/opt/homebrew/Caskroom/claude-code/2.1.47/claude" --chrome-native-host
Native host runs correctly when invoked manually
[Claude Chrome Native Host] Initializing...
[Claude Chrome Native Host] Creating socket listener: /tmp/claude-mcp-browser-bridge-<user>/<pid>.sock
[Claude Chrome Native Host] Socket server listening for connections
[Claude Chrome Native Host] Socket permissions set to 0600
No native host process running during Chrome session
ps aux | grep claude-in-chrome returns no results, suggesting Chrome is not launching the native host despite the extension showing "Connected".
Socket directory
/tmp/claude-mcp-browser-bridge-<user>/ only contains sockets from manual test runs, not from Chrome-initiated connections.
What was tried
- Restarting Chrome (full Cmd+Q quit and reopen) multiple times
- Running
/chromein Claude Code session - Running
claude --chrome - Using
switch_browserMCP tool - Cleaning up stale sockets
- Updating Claude Code to latest version
- Verifying extension is enabled and shows "Connected" in popup
- Verifying same account is used in both CLI and browser
Expected Behavior
MCP tools should successfully connect to the Chrome extension and return tab context.
Actual Behavior
All MCP tool calls return: "Browser extension is not connected."
The native host process is never spawned by Chrome, suggesting the native messaging handshake between Chrome and the extension isn't triggering the host.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗