google-messages-for-web-mcp
Drives an already logged-in Google Messages for web tab to read and send SMS/RCS messages: checks pairing and tab status, lists conversations with snippets and unread/pinned info, reads the latest messages in a conversation, and sends new messages via the compose box. Read-only conversation listing; reads mark conversations as read, and sends are not delivery-confirmed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-messages-for-web-mcpshow my latest text conversations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
google-messages-for-web-mcp
An MCP server (stdio) that reads and sends messages in Google Messages for web by driving your already logged-in Chrome tab through the chromefile CLI. Not affiliated with Google.
Requirements
macOS
Chrome with chromefile installed
A Messages for web tab paired with your phone (one is opened in the background if missing, but pairing is up to you)
Node >= 24
Related MCP server: Facebook Messenger MCP Bridge
Install
npm install -g github:whirlwin/google-messages-for-web-mcp
# or
git clone https://github.com/whirlwin/google-messages-for-web-mcp && cd google-messages-for-web-mcp && npm i && npm run buildRegister with Claude Code:
claude mcp add --scope user google-messages -- google-messages-for-web-mcpSet CHROMEFILE_BIN if chromefile is not on your PATH.
Tools
Tool | Description |
| Is chromefile reachable, is a Messages tab open, is it ready or does it need pairing |
|
|
|
|
|
|
Security
Incoming SMS and RCS text is untrusted input and can carry prompt injection. Every tool description says so.
This server combines private data, untrusted content and an outbound send channel. Keep
send_messagebehind per-call approval and never auto-approve it.Only one Messages for web session is active at a time. This server uses your existing tab and never clicks "Use here" or pairs for you; it returns an error telling you to do it.
Conversation ids are validated against
^[A-Za-z0-9_-]+$and all values reach the page as JSON literals, never as raw source.
How it works
Each tool runs chromefile call page.eval against the Messages tab. Sending also uses chromefile call page.cdp to dispatch a trusted Enter key in the compose box. The functions in src/page.ts run inside the page and are serialised with fn.toString(). They rely on the app's data-e2e-* attributes and custom elements (a[data-e2e-conversation], mws-message-wrapper, the compose box and send button). These selectors are reverse engineered and will break when Google changes the UI.
Testing
npm test # unit tests against a synthetic DOM fixture (happy-dom), no browser needed
npm run lint # typecheckEnd-to-end, against your real tab (not part of npm test):
GM_E2E_CONVERSATION=<conversation id> npm run test:e2e
GM_E2E_CONVERSATION=<conversation id> GM_E2E_SEND_TEXT="test" npm run test:e2e # also sends a real messageAlternatives
openmessage talks to Google Messages at the protocol level (Go, via mautrix/gmessages libgm, AGPL-3.0) and needs no browser tab.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
I send and manage WhatsApp Web messages through your linked session
- BlooioOAuthcom.blooio
Send and receive iMessage, SMS, RCS, and WhatsApp, and manage contacts, chats, and numbers.
Messaging tools for AI agents: send messages, manage chats, groups and channels.
Send and read OpenPhone messages, calls, contacts and phone numbers.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables sending, reading, searching, and managing SMS/RCS messages through Google Messages web interface, requiring a persistent browser session paired with a phone.AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceEnables AI clients to read and send Facebook Messenger messages by using a Chrome extension to bypass anti-bot protections, providing tools like fb_list_conversations, fb_read_messages, and fb_send_message.-
- AlicenseAqualityAmaintenanceEnables Claude on macOS to read, search, and send iMessage, SMS, and RCS messages, with tools for stats, chat history, attachments, and message composition.9MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI applications to send and receive real iMessage/SMS messages through a local MCP service, with tools for sending texts, checking new messages, browsing history, and querying line status.836 npm3MIT