Google Workspace MCP Server
# 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
Scored across 114 tools
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.
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.
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.
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.