Skip to main content
Glama
VGdotcom

Google Workspace MCP Server

by VGdotcom

title: Google Workspace MCP Server emoji: 📧 colorFrom: blue colorTo: green sdk: docker app_file: app.py pinned: false

Google Workspace Model Context Protocol (MCP) Server

A reusable, production-ready Model Context Protocol (MCP) Server that bridges AI agents with Google Workspace services (Gmail & Google Docs). By exposing standardized productivity tools, this server allows any MCP-compatible AI agent (such as Claude Desktop, IDE assistants, or autonomous workflows) to securely compose emails and edit documents without requiring hardcoded Google API logic.


Related MCP server: Gmail MCP Server

Features & Capabilities

📧 Gmail Integration

  • send_email: Send emails immediately with validation for to, cc, and bcc lists. Supports both plain text and HTML alternative body rendering.

  • draft_email: Create drafts in your Gmail mailbox for subsequent manual review before sending.

📄 Google Docs Integration

  • append_content: Append plain text or formatted notes to the end of any Google Document. Supports Heading styles (HEADING_1, HEADING_2, HEADING_3), bulleted lists, numbered lists, bold text, and italic text.

🔐 Secure & Transparent Authentication

  • Implements Google OAuth 2.0 with PKCE for enhanced desktop security.

  • Automatically checks token expiration and performs silent background refreshes using stored refresh tokens without interrupting AI agent execution.

  • AI agents are strictly isolated from raw tokens or client secrets.


Quickstart Guide

1. Requirements & Setup

Ensure you have Python 3.10+ installed. Create a virtual environment and install dependencies:

python3 -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -e .

2. Configure OAuth Client Secrets

  1. Follow the step-by-step instructions in docs/GCP_SETUP.md to enable Gmail and Docs APIs in Google Cloud Console.

  2. Download your Desktop App OAuth client secrets JSON file.

  3. Save the downloaded file to your project root or configure its path in your .env file:

    GOOGLE_CLIENT_SECRETS_FILE=client_secret_YOUR_ID.json
    TOKEN_STORAGE_PATH=token.json
    LOG_LEVEL=INFO

3. Authorize Your Google Account

Before running the MCP server, perform a one-time interactive login to generate your token.json:

workspace-auth

(This opens a browser window. Sign in with your Google account and grant permissions).


Connecting to AI Agents

Option A: Claude Desktop Configuration

To connect this MCP server to Claude Desktop, add the following entry to your claude_desktop_config.json (located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "google-workspace": {
      "command": "/Users/vkg/Desktop/MCP Server/.venv/bin/workspace-mcp",
      "args": ["--transport", "stdio"],
      "cwd": "/Users/vkg/Desktop/MCP Server",
      "env": {
        "GOOGLE_CLIENT_SECRETS_FILE": "/Users/vkg/Desktop/MCP Server/client_secret_YOUR_ID.json",
        "TOKEN_STORAGE_PATH": "/Users/vkg/Desktop/MCP Server/token.json"
      }
    }
  }
}

Option B: Run via Server-Sent Events (SSE)

For network-based AI agents, launch the server in SSE mode:

workspace-mcp --transport sse --port 8000

Then connect your client to http://localhost:8000/sse.


Documentation Suite

Available Tools

3 tools
append_contentB

Append text or notes to the end of an existing Google Document.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
formattingNo
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Conveys basic behavior (append to end) but no annotations provided. Missing details on permissions, limitations, or formatting handling. Adequate for a simple operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no waste. Could be improved by front-loading the resource and action more explicitly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and simple operation, description is adequate but missing usage context and parameter guidance. Output schema exists but doesn't compensate for missing explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%; description only hints at 'content' parameter ('text or notes'). Does not explain 'document_id' or 'formatting' beyond their names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Append' and resource 'Google Document', specifying 'text or notes' and 'to the end'. Distinct from sibling tools (draft_email, send_email) which are email-related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use or when not to use. Lacks alternatives or context for selection. Only describes the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draft_emailB

Create a new draft email in the user's Gmail account without sending it. Useful for preparing messages for user review.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
bodyYes
htmlNo
subjectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states it creates a draft, but doesn't specify idempotency, authentication requirements, or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences and front-loaded with the core action. However, it could benefit from a brief structure indicating parameter usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and an output schema, the description is too sparse. It doesn't explain the output (draft id etc.) or how to use the html parameter, leaving the agent with significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description adds no parameter details whatsoever, leaving all 6 parameters (including required ones) unexplained beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a draft email without sending, distinguishing it from send_email. It also specifies it's for preparing messages for review, providing a clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'without sending it' implying not to use for sending, but it does not explicitly contrast with sibling tools like send_email or append_content. It lacks when-not-to-use or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailC

Send an email immediately using the user's Gmail account. Requires at least one valid recipient address in the 'to' array.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bccNo
bodyYes
htmlNo
subjectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavioral traits. It mentions 'immediately' and a requirement for valid recipients, but omits side effects (e.g., irreversibility), authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The requirement is stated upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters and an output schema, the description is too sparse. Lacks details on input constraints, response format, and potential errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should explain parameter meanings. Only 'to' is mentioned as requiring valid addresses; cc, bcc, body, html, subject are not described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (send an email) and the resource (user's Gmail account). It distinguishes from sibling tools like draft_email by implying immediate sending. However, it could be more explicit about the resource being an email message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like draft_email or append_content. It only describes the basic function without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedappend_content
    • First observeddraft_email
    • First observedsend_email

TDQS

B3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: append_content modifies Google Docs, draft_email creates drafts without sending, and send_email sends immediately. No overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (append_content, draft_email, send_email), making the set predictable.

Tool Count2/5

With only 3 tools, the server is too sparse for the broad scope implied by 'Google Workspace,' missing major services like Calendar, Sheets, and Drive.

Completeness1/5

The tool surface is severely incomplete for Google Workspace, lacking CRUD operations even on the included services (only append for Docs, no read, update, delete; email lacks search, read, trash).

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VGdotcom/google-workspace-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server