📦 Release v1.0.0 – Streamable-HTTP & Single-User Edition
(package name 302 google-workspace-mcp
, now workspace-mcp
due to pypi name conflict)
A major overhaul that graduates the project from PoC to a production-ready MCP server with first-class Streamable-HTTP support, richer Google Workspace coverage, and a revamped developer experience.
🔧 Expanded Toolset (v1.0.0)
Service | Icon | Key Capabilities |
---|---|---|
Google Sheets | 📊 | Read / write ranges, create spreadsheets, add sheets, batch updates, formatting helpers |
Google Slides | 🖼️ | Create presentations, insert slides, update text & images, export to PDF |
Google Forms | 📝 | Create forms, get & list responses, adjust publish / auth settings |
Google Chat | 💬 | List spaces, fetch messages, send or search chat history |
All new modules live under
g{service}/
(e.g.gsheets/sheets_tools.py
) and are auto-registered when you start the server withworkspace-mcp --tools sheets slides forms chat
🚀 Highlights
Area | What’s New |
---|---|
Transport Layer | Supports everything, Stdio, Streamable-HTTP is now a first-class citizen (SSE fallback kept). Unified CLI flag --transport [stdio|streamable-http]. |
Docker | Completely rebuilt Dockerfile• Debian Slim base → smaller image• System deps & uv pre-installed for blazing-fast lockfile installs• Health-checks, non-root user, debug hooks |
Auth | New transport-aware OAuth callback server• Works in both stdio & HTTP modes• Centralised HTML success/error templates• auth/google_auth.py refactor → cleaner caching, PKCE refresh, single-user shortcut |
Single-User Mode | --single-user (or MCP_SINGLE_USER_MODE=1) lets you bypass per-session state and reuse any creds in .credentials/. Perfect for desktop assistants. |
Tooling | install_claude.py one-liner auto-wires the server into Claude Desktop. |
CLI & Logging | Rich argparse interface, coloured startup banner, credential-directory pre-flight, file + console logging split by level. |
Docs | README completely rewritten: clearer quick-start, animated demo, new badges, expanded tool matrix (Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Chat). |
Packaging | • Package renamed to workspace-mcp • Version bumped to 1.0.0 • workspace-mcp entry-point script • pyproject.toml now PEP 621 + curated classifiers |
Cleanup | Removed legacy auth/oauth_manager.py; many files reorganised for clarity. |
💥 Breaking Changes
-
Package rename
pip uninstall google-workspace-mcp pip install workspace-mcp==1.0.0
-
Entry-point
# old uv run main.py # new workspace-mcp [flags]
-
CLI flags changed (
--transport
,--single-user
,--tools …
). -
OAuth redirect URI remains
http://localhost:8000/oauth2callback
, but stdio mode now spins up a minimal FastAPI server automatically—remove your oldoauth_callback_server
work-arounds. -
Docker users: rebuild with
docker build -t workspace-mcp:1.0 .
(old image tags won’t work).
See Migration Guide below for one-liner updates.
📝 Detailed Changelog — v1.0.0
➕ Added
File / Feature | Purpose |
---|---|
auth/oauth_callback_server.py | Lightweight HTTP callback server for OAuth when running in stdio mode. |
auth/oauth_responses.py | Re-usable HTML templates for OAuth success / error pages. |
install_claude.py | One-command installer that wires the server into Claude Desktop. |
New CLI flags | --single-user, --transport, --tools for fine-grained startup control. |
Docker | Health-check endpoint, non-root user, and credential-directory safety check. |
➖ Removed
-
auth/oauth_manager.py
— logic merged into the new auth modules.
🛠️ Migration Guide
# 1 — Upgrade package pip install -U workspace-mcp
2 — (If using Docker) rebuild image
docker build -t workspace-mcp:1.0 .
3 — Use the new entry-point
workspace-mcp --transport streamable-http # or omit flag for stdio
4 — (Optional) Single-user desktop mode
export MCP_SINGLE_USER_MODE=1
5 — (Re)generate uv.lock if you track lockfiles
uv lock # first-time create
uv lock --upgrade # refresh to latest allowed versions
🔒 Security Notes
-
Credentials now include
expiry
timestamps; stale refresh tokens trigger re-auth gracefully. -
.credentials/
directory check prevents container failures due to volume-permission mismatches. -
OAuth callback still defaults to HTTP on localhost—remember to switch to HTTPS in production.
🙏 Acknowledgements
Huge thanks to everyone who provided early feedback, especially testing Streamable-HTTP convergence with Claude Desktop.
Happy building!
— @taylorwilsdon / workspace-mcp team