这是一个基于 Python 的 MCP 服务器,把 Google Workspace 的十二项主要服务(Gmail、Drive、日历、Docs、Sheets、Slides、Forms、Tasks、Contacts、Chat、自定义搜索、Apps Script)统一封装成 120 多个工具,供 Claude Desktop、ChatGPT 及其他 MCP 客户端调用,用自然语言完成搜索邮件、创建日程、编辑文档、整理表格等操作。它支持 OAuth 2.1 多用户认证、无状态容器部署与外部鉴权网关透传,可集中托管给整个组织使用;工具按核心、扩展、完整三级加载以控制上下文长度,并提供只读模式、按服务权限与禁用单个工具的细粒度开关。除 MCP 外还附带完整 CLI 与 Code Mode,方便在 Claude Code、Codex 等编码环境中直接调用。
Google Workspace MCP Server
Full natural language control over Google Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Contacts, and Chat through all MCP clients, AI assistants and developer tools. Includes a full featured CLI & Code Mode for use with tools like Claude Code and Codex!
The most feature-complete Google Workspace MCP server is in a class of it's own: it can do things that Google's own tooling and the built in integrations with Claude and ChatGPT can't come close to with multi-user support, rich fine-grained editing tools and the most extensive coverage of any Workspace AI integration in existence.
By leveraging native OAuth 2.1, stateless deployment capability and external auth server & gateway passthrough auth support, it's also the only Workspace MCP you can host for your whole organization centrally & securely!
Supports all free Google accounts & Google Workspace plans with expanded app options like Chat & Spaces. Interested in a managed cloud instance? That can be arranged (starting at $5/mo).
See it in action:
Workspace MCP connects AI assistants to all twelve major Google Workspace services - 120+ tools behind a single MCP server, with OAuth 2.1 multi-user auth, three progressive tool tiers, read-only mode, a full CLI, and stateless container deployment. It runs locally over stdio for legacy clients and remotely over streamable HTTP with full implementation of the latest MCP spec.
The README covers just enough to get you running, with extensive documentation on the website:
| Where to go | What you'll find |
|---|---|
| Quick Start | Google Cloud setup, credentials, and client connection with screenshots |
| Full Documentation | Every tool, parameter, and auth mode |
| Advanced Deployment | Reverse proxy & nginx config, origin validation, credential store backends (GCS/CMEK), trusted-gateway identity, and the complete environment variable reference |
| Client Setup Guides | Claude Desktop/web Connectors, ChatGPT Developer Mode, and more |
| FAQ & Troubleshooting | Enabling Google APIs, OAuth errors, redirect URIs, Google Chat setup, client quirks |
Security & Compliance
For Security Teams
By default, this server sends no data anywhere except Google's APIs, on behalf of the authenticated user, using your own OAuth client credentials. There is no usage reporting, analytics, license server, or SaaS dependency outside optional OTel support for your own usage.
validate_file_path() still blocks .env* files plus common home-directory credential stores such as ~/.ssh/ and ~/.aws/ even if ALLOWED_FILE_DIRS is broadenedFull dependency tree in pyproject.toml, pinned in uv.lock.
For Legal & Procurement
This project is MIT licensed —
15 tools - search, send, draft, labels, filters, attachments
16 tools - search, create, share, import Office files
7 tools - events, free/busy, Out of Office, Focus Time
19 tools - edit, style, tables, tabs, comments, export
14 tools - ranges, tables, formatting, conditional rules
7 tools - create, batch update, thumbnails, comments
6 tools - build forms, publish, read responses
6 tools - tasks & lists with hierarchy
8 tools - people, groups, batch operations
6 tools - spaces, messages, search, reactions
2 tools - programmable web search
15 tools - write, deploy, run & debug scripts
Each page lists every tool with its tier, parameters, required scopes, and example prompts. The complete reference covers all twelve in one place.
💬 Google Chat needs a one-time Chat app configuration and a Workspace account - see the Chat setup FAQ.
Set credentials → pick a launch command → connect your client. Full walkthrough with screenshots: workspacemcp.com/quick-start
You'll need an OAuth client from Google Cloud Console in a project with the Google APIs enabled for the services you plan to use. The docs have one-click enable links for every API plus a single gcloud services enable command that covers them all, and the quick start guide walks through the whole setup in about five minutes.
Confidential Client
# 1. Credentials
export GOOGLE_OAUTH_CLIENT_ID="..."
export GOOGLE_OAUTH_CLIENT_SECRET="..."
# 2. Launch - pick a tier
uvx workspace-mcp --tool-tier core # essential tools
uvx workspace-mcp --tool-tier extended # core + management ops
uvx workspace-mcp --tool-tier complete # everything
# Or cherry-pick services
uvx workspace-mcp --tools gmail drive calendar
OAuth 2.1 (PKCE)
# 1. Credentials - MCP clients connect with PKCE and no
# secret, but Google still requires one server-side
export MCP_ENABLE_OAUTH21=true
export GOOGLE_OAUTH_CLIENT_ID="..."
export GOOGLE_OAUTH_CLIENT_SECRET="..."
# Alternatively, point GOOGLE_CLIENT_SECRET_PATH at a client_secret.json
# that contains the client id and secret (env vars take precedence).
export WORKSPACE_MCP_PORT=8000
export GOOGLE_OAUTH_REDIRECT_URI="http://localhost:${WORKSPACE_MCP_PORT}/oauth2callback"
export OAUTHLIB_INSECURE_TRANSPORT=1
# 2. Launch - OAuth 2.1 requires HTTP transport
uvx workspace-mcp --transport streamable-http --tool-tier core
Tool tiers keep context windows lean: core is the essential set, extended adds management operations, complete loads everything. Combine with --tools ..., --read-only, or per-service --permissions, and subtract individual tools with --disabled-tools ... - details in the server modes docs.
Claude Desktop, web & mobile - run the server in HTTP mode and add it as a Connector (Settings → Connectors → Add custom connector). This is the recommended path; the Connector guide has step-by-step screenshots. Legacy stdio configuration remains available for clients without Connector support - see the FAQ.
Claude Code
# Start the server in HTTP mode, then:
claude mcp add --transport http workspace-mcp http://localhost:8000/mcp
# Optional: install the bundled skill for better Workspace tool routing
ln -s "$(pwd)/skills/managing-google-workspace" ~/.claude/skills/managing-google-workspace
ChatGPT - connect via Developer Mode with the ChatGPT guide.
VS Code, LM Studio, Open WebUI, and everything else - any MCP client works over streamable HTTP (recommended) or stdio. Client-specific walkthroughs live in the guides and FAQ.
workspace-cli lists and calls tools against a running server with encrypted, disk-backed OAuth token caching - authenticate once, script forever:
uv run workspace-cli list
uv run workspace-cli call search_gmail_messages query="is:unread" max_results=5
Install globally with uv tool install . from this repo. ⚠️ Don't use uvx workspace-cli - an abandoned PyPI package squats that name.
Everything you need to run this in production lives in two places. The documentation covers auth modes and server configuration:
docker build -t workspace-mcp . && docker run -p 8000:8000 workspace-mcpThe Advanced Deployment guide covers self-hosting specifics: reverse proxy setup with WORKSPACE_EXTERNAL_URL (including the nginx Origin: null consent workaround, the WORKSPACE_MCP_ALLOW_NULL_ORIGIN_CONSENT escape hatch, and the Referrer-Policy pitfall), origin validation and VS Code webview allowlisting, credential store backends (local directory or GCS with CMEK enforcement), and the complete environment variable reference.
Production tuning is all environment variables; the names below link to their reference entries.
WORKSPACE_MCP_GOOGLE_API_WORKERS, WORKSPACE_MCP_GOOGLE_API_TIMEOUT_SECONDSWORKSPACE_MCP_TOKEN_VALIDATION_WORKERS, WORKSPACE_MCP_TOKEN_VALIDATION_CACHE_TTLWORKSPACE_MCP_MAX_FILE_BYTES, WORKSPACE_MCP_STATELESS_INLINE_MAX_BYTES, WORKSPACE_MCP_MAX_OFFICE_XML_BYTESWORKSPACE_MCP_SESSION_IDLE_TIMEOUT, WORKSPACE_MCP_READINESS_TIMEOUT_SECONDSWORKSPACE_MCP_DISABLE_LOCAL_FILES
With local files disabled, create_drive_file, update_drive_file and the import tools offer return_upload_url: the caller PUTs the bytes to the returned URL. If the file sits in a cloud-mirrored folder (Drive for desktop), copy it to a local directory first, since mirrored paths can stall mid-upload..env.oauth21For downloads, horizontally scaled or scale-to-zero HTTP deployments (Cloud Run, Kubernetes) can stage attachments in Google Cloud Storage instead of instance-local disk, whose /attachments/{id} URL may reach a different instance. Install the gcs extra and set WORKSPACE_MCP_FILES_GCS_BUCKET to a bucket name; objects are written under WORKSPACE_MCP_FILES_GCS_PREFIX (default attachments) and handed out as V4 signed URLs valid for one hour, which the client fetches straight from GCS. This also lets stateless mode return download URLs instead of inline files. stdio ignores the setting, since its client reads the local file path directly. The runtime service account needs object read and write access on the bucket — roles/storage.objectUser, or roles/storage.objectCreator plus roles/storage.objectViewer — and, without an exported private key, roles/iam.serviceAccountTokenCreator on itself so URLs can be signed through IAM. Read access is not optional: a signed URL carries the signer's authority, so without storage.objects.get the upload and the signing both succeed while the client's download fails with 403. Objects are not deleted by the server, so add a bucket lifecycle rule that removes them after a few hours.
By default this server sends no data anywhere except Google's APIs, using your own OAuth client credentials - no usage reporting, analytics, license server, or SaaS dependency. MIT licensed with no CLA, no dual licensing, and no copyleft in the dependency chain. The full security posture - scope minimization, sensitive-path blocking, stateless mode - is documented at workspacemcp.com.
A few things worth internalizing before you connect an LLM to your email:
.env, client_secret.json, or .credentials/ to source control.ALLOWED_FILE_DIRS only if you trust the client and its data sources; .env*, ~/.ssh/, ~/.aws/, and similar paths are always blocked.uv sync --group dev # install deps
uv run ruff check . # lint
uv run pytest # test
Single-file service modules live in g/, tools are registered with @server.tool decorators, and tiers are defined in core/tool_tiers.yaml. PRs welcome.
MIT - see LICENSE. The license is 21 lines and says what it means.
内容由编辑整理,部分信息来自 GitHub 与项目官网,版权归原作者所有。发现错误?报告问题