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

TextForge: A Claude Code-built email approval tool for LLM workflows
A developer built TextForge using Claude Code to automate email workflows with mandatory approval gates, preventing LLMs from sending emails without explicit permission. The tool integrates with Pipedrive CRM and required Google CASA2 security audit compliance.

OpenPlawd: OpenClaw Skill for Automated Plaud Meeting Notes
OpenPlawd is an OpenClaw skill that automatically processes Plaud recordings into structured HTML meeting notes. It polls Plaud accounts hourly, transcribes with Whisper or OpenAI, chunks large files, and generates notes with action items via an OpenClaw agent.

Session Inspector for Claude Code provides real-time visibility into AI agent operations
Vibeyard, an open-source terminal IDE that wraps Claude Code, has added a Session Inspector feature that provides real-time visibility into Claude Code sessions with timeline tracking, cost breakdowns, tool analytics, and context window monitoring.

GrapeRoot MCP Tool Reduces Claude Code Token Usage by 50-70%
A developer built GrapeRoot, an MCP tool using Claude Code, that tracks explored files and avoids re-reading unchanged content, reducing token usage by 50-70% and making $20 Claude Code plans last 2-3× longer.