
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
mcp-google-chat
Advanced tools
MCP server for the Google Chat API — list and search spaces, read and send messages, work with threads, reactions, attachments and memberships. For Claude, Cursor, Codex and other AI clients.
English | Русский
A1 Google Chat MCP lets an AI app work in Google Chat in plain language. Find the right space or direct message, catch up on a conversation, reply in a thread, react with an emoji and manage who is in a space.
It uses the Google Chat API with your Google account and acts as the signed-in user: messages send under your name, and only your own messages and reactions can be edited or deleted. It makes the limits of the Chat API explicit instead of implying that every chat task is possible.
Start with a read-only question:
Show today’s messages in the team space and summarize what was decided.
Connect the server · Explore use cases · Open technical documentation
You: What was discussed in the release space today?
Assistant: Lists today’s messages with senders and threads. Nothing changes.
You: Reply in the deploy thread that the rollout is finished.
Assistant: Shows the target space, the thread and the drafted text, then asks for confirmation before sending.
You: Confirm.
Assistant: Sends the reply under your name in that thread. It does not touch any other message.
You need Node.js 20+, a Google account with access to Google Chat and OAuth credentials from a Google Cloud project with the Google Chat API enabled.
In the app: open Settings → Plugins → MCP servers, select Add server, then add npx -y mcp-google-chat@latest with GOOGLE_CHAT_CLIENT_ID, GOOGLE_CHAT_CLIENT_SECRET and GOOGLE_CHAT_REFRESH_TOKEN.
From the command line:
codex mcp add google-chat \
--env GOOGLE_CHAT_CLIENT_ID=your_client_id \
--env GOOGLE_CHAT_CLIENT_SECRET=your_client_secret \
--env GOOGLE_CHAT_REFRESH_TOKEN=your_refresh_token \
-- npx -y mcp-google-chat@latest
codex mcp list
claude mcp add \
--env GOOGLE_CHAT_CLIENT_ID=your_client_id \
--env GOOGLE_CHAT_CLIENT_SECRET=your_client_secret \
--env GOOGLE_CHAT_REFRESH_TOKEN=your_refresh_token \
--transport stdio --scope user google-chat \
-- npx -y mcp-google-chat@latest
claude mcp list
Open Settings → Developer → Edit Config and add:
{
"mcpServers": {
"google-chat": {
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"],
"env": {
"GOOGLE_CHAT_CLIENT_ID": "your_client_id",
"GOOGLE_CHAT_CLIENT_SECRET": "your_client_secret",
"GOOGLE_CHAT_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
If Edit Config is unavailable, edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.
Add this to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:
{
"mcpServers": {
"google-chat": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"],
"env": {
"GOOGLE_CHAT_CLIENT_ID": "your_client_id",
"GOOGLE_CHAT_CLIENT_SECRET": "your_client_secret",
"GOOGLE_CHAT_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
Run MCP: Open User Configuration and add:
{
"servers": {
"google-chat": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"],
"env": {
"GOOGLE_CHAT_CLIENT_ID": "${input:chat_client_id}",
"GOOGLE_CHAT_CLIENT_SECRET": "${input:chat_client_secret}",
"GOOGLE_CHAT_REFRESH_TOKEN": "${input:chat_refresh_token}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "chat_client_id", "description": "Google OAuth client ID" },
{ "type": "promptString", "id": "chat_client_secret", "description": "Google OAuth client secret", "password": true },
{ "type": "promptString", "id": "chat_refresh_token", "description": "Google OAuth refresh token", "password": true }
]
}
Check it with MCP: List Servers.
GOOGLE_CHAT_ACCESS_TOKEN.The Chat API cannot search message text — the only message filters are creation time and thread. find_direct_message finds an existing DM but never creates one, and file bytes are not downloaded or uploaded through this server. Space creation and the other uncovered API methods go through raw_request.
| Operation | What happens | Confirmation boundary |
|---|---|---|
| Read spaces, messages, members, reactions and attachment metadata | Reads conversations and metadata | No change |
| Send a message | Posts in a real space under your name | Changes a conversation |
| Update a message | Replaces the text of your own message | Changes a conversation |
| Add or remove a reaction | Changes your own reaction on a message | Changes a conversation |
| Delete a message | Permanently removes a message | Destructive |
| Manage membership | Adds, re-roles or removes a space member | Potentially destructive |
| Raw API request | Can call API methods without a dedicated tool | Potentially destructive |
The AI client controls confirmation prompts. The server marks reads, writes and destructive tools so the client can distinguish catching up from posting.
Google Chat requires OAuth 2.0; an API key is not enough.
Create or select a Google Cloud project and enable Google Chat API.
Configure the OAuth consent screen and create a Desktop app OAuth client.
Authorize the Google account you chat as. The OAuth 2.0 Playground can obtain the refresh token when Use your own OAuth credentials is enabled.
Request only the scopes your sessions need. For reading and sending, this is enough:
https://www.googleapis.com/auth/chat.spaces.readonly
https://www.googleapis.com/auth/chat.messages.readonly
https://www.googleapis.com/auth/chat.messages.create
The full per-task table — editing and deleting your own messages, reactions, memberships, admin search — is in docs/TOOLS.md.
Testing-mode OAuth refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal app in a Workspace domain, when you need long-lived access. Treat the client secret and refresh token as passwords.
For a quick session, a short-lived token in GOOGLE_CHAT_ACCESS_TOKEN also works — for example from gcloud auth print-access-token with Chat scopes granted. The same variable is how a service-account Chat-app token reaches the server when you need app-only features.
| Variable | Required | Description |
|---|---|---|
GOOGLE_CHAT_CLIENT_ID | Yes* | OAuth client ID. |
GOOGLE_CHAT_CLIENT_SECRET | Yes* | OAuth client secret. |
GOOGLE_CHAT_REFRESH_TOKEN | Yes* | OAuth refresh token. |
GOOGLE_CHAT_ACCESS_TOKEN | Yes* | Short-lived alternative to the OAuth trio; can be a service-account or Chat-app token. |
GOOGLE_CHAT_API_BASE | No | Google Chat API base URL override. |
GOOGLE_CHAT_TIMEOUT_MS | No | Per-request timeout; default 60000 ms. |
GOOGLE_CHAT_MAX_RETRIES | No | Temporary-error retries; default 3. |
* Provide either the OAuth trio or an access token.
Started without credentials, the server still completes the MCP handshake; the first tool call then names the exact variables to set and asks for a restart instead of failing silently.
ASKADS_TELEMETRY=0 to opt out.429, the server uses backoff; reads also retry after network and 5xx errors, while writes are never replayed after an uncertain failure — a replayed send would be a duplicate message in a real room. send_message accepts a custom message id that makes a send addressable and deduplicable.list_messages can poll a space incrementally by creation time if your AI app supports scheduled tasks; space event subscriptions go through raw_request.Found a bug or need a scenario? Create an issue or write in Telegram.
You made it to the end!
FAQs
MCP server for the Google Chat API — list and search spaces, read and send messages, work with threads, reactions, attachments and memberships. For Claude, Cursor, Codex and other AI clients.
The npm package mcp-google-chat receives a total of 35 weekly downloads. As such, mcp-google-chat popularity was classified as not popular.
We found that mcp-google-chat demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.