Chrome Extension Bridges Google Messages to Claude Code via MCP

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 timestampsread_messages– Provides full message history with sent/received directionsend_message– Fills in text but doesn't actually send (currently works as a draft tool)
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.debuggerAPI 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
👀 See Also

Gemma Gem: On-Device AI Agent for Browser Automation via WebGPU
Gemma Gem is a Chrome extension that runs Google's Gemma 4 model (2B or 4B) entirely on-device using WebGPU, with no API keys or cloud dependencies. It provides tools to read page content, take screenshots, click elements, type text, scroll, and run JavaScript through a chat interface.

VidLens MCP Server: Persistent YouTube Knowledge Base for Claude
VidLens is a free, open-source MCP server that indexes YouTube content locally with semantic embeddings, treating videos as a persistent knowledge base rather than extracting temporary transcripts. It provides 41 tools across 10 modules for searching, analyzing, and retrieving video content.

VibeAround: Local Daemon Connects Coding Agents to Telegram and Discord
VibeAround is a local daemon that connects coding agents like Claude Code, Gemini CLI, and Codex to IM platforms including Telegram and Discord. The tool features session handover with pickup codes to continue conversations across devices.

Open Source Claude Code Tools for Automated Bug Bounty Hunting
Three open source repositories automate the bug bounty pipeline using Claude Code. The tools handle recon, scanning for web2/web3 vulnerabilities, and generate submission-ready reports.