Skip to main content
Glama

google-cli-mcp

An MCP (Model Context Protocol) server that exposes Google Workspace APIs as tools for AI assistants like Claude, Cursor, and others. It uses Google's Discovery API to auto-generate tools at runtime — no manual tool definitions required.

Built with Claude Code by Anthropic.


What it does

Connects your AI assistant to 17 Google Workspace services:

Alias

Service

drive

Google Drive

sheets

Google Sheets

gmail

Gmail

calendar

Google Calendar

docs

Google Docs

slides

Google Slides

tasks

Google Tasks

people

Google People / Contacts

chat

Google Chat

classroom

Google Classroom

forms

Google Forms

keep

Google Keep

meet

Google Meet

admin-directory

Admin SDK - Directory

admin-reports

Admin SDK - Reports

events

Workspace Events

modelarmor

Model Armor


Requirements

  • Node.js >= 18

  • A Google account with access to the services you want to use

  • Google credentials (see Authentication below)

gcloud CLI is not required — but it is one of the two supported auth methods.


Installation

git clone https://github.com/ChrisNoronha/google-cli-mcp.git
cd google-cli-mcp
npm install
npm run build

Authentication

The server supports two credential methods. Use whichever fits your setup.

Option 1: Bearer token (no gcloud needed)

Set the GOOGLE_WORKSPACE_CLI_TOKEN environment variable to a valid Google OAuth 2.0 bearer token:

export GOOGLE_WORKSPACE_CLI_TOKEN="ya29.your-token-here"

Note: Bearer tokens expire (typically after 1 hour) and must be rotated manually. This option is best for quick testing or short-lived automation.

Option 2: Application Default Credentials (ADC)

This method uses gcloud to authenticate once and handles token refresh automatically — recommended for long-running use.

# Install gcloud CLI if you haven't already
# https://cloud.google.com/sdk/docs/install

gcloud auth application-default login

After logging in, the server will pick up your credentials automatically.


Configuration

All configuration is done via environment variables.

Variable

Default

Description

GOOGLE_WORKSPACE_CLI_TOKEN

Bearer token (Option 1 auth)

GWS_MCP_SERVICES

all services

Comma-separated list of service aliases to load (e.g. gmail,drive,calendar)

GWS_MCP_SCOPES

all scopes

Space-separated OAuth scopes (only used with ADC auth)

Load only specific services

export GWS_MCP_SERVICES="gmail,drive,calendar"

Leave GWS_MCP_SERVICES unset to load all 17 services.


Usage

Run the server

# Development (no build step)
npm run dev

# Production (after npm run build)
node dist/index.js

Connect to Claude Desktop

Add this to your Claude Desktop MCP config (claude_desktop_config.json):

{
  "mcpServers": {
    "google-workspace": {
      "command": "node",
      "args": ["/path/to/google-cli-mcp/dist/index.js"],
      "env": {
        "GWS_MCP_SERVICES": "gmail,drive,calendar"
      }
    }
  }
}

Connect to Claude Code

claude mcp add google-workspace -- node /path/to/google-cli-mcp/dist/index.js

Development

npm run dev      # run with tsx (no build)
npm run build    # compile TypeScript to dist/
npm test         # run tests
npm run test:watch  # watch mode

How it works

  1. Auth — resolves credentials from env var or ADC

  2. Discovery — fetches Google API Discovery Documents in parallel (10s timeout per service)

  3. Tool generation — builds MCP tool definitions from the Discovery Documents automatically

  4. Server — starts a stdio MCP server and registers all tools

  5. Dispatch — each tool call is proxied to the corresponding Google REST API with the resolved auth token


License

MIT


Created with Claude Code