Google Workspace MCP Server
Gmail, Drive, Calendar, Docs, Sheets and nine more Google Workspace services from one MCP server
Gmail, Calendar, Drive, Docs, Sheets, Tasks, Meet and Contacts across several Google accounts
By Aaron Bockelie (individual) TypeScript Local · stdio ProductivityCommunicationFiles and storage
55 popularity score ★ 194 ↓ 1.2k/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET. Replace each <NAME> with your value.
claude mcp add google-workspace -e GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> -e GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> -- npx -y @aaronsb/google-workspace-mcp{
"mcpServers": {
"google-workspace": {
"command": "npx",
"args": [
"-y",
"@aaronsb/google-workspace-mcp"
],
"env": {
"GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
}
}
}
}{
"mcpServers": {
"google-workspace": {
"command": "npx",
"args": [
"-y",
"@aaronsb/google-workspace-mcp"
],
"env": {
"GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
}
}
}
}{
"servers": {
"google-workspace": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@aaronsb/google-workspace-mcp"
],
"env": {
"GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
}
}
}
}[mcp_servers.google-workspace]
command = "npx"
args = ["-y", "@aaronsb/google-workspace-mcp"]
[mcp_servers.google-workspace.env]
GOOGLE_CLIENT_ID = "<GOOGLE_CLIENT_ID>"
GOOGLE_CLIENT_SECRET = "<GOOGLE_CLIENT_SECRET>"gemini mcp add --scope user -e GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> -e GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> google-workspace npx -- -y @aaronsb/google-workspace-mcpGOOGLE_CLIENT_ID |
Required: Client ID of your Google Cloud OAuth client (Desktop app type). |
|---|---|
GOOGLE_CLIENT_SECRET |
Required: Client secret of the same OAuth client. |
GWS_SAFETY_POLICY |
Optional: Optional comma-separated guards: draft-only-email, no-delete, read-only, audit; the server will not start with an unknown name. |
XDG_CONFIG_HOME |
Optional: Base folder for the account registry; defaults to ~/.config. |
XDG_DATA_HOME |
Optional: Base folder for credentials and the workspace folder; defaults to ~/.local/share. |
A local Node.js server that connects an assistant to eight Google services under your own Google accounts: Gmail, Calendar, Drive, Docs, Sheets, Tasks, Meet and Contacts (through the People API). It has one tool per service. Each tool takes an operation name and the email address of the account to use, so a personal and a work account can sit side by side. Requests go straight from your machine to Google's APIs, and OAuth tokens are stored per account under ~/.local/share/google-workspace-mcp/credentials/.
You add accounts with manage_accounts, which opens a browser for Google sign-in. An account can be authorised read-only, in which case Google issues a read-only token and the server refuses write calls before they are sent. bulk_operations chains calls, feeding the result of one step into the next, or runs one operation over many items in a single Google batch request. Batch mode works only for contacts and for Gmail trash and label changes. A sandboxed workspace folder holds attachments, downloads and exports, and a scratchpad tool drafts longer text before sending it to a mail, doc or sheet.
The README leaves out one setting. The server reads GWS_SAFETY_POLICY, a comma-separated list of extra guards: draft-only-email, no-delete, read-only and audit. The server will not start if the list contains an unknown name (src/server/server.ts at v4.6.1). The code at v4.6.1 also advertises 13 tools, not the README's 12: the old name queue_operations is still offered as an alias of bulk_operations and is marked for removal (src/server/tools.ts).
| Runtime | Node.js 22+ |
|---|
Node.js 22.12 or newer, which the server checks at start. You also need a Google Cloud project with an OAuth 2.0 Client ID of type Desktop app. The APIs you plan to use must be turned on in that project (Gmail, Calendar, Drive, Sheets, Docs, Tasks, Meet, and the People API for contacts). Each account you add needs a browser sign-in on the machine running the server. Claude Desktop users can install the .mcpb bundle from the GitHub releases page instead, which brings its own dependencies.
It covers a chosen subset of Google's APIs: 95 operations reaching 79 of the 257 methods Google publishes for these eight services, per the README. Chat, Slides and Forms are not supported. Batch mode in bulk_operations works only for contacts (create, update, delete, get) and for Gmail trash and label changes; everything else runs as sequential steps. For services where Google offers no read-only scope, a read-only account can still write, and the server says so when you authorise it. The queue_operations alias is deprecated and will be removed in a later release.
Suits someone who wants an assistant to read and act on their own Gmail, calendar, Drive and documents, especially across more than one Google account, and who can set up their own OAuth client in Google Cloud. The read-only account mode and GWS_SAFETY_POLICY help when the assistant should look but not send or delete. It is a community project, not a Google one. Pick something else if you need Chat, Slides or Forms, or if you cannot create an OAuth client. We also list taylorwilsdon's google_workspace_mcp, a Python server for the same suite.
manage_emailmanage_calendarmanage_drivemanage_sheetsmanage_docsmanage_tasksmanage_meetmanage_contactsmanage_accountsmanage_scratchpadmanage_workspacebulk_operationsqueue_operations