Google Workspace MCP — Gmail, Calendar, Drive, Docs
Wednesday vede în Gmail, scrie pe Calendar, caută în Drive, citeşte Docs, modifică Sheets — toate prin contul tău Google ([email protected] şi conturile linked). MCP-ul ăsta e cea mai capabilă punte cu viaţa reală (afară de TickTick).
Ce face
Server Python care wrapps gws CLI (Google Workspace CLI) + apeluri directe Python la API-urile Google. Suportă OAuth full pentru toate serviciile Google clasice. Refresh token-ul stă local, deci după primul login nu mai trebuie să te autentifici interactiv.
Mai există un al doilea client OAuth pentru Home Assistant (web client type, separate). Vezi google_workspace_ha.env — alt scope, alt URL de redirect, dar acelaşi proiect Google Cloud.
Tool-uri exposed
Gmail
gmail_search <query>— Gmail search syntax (from:,subject:,is:unread, etc.)gmail_list_messages— listă recentegmail_get_message <id>— corpul + headersgmail_label_message <id> <label>— apply labelgmail_list_labels
Calendar
calendar_list_calendars— toate calendarele (primary + shared)calendar_list_events <calendar_id> <time_range>— eventuri în intervalcalendar_search_events <query>— caută peste toatecalendar_create_event <calendar_id> <event>— adaugă event
Drive
drive_list_files <query>— listă cu query opţionaldrive_search_files <query>— căutare full-text + metadatadrive_get_file_metadata <id>— info despre fişier
Maps / Traffic (bonus, prin acelaşi project)
traffic_eta <origin> <destination> <departure_time>— ETA cu trafictraffic_compare_routes <origin> <destination>— alegere între rute
Exemple de prompts
- “Wednesday, am vreun email nou cu factură din ultima săptămână?” →
gmail_search query="invoice newer_than:7d is:unread" - “Ce am pe calendar mâine?” →
calendar_list_events time_range="tomorrow" - “Adaugă pe calendar ‘Coffee with Andrei’ joi 18:00” →
calendar_create_event - “Caută în Drive după ‘tax return 2025’” →
drive_search_files - “Cât face de la mine la birou acum?” →
traffic_eta(dacă ai un origin/destination set) - “Marchează emailul ăsta ca Important” →
gmail_label_message
Credenţiale
_infra/config/.credentials/google_workspace_mcp.env (simlink din _infra/mcp/servers/google-workspace/.env).
Conţine:
- OAuth client_id + client_secret (Desktop App OAuth, project 155798281545)
GOOGLE_REFRESH_TOKEN— refresh token long-lived- Scope-uri:
gmail.modify,calendar,drive.readonly,docs,sheets
Al doilea OAuth (Web Client, pentru Home Assistant): google_workspace_ha.env — DIFERIT, separat.
Maps/Traffic API key: shared cu YouTube Data API (youtube_api.env → GOOGLE_MAPS_API_KEY — acelaşi proiect Google Cloud).
Sub-skill-ul google-workspace
Pentru flow-uri rapide din Telegram/CLI există skill-ul google-workspace (separat de MCP) care expune comenzi via gws CLI direct. MCP-ul e pentru când Wednesday alege singură ce tool, skill-ul e pentru când vrei o comandă scurtă.
Gotchas
- Refresh token-ul expiră dacă nu e folosit ≥6 luni — atunci trebuie re-auth interactiv. Wednesday îţi spune când vede error.
- Gmail rate limit — 250 quota units/user/second. Dacă faci 100+
gmail_searchrapid, primeşti 429. Wednesday backoff automat. - Drive results sunt limitate la 100/page default — pentru searches mari, foloseşte paginaţia (
page_tokenîn response) - Calendar create_event vrea ISO 8601 timezones — “thursday 18:00 Europe/Bucharest” trebuie convertit. Wednesday face conversia, dar dacă vezi event scheduled la oră ciudată, e UTC mismatch.
- NU folosi pentru bulk-send email — există email-send MCP separat (iCloud SMTP,
email_send_mcp.env) pentru asta. Politica de outbound default e iCloud [email protected], nu Gmail (vezifeedback_email_outbound_policyîn memorie). - Scope-ul
gmail.modifypermite delete — Wednesday nu va şterge fără confirmare explicită, dar capability-ul e acolo - HA OAuth client (web) NU se foloseşte din Claude Code — e pentru Home Assistant integrations. Nu confunda.