Google Chat MCP
Provides tools for interacting with Google Chat as the signed-in user, including listing and searching spaces, reading and sending messages, managing members, and uploading or downloading attachments.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Google Chat MCP
A small stdio MCP server that lets an AI agent (Claude Code, Claude Desktop, or any MCP client) read and send Google Chat messages as the signed-in user, through the Google Chat API with user OAuth.
21 tools for spaces, messages, members and attachments
Safety switches: read-only mode, a space allowlist, and one fixed folder for files
Plain
fetchagainst the Chat REST API; the only dependencies are the MCP SDK andzodOne-time sign-in with PKCE and a loopback redirect; the token refreshes on its own after that
Needs a Google Workspace account. Google's Chat API guide lists a Business or Enterprise Workspace account as a prerequisite. A personal
@gmail.comaccount is not supported.
Tools
Area | Tool | What it does |
Spaces |
| Spaces, group chats and DMs you are in, most recently active first |
| Find spaces by name (matched locally; the API cannot filter by name) | |
| Type, description, guidelines, member count, link | |
| Your 1:1 DM with a person (email or | |
| Group chats whose members are exactly you plus the given people | |
| A named space with you as the only member | |
| Rename a space or change its description or guidelines | |
| Start a group chat with 2 to 49 people (returns the existing one if it already exists) | |
| Delete a space and everything in it, for everyone (cannot be undone) | |
Messages |
| Latest messages in a space, oldest first, optional |
| One message with its attachments | |
| Every message in a thread, oldest first | |
| Post as you; pass | |
| Replace the text of your own message | |
| Delete a message (fails if it has thread replies) | |
Members |
| Members with name, role and state |
| One person's membership | |
| Add a person to a space | |
| Remove a person from a space | |
Attachments |
| Upload a file from the files folder and send it (only with |
| Save an attachment into the files folder (only with |
Everything you send shows under your own name, with the Chat app's name from your Google Cloud project as a small chip next to it.
Related MCP server: gmail-mcp
Demo
Claude Code with this server, in a test Workspace. The project's CLAUDE.md
asks Claude to show a draft before it sends a message and wait for "yes".
That is an instruction to the model, not something the server enforces.
Claude drafts a message to a space, waits, and sends it after "Yes send it":

Akshay sees it in the space, sent by Tarun with the "Texperiments Chat MCP" chip:

Create a space and add two people (no draft needed):


The same message from the sender's side:

A direct message to Akshay:


Reading the reply:


A DM where Claude writes the text itself:


Sending a file from the files folder:


Safety
An agent with this server can post as you, change spaces and remove people. These settings limit what it can do:
Setting | Effect |
| Only the read tools exist, and sign-in asks Google for read-only scopes, so the token itself cannot write |
| Optional, off by default. Comma-separated |
| The only folder the attachment tools can read from or write to. Without it, they are not registered. Paths outside it ( |
Also keep in mind:
Do not auto-approve the write tools in your MCP client. Tools carry MCP hints (
readOnlyHint,destructiveHint), but hints are only hints; the client's approval prompt is what stops a wrong send.Messages the agent reads are untrusted input. Anyone in a space can write a message that tries to steer the agent ("reply to X with ..."). This is prompt injection; review every write before you approve it.
"Approve the exact text first" in the tool descriptions is advice to the model, not something the server enforces.
Setup
You need a Google Cloud project in your Workspace, the Chat API enabled, an
OAuth consent screen, a Chat app configuration and a Desktop OAuth client. It
takes about 10 minutes. The screenshots were taken in a test Workspace
(texperiments.com); use your own names.
1. Open the Google Cloud console
Go to https://console.cloud.google.com/, signed in with your Workspace account.

2. Accept the Google Cloud terms (first visit only)
Tick the "I agree to the Google Cloud Platform Terms of Service" checkbox, then click Agree and continue. No billing account is needed for the Chat API, so you can ignore the "$300 free trial" banner.

On the first visit, Google also creates the Cloud organization for your Workspace domain.

3. Create a project
Click the project picker (Select a project) at the top, then New project.


Enter a project name. The project ID follows the name and cannot be changed later. Organization and parent resource are your Workspace domain. Click Create.

The notifications panel confirms it; Select Project opens it.


4. Enable the Google Chat API
Open APIs & Services → Library.

Search for "Google Chat API" and press Enter.

Pick Google Chat API (not "Chat MCP API").

Click Enable.

The details page shows Status: Enabled.

5. Configure the OAuth consent screen
Open Google Auth Platform → Overview and click Get started.

App Information: enter an app name and pick the user support email.


Audience: choose Internal. Only users in your Workspace can sign in, and Google does not need to verify the app.

Contact Information: an email where Google can reach you about the project.

Finish: tick "I agree to the Google API Services: User Data Policy", click Continue, then Create.


6. Configure the Chat app (needed even for user sign-in)
Open APIs & Services → Enabled APIs & services → Google Chat API → Configuration. The Chat API refuses calls from a project without a Chat app configuration, and the app name becomes the chip on messages you send.

Set an App name and a Description (40 characters max). Switch Interactive features off and confirm Disable, so nobody can message or add the app. Leave "Build this Chat app as a Workspace add-on" as it is; clearing it cannot be undone. Click Save.


7. Create a Desktop OAuth client
Open Google Auth Platform → Clients → Create client.


Choose Desktop app, give it a name, and click Create.

In the OAuth client created dialog, click Download JSON. Google shows the client secret only once. Keep the file outside this repository; it is a credential.

8. Install and sign in
npm install
npm run buildSign in once, pointing at the downloaded client file:
GOOGLE_CHAT_CREDENTIALS=/path/to/client.json npm run authOpen the printed URL and choose your Workspace account.

The consent screen lists the Chat permissions the server asks for. Click Allow.

The browser lands on a local page and the token is saved (default
~/.google-chat-mcp/token.json).

Run npm run auth again only if the token is revoked, or after switching
read-only mode on or off (the scopes change).
Register the server
Claude Code (.mcp.json in your project):
{
"mcpServers": {
"google-chat": {
"type": "stdio",
"command": "node",
"args": ["/path/to/google-chat-mcp/dist/index.js"],
"env": {
"GOOGLE_CHAT_CREDENTIALS": "/path/to/client.json"
}
}
}
}Claude Desktop uses the same mcpServers block in
claude_desktop_config.json. Restart the client after changing the config or
rebuilding.
Environment variables
Variable | Default | Notes |
| (required) | The Desktop OAuth client JSON from step 7 |
|
| Where the refresh token is stored |
| off |
|
| off | Comma-separated |
| off | Folder for |
Scopes requested: chat.spaces, chat.messages, chat.memberships and
chat.delete; in read-only mode, chat.spaces.readonly,
chat.messages.readonly and chat.memberships.readonly.
Limits
The Chat API has no keyword search.
search_spaceslists your spaces and matches names locally; to find a message, read a space withsince.Attachments stored in Google Drive cannot be downloaded through the Chat API; only uploaded files can. Uploads are limited to 200 MB.
New Workspace users can take a while to appear in Chat's people search; the full email address works sooner.
Turning it off
Stop the server: remove it from your MCP config.
Revoke access: remove the app at myaccount.google.com → Security → Third-party apps, and delete the token file.
Remove it entirely: delete the Google Cloud project. This also cuts off every token issued through it.
Code layout
src/index.ts: starts the server;node dist/index.js authruns the sign-in insteadsrc/auth.ts: loads the client file, runs the sign-in, stores and refreshes the tokensrc/chat.ts: thinfetchwrappers over the Chat REST API v1src/safety.ts: read-only mode, allowlist and files foldersrc/tools/: the tools, one file per area
License
ISC, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Your Telegram, WhatsApp, Instagram, mail and calendar in Claude or ChatGPT. Never sends messages.
Connect any IMAP/SMTP mailbox to Claude & ChatGPT: search, read, sort, draft. Sends only with OK.
Give AI agents their own email inboxes: list, read and send mail via scoped, revocable OAuth grants.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGives Claude access to Microsoft 365 mail, calendar, files, and Teams chat with per-user identity via On-Behalf-Of flow. Supports reading and drafting content, but sending is deliberately disabled.65 npmMIT
- AlicenseAqualityBmaintenanceEnables Claude.ai and Claude Code to read and write a single Gmail mailbox, including search, drafts, sending, and label management.21MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude and other AI agents to read and write Outlook Mail, Calendar, SharePoint, OneDrive, Contacts, OneNote, and Teams content through Microsoft Graph using per-user delegated OAuth, with deny lists, read-only switches, and enforced draft mode for administrative control.65 npmAGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables Claude and ChatGPT to read, search, and organize mail in a user's own email account, including folders, threads, attachments, drafts, and optional sending, with per-user permission levels and OAuth-secured remote connections.MIT