MCP Client Setup¶
Claude Desktop¶
Add a block under mcpServers in claude_desktop_config.json. Choose stdio (cloned repo) or SSE (Docker).
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",
"TOKEN_PATH": "/path/to/token.json"
}
}
}
}
Replace /path/to/mcp-gee-sweet with your clone path. This uses OAuth (the default waterfall's first method, full personal Drive access) — swap the env block for a different auth method — see Authentication.
Before the first connection, log in once from a terminal with the same paths: CREDENTIALS_PATH=... TOKEN_PATH=... uv run --directory /path/to/mcp-gee-sweet mcp-gee-sweet auth. A stdio server with no token doesn't open a browser itself. It starts without Google access, and its first tool call offers you the Google consent link, or you can run this command and retry (see Re-authorizing from the client).
SSE — Docker¶
The container serves over the network interface, so it needs a bearer token (see HTTP transport authentication). Put MCP_SERVER_TOKEN=<token> in a .env file next to docker-compose.yml, start the server (make start), then point Claude Desktop at the SSE endpoint with the same token:
{
"mcpServers": {
"mcp-gee-sweet": {
"transport": "sse",
"url": "http://localhost:47000/sse",
"headers": {
"Authorization": "Bearer <token>"
}
}
}
}
For Claude Code: claude mcp add --transport sse mcp-gee-sweet http://localhost:47000/sse --header "Authorization: Bearer <token>".
Claude Code (this project's own MCP config)¶
The project runs two instances — one OAuth, one service account — defined in .mcp.json at the repo root. Claude Code picks these up automatically when you open the project.
Tool filtering in client config¶
To restrict tools at the client level, pass --include-tools as a CLI arg:
{
"mcpServers": {
"mcp-gee-sweet": {
"command": "uv",
"args": [
"run", "--directory", "/path/to/mcp-gee-sweet",
"mcp-gee-sweet",
"--include-tools", "get_sheet_data,update_cells,list_sheets,list_spreadsheets"
],
"env": {
"CREDENTIALS_PATH": "/path/to/credentials.json",
"TOKEN_PATH": "/path/to/token.json"
}
}
}
}
See Configuration for suggested subsets.
Finding Google IDs¶
Google Drive Folder:
https://drive.google.com/drive/folders/1xcRQCU9xrNVBPTeNzHqx4hrG7yR91WIa
└────────── Folder ID ──────────┘
Google Sheets Spreadsheet:
https://docs.google.com/spreadsheets/d/25_-_raTaKjaVxu9nJzA7-FCrNhnkd3cXC54BPAOXemI/edit
└───────────── Spreadsheet ID ─────────────┘
Google Docs Document:
https://docs.google.com/document/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit
└─────────────── Document ID ──────────────┘
Google Calendar:
Settings → [Calendar name] → Calendar ID (e.g. abc@group.calendar.google.com)