Chrome Extension Bridges Google Messages to Claude Code via MCP

✍️ OpenClawRadar📅 Published: April 14, 2026🔗 Source
Chrome Extension Bridges Google Messages to Claude Code via MCP
Ad

Direct Integration Without Docker or Cloud Servers

A developer has created a Chrome extension that injects into Google Messages Web sessions and bridges them to Claude Code via Model Context Protocol (MCP). The architecture uses stdio transport between Claude Code and a Node.js MCP server, which communicates with the Chrome extension via WebSocket on localhost:7008.

What Works vs. Existing Solutions

The developer tried two existing approaches first:

  • OpenMessage: Docker container using libgm protocol with SSE sessions that expire after a few minutes of inactivity, causing "Invalid session ID" errors. It requires restarting the Docker container for new messages to sync and uses 7 MCP tools (~1,500 tokens per conversation).
  • TextBee: Android SMS gateway app that routes all private SMS messages through cloud servers (SMS only, no RCS). Requires webhook server plus Tailscale/ngrok tunnel, totaling five moving parts for basic texting.

The new Chrome extension approach has three working MCP tools with ~300 tokens overhead:

  • list_chats – Returns all conversations with names, snippets, and timestamps
  • read_messages – Provides full message history with sent/received direction
  • send_message – Fills in text but doesn't actually send (currently works as a draft tool)
Ad

The Angular Isolation Problem

Google Messages Web is an Angular app where Chrome extension content scripts run in an "isolated world" – a separate JavaScript context from the page. Angular's zone.js only patches event listeners in the main world, so when the extension sets the textarea value and clicks Send:

  • The text appears in the input ✓
  • The send button gets clicked ✓
  • Angular's form control doesn't detect the value change, so the click handler thinks the field is empty ✗

Attempted Solutions

The developer has tried multiple approaches:

  • Native value setter + input events
  • document.execCommand('insertText')
  • Full mouse event sequence (pointerdown/mousedown/mouseup/click)
  • Enter key simulation
  • Manifest V3 world: "MAIN" content script (gets closest but still doesn't send)

Debug output from the main world script shows: {"valueSet": true, "btnLabel": "Send end-to-end encrypted RCS message", "clicked": true, "inputAfter": "text still here...", "sentVia": "none"}

Potential Solutions to Explore

The developer is considering:

  • chrome.debugger API for trusted input events
  • Accessing Angular's NgZone via __ngContext__ on DOM elements
  • CDP (Chrome DevTools Protocol) for Input.dispatchKeyEvent

The project is open source with repository at https://github.com/GURSEWAKSINGHSANDHU/google-messages-mcp and issue tracking at https://github.com/GURSEWAKSINGHSANDHU/google-messages-mcp/issues/1.

📖 Read the full source: r/ClaudeAI

Ad

👀 See Also