list_emailsLABSCO SUMMARY
Your own Cloud project holds the keys.
Setup is the real cost here — two APIs to enable, an OAuth client to create, a script to run for the refresh token — and it buys you the thing hosted mail connectors cannot offer, which is that the credentials never leave your project. What you get for it is mail you can search in Gmail's own query syntax and act on in the same turn.
What it is
A Gmail and Google Calendar server that runs on credentials you create yourself. You enable the two APIs in a Google Cloud project, create an OAuth client, and exchange it for a refresh token the server then uses — so the access granted is exactly the scopes you approved.
What you get
- Recent inbox mail listed, with filtering
- Search across mail using Gmail's own query syntax
- Mail sent, including CC and BCC recipients
- Labels changed on a message — archive, trash, mark read or unread
- Calendar events over the same credentials: listed by date range, created with attendees, updated and deleted
Requirements
Node.js, plus a Google Cloud project with the Gmail API and Google Calendar API enabled and an OAuth client whose redirect URI is a localhost callback. A bundled script runs the browser consent once on that callback and writes the refresh token. Consent covers gmail.modify, gmail.send and calendar.
Setup effort
Build from source — git clone https://github.com/epaproditus/google-workspace-mcp-server.git
USE CASES
Clearing the inbox down
Read what is actually there, then archive, trash or mark the messages that do not need a reply — the pass that turns an inbox into a short list.
Finding a thread you half remember
Search with Gmail's own operators — from, has:attachment, before — so the query is as precise as the one you would type into the web client.
Sending the mail the conversation just produced
The draft that was written in the chat goes out from the same place, with CC and BCC set, instead of being copied into another window.
Filing everything on one topic at once
Find the whole thread or campaign with one query, then relabel or archive the matches together rather than one message at a time.
8 tools
Listed in project docs. Your client may show a different list.
search_emailssend_emailmodify_emaillist_eventscreate_eventupdate_eventdelete_eventBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
- GOOGLE_CLIENT_ID in your environment
- GOOGLE_CLIENT_SECRET in your environment
- GOOGLE_REFRESH_TOKEN in your environment
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/epaproditus/google-workspace-mcp-server.git
cd google-workspace-mcp-server
npm installCreate credentials.json in that folder: {"web": {"client_id": "<YOUR_CLIENT_ID>", "client_secret": "<YOUR_CLIENT_SECRET>", "redirect_uris": ["http://localhost:4100/code"], "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token"}}
Get the refresh token. This opens the browser for Google consent, saves token.json and prints the token: node get-refresh-token.js
npm run buildMCP Clients
Claude Desktop, Cline
{
"mcpServers": {
"google-workspace": {
"command": "node",
"args": [
"<YOUR_PATH_TO_GOOGLE_WORKSPACE_MCP_SERVER>/build/index.js"
],
"env": {
"GOOGLE_CLIENT_ID": "<YOUR_GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<YOUR_GOOGLE_CLIENT_SECRET>",
"GOOGLE_REFRESH_TOKEN": "<YOUR_GOOGLE_REFRESH_TOKEN>"
}
}
}
}