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

CipherClaw: Using a Security Persona to Audit Code with Claude
A developer used CipherClaw, a CLAUDE.md persona called TALON, to make Claude Code think like a security architect. Running it on a Next.js app revealed 17 security findings including critical vulnerabilities like unauthenticated endpoints returning admin data and hardcoded auth tokens.

vllm-mlx fork adds tool calling and prompt cache for local AI coding agents
A developer has modified vllm-mlx to fix tool calling issues and add prompt caching, reducing TTFT from 28s to 0.3s for OpenClaw on Apple Silicon. The fork supports Qwen3-Coder-Next at 65 tok/s on M3 Ultra with working function calling.

RalphTerm: ralph-style loop for Claude Code with cross-review sessions from different agents
RalphTerm is an open-source Rust CLI that runs a ralph-style outer loop around Claude Code: it takes a markdown plan, executes tasks in fresh interactive sessions, and runs cross-review with a different model (e.g., Codex) in separate fresh sessions, feeding issues back into new implementer sessions.

Open-source MCP memory server with knowledge graph and learning features
An open-source MCP server written in Rust provides persistent memory for AI agents with knowledge graph architecture, Hebbian learning, and hybrid search. It's 7.6MB with sub-millisecond latency and works with any MCP-compatible client.