Claude in Chrome: MCP tools return 'not connected' despite extension being installed and native host working

Resolved 💬 3 comments Opened Apr 2, 2026 by adambreen Closed Apr 5, 2026

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:

  • /chrome in 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 with disconnect, 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

  1. Install Claude in Chrome extension (1.0.66)
  2. Log into claude.ai in Chrome with the same account as CLI auth
  3. Run claude --chrome
  4. Run /chrome — shows Enabled/Installed
  5. Try any mcp__claude-in-chrome__* tool call (e.g., tabs_context_mcp)
  6. Observe "Browser extension is not connected" error
  7. 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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗