Google Calendar MCP Server

Full calendar control in three deliberately consolidated tools.

$ uvx workspace-mcp --tools calendar runs only the Google Calendar MCP tools — combine services as needed

Calendar is intentionally the leanest service in Workspace MCP. Three tools — list_calendars, get_events, and manage_event — cover the entire event lifecycle, because every extra tool definition costs context window and gives the model another wrong option to pick.

manage_event consolidates create, update, and delete into a single operation-style tool, which in practice makes scheduling agents noticeably more reliable than a sprawl of single-purpose endpoints.

What you can ask

  • “What does my week look like? Flag anything that conflicts with the Thursday offsite”
  • “Create a 30-minute design sync every Tuesday at 10am and invite the team”
  • “Move my Friday 1:1s to next Monday and add a reminder to each”

All 3 Google Calendar MCP tools

Tiers control how many tools the server registers: start lean with --tool-tier core and step up to extended or complete when a workflow needs more. Parameters and examples for every tool are in the API reference.

list_calendars Core Lists calendars accessible to the authenticated user.
get_events Core Retrieves events for a calendar and time range.
manage_event Core Consolidated create, update, and delete event operations.

OAuth scopes

The server requests only the scopes for the services you enable. In read-only mode it requests just the readonly variants and skips registering write tools entirely.

  • calendar.readonly list calendars and read events
  • calendar.events create and modify events
  • calendar full calendar access (implies both)

Google Calendar MCP questions

Why does Calendar only have three tools?
Deliberate design. Every registered tool consumes context window and adds a decision point for the model. Consolidating create/update/delete into manage_event keeps the schema small without dropping any capability — all three tools sit in the Core tier.
Can it see calendars shared with me, not just my own?
Yes. list_calendars returns every calendar the authenticated account can access, including shared team calendars, and get_events works against any of them by ID.
How do time ranges work for event queries?
get_events takes an explicit time window, so an assistant can ask for "this week", "next Tuesday 9–5", or a whole quarter and only pull the events that matter rather than paging through everything.