Skip to main content
Glama
tom275275

Google Workspace MCP Server

by tom275275
README.md
# Google Workspace MCP Server — Personal Cloud Run Deployment

A personal remote MCP server providing full natural language control over Google Workspace,
hosted on Google Cloud Run. Based on [taylorwilsdon/google_workspace_mcp](https://github.com/taylorwilsdon/google_workspace_mcp) (v1.14.3).

## Live Service

| | |
|---|---|
| **MCP Endpoint** | `https://google-workspace-mcp-557522843498.us-central1.run.app/mcp` |
| **Health Check** | `https://google-workspace-mcp-557522843498.us-central1.run.app/health` |
| **Transport** | Streamable HTTP (MCP over HTTP) |
| **Account** | tschreiter@gmail.com |

## Connecting to Claude Code

Add to `~/.claude/mcp.json`:

```json
{
  "mcpServers": {
    "google-workspace": {
      "type": "http",
      "url": "https://google-workspace-mcp-557522843498.us-central1.run.app/mcp"
    }
  }
}
```

Restart Claude Code to load the server.

## Enabled Google Workspace Tools

All major Google Workspace services are available:

| Service | Capabilities |
|---|---|
| **Gmail** | Search, read, send, draft, label, and manage email |
| **Google Calendar** | Create, update, delete events; check availability; RSVP |
| **Google Drive** | Search, upload, download, organize files and folders |
| **Google Docs** | Create, read, edit, and format documents |
| **Google Sheets** | Read and write cell ranges, manage spreadsheets |
| **Google Slides** | Create and edit presentations, extract content |
| **Google Forms** | Create forms, manage questions, read responses |
| **Google Tasks** | Manage task lists and individual tasks |
| **Google Chat** | Send messages, manage spaces |
| **Contacts** | Look up and manage contacts via People API |
| **Apps Script** | Execute and manage Google Apps Script projects |
| **Custom Search** | Programmable Search Engine integration (requires PSE key) |

## Infrastructure

| Resource | Details |
|---|---|
| **GCP Project** | tom-personal-tools |
| **Cloud Run Region** | us-central1 (within always-free tier) |
| **Runtime** | Python 3.11 on Cloud Run managed |
| **Auth** | OAuth 2.1, Desktop OAuth client |
| **Secrets** | Google Secret Manager (`GOOGLE_OAUTH_CLIENT_ID`, `GOOGLE_OAUTH_CLIENT_SECRET`) |
| **CI/CD** | Cloud Build trigger on push to `main` |
| **Container Registry** | Artifact Registry (`cloud-run-source-deploy`, us-central1) |

## Redeploying Manually

```bash
cd /home/tom-unix/projects/google-workspace-mcp

gcloud run deploy google-workspace-mcp \
  --source . \
  --project=tom-personal-tools \
  --region=us-central1 \
  --platform=managed \
  --allow-unauthenticated \
  --port=8000 \
  --memory=512Mi \
  --set-secrets="GOOGLE_OAUTH_CLIENT_ID=GOOGLE_OAUTH_CLIENT_ID:latest,GOOGLE_OAUTH_CLIENT_SECRET=GOOGLE_OAUTH_CLIENT_SECRET:latest" \
  --set-env-vars="MCP_ENABLE_OAUTH21=true,USER_GOOGLE_EMAIL=tschreiter@gmail.com" \
  --timeout=300
```

Pushes to `main` trigger automatic redeployment via Cloud Build.

## Pulling Upstream Updates

```bash
git fetch upstream
git log HEAD..upstream/main --oneline   # preview changes
git merge upstream/main
git push
```

Cloud Build will automatically deploy the updated version.

## Rotating OAuth Credentials

```bash
echo -n "NEW_CLIENT_ID" | gcloud secrets versions add GOOGLE_OAUTH_CLIENT_ID \
  --data-file=- --project=tom-personal-tools

echo -n "NEW_CLIENT_SECRET" | gcloud secrets versions add GOOGLE_OAUTH_CLIENT_SECRET \
  --data-file=- --project=tom-personal-tools
```

Then redeploy to pick up the new versions.

## Upstream

This deployment tracks [taylorwilsdon/google_workspace_mcp](https://github.com/taylorwilsdon/google_workspace_mcp).
Local changes are limited to `CLAUDE.md`, `cloudbuild.yaml`, and this `README.md`.

License: MIT (upstream)

TDQS

B3.1/5.0

Scored across 114 tools

Disambiguation2/5

Multiple tools overlap significantly: list_drive_items and search_drive_files both list Drive files with similar filters, several Drive permission tools (get_drive_file_permissions, get_drive_shareable_link, check_drive_file_public_access, manage_drive_access, set_drive_file_permissions) cover the same sharing territory, and batch_update_doc duplicates modify_doc_text, find_and_replace_doc, insert_doc_elements, and tab management. While individual descriptions are detailed, an agent would often struggle to pick the right tool among these overlapping options.

Naming Consistency3/5

Tool names are mostly snake_case with a verb_noun structure, but service prefixes are applied inconsistently: compare search_gmail_messages with generic search_messages and search_custom, or send_gmail_message with send_message. There is also a mixture of manage_*, modify_*, batch_update_*, and create_* patterns that, while readable, creates no strong predictable convention across the full set.

Tool Count1/5

With 114 tools, this far exceeds the 50+ threshold for an extreme mismatch. The suite spans many Google services, but the count is bloated by redundant tools (batch_update_doc vs individual doc editors, overlapping Drive permission tools, manage_contact vs manage_contacts_batch) and would be far more usable split into per-service MCP servers.

Completeness4/5

Across the covered Google services, lifecycle coverage is generally strong: Gmail, Drive, Docs, Sheets, Calendar, Chat, Forms, Slides, Tasks, Contacts, Custom Search, and Apps Script all have read and write operations. Notable gaps exist—no calendar create/delete, no sheet deletion/rename, no permanent Drive delete—but these can often be worked around via existing tools like update_drive_file or Drive trash.

Maintenance

ActivityInactive
ResponsivenessNo issues