Skip to content

Releases: taylorwilsdon/google_workspace_mcp

v1.0.5

04 Jul 19:36

Choose a tag to compare

Release v1.0.5

v1.0.4 - Support Comments Everywhere, env var for single user declared email

04 Jul 19:00

Choose a tag to compare

Adds support for comment retrieval, response and resolution in Google Docs, Sheets, Slides and Drive

  • USER_GOOGLE_EMAIL: Optional default email for authentication flows. If set, the LLM won't need to specify your email when calling start_google_auth.

v1.0.3

28 Jun 21:33

Choose a tag to compare

Key Changes:

  • Environment Variable Configuration:

    • You can now configure the server using GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET environment variables.
    • The credential loading priority is:
      1. Environment Variables
      2. GOOGLE_CLIENT_SECRETS path
      3. client_secret.json in the root directory.
  • Updated Authentication Flow:

  • Improved Error Handling & Logging:

    • Enhanced error messages in core/server.py and auth/oauth_callback_server.py to guide users on setting up credentials if they are missing.
    • Added logging to indicate whether credentials were loaded from environment variables or a file.

Feature: Google Docs Comment Management

This PR adds comprehensive comment management functionality to the Google Workspace MCP server.

New Tools Added:

  • `read_doc_comments` - Read all comments and replies from a Google Doc
  • `reply_to_comment` - Reply to specific comments in documents
  • `create_doc_comment` - Create new comments on documents
  • `resolve_comment` - Mark comments as resolved

Google Workspace MCP v1.0.2

19 Jun 14:49

Choose a tag to compare

Release Notes

This release introduces several enhancements, new features, and a refac for improved stability and developer experience. The highlight of this release is the introduction of centralized error handling and the ability to add attachments to calendar events.

✨ Shoutout to @nacholupotti, @georgebashi & @telenieko for their contributions!

Highlights

  • Centralized Error Handling: A new @handle_http_errors decorator has been implemented in core/utils.py:154 and applied to all Google API tools. This removes repetitive try/except blocks, standardizes API error responses, and improves overall code robustness.
  • Event Attachments in Google Calendar: The create_event tool in Google Calendar now supports adding attachments from Google Drive. You can provide file URLs or file IDs to attach documents, spreadsheets, and other files directly to your events.
  • Create Drive Files from URL: The create_drive_file tool can now fetch content from a public URL and upload it directly to Google Drive, simplifying the process of saving web content.

🚀 New Features

  • Google Calendar:
    • Added a new get_event tool to fetch the detailed information of a single calendar event by its ID.
  • Google Drive:
    • The create_drive_file tool now accepts a fileUrl parameter to create a file from a web URL.

🛠️ Improvements & Refactoring

  • Core Authentication:
    • The @require_google_service decorator has been significantly refactored for better integration with FastMCP. It now dynamically inspects function signatures to inject the Google service object, making the tool definitions cleaner and more maintainable.
  • Google Calendar:
    • The get_events tool now includes the event's end time in its output for more detailed event summaries.
  • Error Handling:
    • All tools across all services (Calendar, Chat, Docs, Drive, Forms, Gmail, Sheets, Slides) now use the new @handle_http_errors decorator, replacing local try/except blocks for HttpError.
  • Console Output:
    • The main server script main.py:45 now uses a safe_print function to prevent UnicodeEncodeError crashes, ensuring server stability with non-ASCII characters in logs or metadata.

📝 Documentation

  • Project descriptions in README.md:15 have been updated for clarity.
  • Added instructions on using the GOOGLE_CLIENT_SECRETS environment variable for custom client_secret.json locations in README.md:26.

📦 Dependencies

  • Added pyjwt>=2.10.1 to the project dependencies in pyproject.toml:4182.

v1.0.1

14 Jun 18:05

Choose a tag to compare

Release v1.0.1, update readme

What's Changed

Full Changelog: v1.0.0...v1.0.1

v1.0.0

14 Jun 17:28

Choose a tag to compare

📦 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 with

workspace-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

  1. Package rename

    pip uninstall google-workspace-mcp
    pip install workspace-mcp==1.0.0
    
  2. Entry-point

    # old
    uv run main.py
    # new
    workspace-mcp [flags]
    
  3. CLI flags changed (--transport, --single-user, --tools …).

  4. OAuth redirect URI remains http://localhost:8000/oauth2callback, but stdio mode now spins up a minimal FastAPI server automatically—remove your old oauth_callback_server work-arounds.

  5. 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

0.1.0

17 May 17:06

Choose a tag to compare

0.1.0 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: https://github.com/taylorwilsdon/google_workspace_mcp/commits/0.1.0