Claude in Chrome: MCP tools return 'not connected' despite extension being installed and native host working
Environment
- OS: macOS (Darwin 25.3.0, Apple Silicon)
- Claude Code: 2.1.90 (CLI, launched with
--chrome) - Chrome extension: Claude in Chrome 1.0.66
- Chrome: latest stable
- Auth: claude.ai (
adam@adambreen.com), Max subscription - Chrome profile: Work profile (not default, but same account)
Symptoms
All mcp__claude-in-chrome__* tool calls return:
"Browser extension is not connected. Please ensure the Claude browser extension is installed and running..."
However:
/chromein Claude Code shows Status: Enabled, Extension: Installed- The extension is active in Chrome (service worker running, no console errors)
- The native messaging host config file exists and is correct
- The native messaging host binary runs successfully
What works
chrome.runtime.connectNative('com.anthropic.claude_code_browser_extension')called manually from the extension's service worker console succeeds — returns a valid Port object withdisconnect,postMessage,onMessage,sender- The native host binary (
~/.claude/chrome/chrome-native-host) starts correctly, creates a socket at/tmp/claude-mcp-browser-bridge-adambreen/{PID}.sock
What doesn't work
The MCP bridge in Claude Code never successfully connects to the extension. The socket files exist in /tmp/claude-mcp-browser-bridge-adambreen/ but the MCP tool calls fail with "not connected."
Diagnostic details
Native messaging host config (~/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/adambreen/.claude/chrome/chrome-native-host",
"type": "stdio",
"allowed_origins": [
"chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/"
]
}
Native host script (~/.claude/chrome/chrome-native-host):
#!/bin/sh
exec "/Users/adambreen/.local/share/claude/versions/2.1.90" --chrome-native-host
Socket directory:
/tmp/claude-mcp-browser-bridge-adambreen/
58532.sock (stale, from earlier session)
71863.sock (stale, from earlier session)
Neither socket PID matches the running Claude Code session.
Steps to reproduce
- Install Claude in Chrome extension (1.0.66)
- Log into claude.ai in Chrome with the same account as CLI auth
- Run
claude --chrome - Run
/chrome— shows Enabled/Installed - Try any
mcp__claude-in-chrome__*tool call (e.g.,tabs_context_mcp) - Observe "Browser extension is not connected" error
- Manually run
chrome.runtime.connectNative('com.anthropic.claude_code_browser_extension')in the extension's service worker console — this succeeds
Expected behavior
The MCP bridge should connect to the Chrome extension automatically when Claude Code starts with --chrome and the extension is installed.
Possible cause
The extension's service worker doesn't appear to initiate the native messaging connection automatically. The connection only succeeds when triggered manually from the console. The MCP bridge on the Claude Code side may be waiting for the extension to connect, while the extension is waiting for something else to trigger the connectNative call.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗