mcp-gee-sweet
The Google Workspace MCP server built for depth.

Google ships its own Sheets and Docs MCP servers now (Developer Preview), but they're shallow — thin CRUD, both approval-gated. mcp-gee-sweet goes deeper: raw formula access — reads =VLOOKUP() and friends directly, structural Docs support (colspan/rowspan tables, themes, named styles, an HTML/Markdown→AST→Docs pipeline), plus complete Drive and Calendar coverage Google's preview doesn't touch at all.
A few things no other Workspace MCP has:
- Caching — repeated reads return in ~2ms from a local cache instead of a round-trip API call every time.
- Formula access — reads raw
=VLOOKUP(), =SUM(), and =IF() expressions, not just the values they produce.
- Local sync — two-way sync between a local folder and Google Drive.
Install (stable):
uvx mcp-gee-sweet
Install (bleeding edge — every code change on develop):
uvx --prerelease=allow mcp-gee-sweet
Full documentation →
What's covered
| Google Sheets | 35 | 6 | Formula access, batch read/write, 8 chart types, structural ops |
| Google Drive | 38 | — | File ops, sharing/permissions, local sync, revision history |
| Google Docs | 34 | 2 | Full HTML→Doc pipeline, tables, range styling, themes, Markdown export |
| Google Calendar | 17 | — | Event CRUD, free-slot finder across multiple calendars |
Quick start
Option A: uv — local use and development
If you cloned the repo or just want to use the server from your machine, uv is all you need. No Docker required.
git clone https://github.com/khuisman/mcp-gee-sweet.git
cd mcp-gee-sweet
uv sync
Then point your MCP client at it using stdio transport (see MCP client config below). The client spawns the server as a subprocess on demand — each session gets its own isolated process, so restarting the server for a code change or config update doesn't affect other open sessions.
Option B: Docker — persistent shared server (SSE)
Use Docker when you want a single long-running server that multiple clients connect to over SSE — for example, Claude Desktop talking to the same instance as Claude Code.
git clone https://github.com/khuisman/mcp-gee-sweet.git
cd mcp-gee-sweet
make build
make start
make logs
Point your MCP client at http://localhost:47000/sse.
Note: when using SSE, all clients share one server process. After a code change or restart (make restart), you must also restart each MCP client to reconnect.
Configuration
The server tries auth methods in a waterfall by default, OAuth first — it authenticates as you and has full personal Drive access, which is what local/dev use (Option A above) needs. For OAuth, download an OAuth Client ID JSON from GCP Console and point the server at it:
export CREDENTIALS_PATH="/path/to/credentials.json"
Service accounts (recommended for headless server deployments — see Option B above), base64 credential injection, and Application Default Credentials are also supported. See Authentication for all options.
MCP client config
Claude Desktop — stdio (cloned repo):
{
"mcpServers": {
"mcp-gee-sweet": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-gee-sweet", "mcp-gee-sweet"],
"env": {
"CREDENTIALS_PATH": "/path/to/credentials.json"
}
}
}
}
Claude Desktop — SSE (Docker):
{
"mcpServers": {
"mcp-gee-sweet": {
"transport": "sse",
"url": "http://localhost:47000/sse"
}
}
}
See Client Setup for more options including tool filtering.
Docs
Contributing
See CONTRIBUTING.md for setup, QA workflows, and PR guidelines. A signed-off docs/qa/runs/vX.Y.Z.md record is required before any stable PyPI release — see docs/qa/README.md for the QA workflow.
License
MIT — see LICENSE.
Credits