Google Workspace 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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET. Replace each <NAME> with your value.

Claude CodeTerminal
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
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": [
        "-y",
        "@aaronsb/google-workspace-mcp"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": [
        "-y",
        "@aaronsb/google-workspace-mcp"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "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>"
      }
    }
  }
}
Codex~/.codex/config.toml
[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 CLITerminal
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-mcp

Settings 5

GOOGLE_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.

What it does

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).

What it needs

RuntimeNode.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.

Limits

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.

Who it suits

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.

Tools 13

manage_email
Search, read, send, reply to, forward, label and trash Gmail messages; handles drafts, threads and attachments
manage_calendar
List, create, update and delete events, show an agenda, add events from plain text, check free/busy
manage_drive
Search, upload, download, copy, move, export and delete Drive files; manage permissions and comments
manage_sheets
Read, write, append to and clear ranges; add, copy and rename tabs
manage_docs
Get, create and append to documents; insert text and find-and-replace
manage_tasks
List, create, update and complete tasks and task lists
manage_meet
Create meeting spaces; see current participants, past conferences, transcripts, recordings and notes
manage_contacts
Look up saved contacts, other correspondents and the organisation directory; create, update and delete contacts
manage_accounts
Add Google accounts through browser sign-in and set each account's scopes and read-only access
manage_scratchpad
Draft multi-line or JSON content, attach files, then send it to an email, doc or sheet
manage_workspace
Read, write and delete files in the local sandbox folder used for attachments and exports
bulk_operations
Run a chain of tool calls with result references, or one operation over many items in a single batch
queue_operations
Older name for bulk_operations, still accepted; marked for removal

Similar servers