Manage events, schedules and availability across Google Calendar. Create meetings, coordinate calendars, track availability and automate scheduling workflows.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
Lists events from a calendar within an optional time range. Returns events in start-time order. Recurring events are expanded into individual instances. Use ISO 8601 for time_min/time_max: 'YYYY-MM-DDTHH:MM:SSZ' (e.g. '2026-01-08T00:00:00Z'). Defaults to events from now onwards if time_min is not specified.
Gets full details of a specific event including attendees, RSVP statuses, recurrence rules, reminders, and conferencing info.
Searches for events by text across titles, descriptions, and locations. Optionally bound the search to a time range with time_min/time_max (ISO 8601, e.g. '2026-01-08T00:00:00Z'). Without a time range the search spans all history — always use a time range for large calendars.
Gets events starting from now through the next N days. Returns events in start-time order. Recurring events are expanded into individual instances.
Gets all events scheduled for today in the given timezone. Pass the user's local timezone to get the correct day (e.g. 'America/New_York'). Defaults to UTC.
Lists all individual instances of a recurring event by its master event ID. Use this to see every occurrence of a recurring series — use get_event or list_events to find the master event ID first. Instances include recurringEventId (the master ID) and originalStartTime (the scheduled time per RRULE, which differs from start if the instance was rescheduled). Optionally filter by time range to see only upcoming or past occurrences.
Creates a new calendar event and optionally invites attendees. For timed events use ISO 8601 datetime: '2026-01-08T14:30:00' with a timezone. For all-day events set is_all_day=True and use date-only format: '2026-01-08' — for all-day events end_time is exclusive, so a single-day event on Jan 8 needs end_time='2026-01-09'. Returns the created event with its ID.
Creates an event from a natural language text description. Google Calendar parses the text to extract title, date, time, and recurrence. Examples: 'Lunch with Sarah tomorrow at noon', 'Team standup every Monday at 9am'. Returns the created event. For complex events with attendees or custom fields, use create_event instead.
Creates a recurring calendar event using an RRULE recurrence pattern. recurrence_rule must start with 'RRULE:' followed by RFC 5545 parameters. Examples: 'RRULE:FREQ=DAILY;COUNT=5', 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR', 'RRULE:FREQ=MONTHLY;BYMONTHDAY=15', 'RRULE:FREQ=YEARLY'. Returns the master recurring event — individual instances are expanded by Google Calendar.
Updates an existing calendar event. Only the fields you provide are changed — leave a field empty to keep its current value. Fetches the current event first, applies changes, then saves. Use ISO 8601 for times: 'YYYY-MM-DDTHH:MM:SS'. For recurring events: pass the master recurring event ID to change all instances, or a specific instance ID to change only that occurrence. WARNING: do not update individual instances one-by-one to change the whole series — update the master event instead. Modifying instances individually creates exceptions that clutter the calendar and trigger excessive notifications. To cancel a single instance without affecting the rest of the series, set status='cancelled'.
Adds new attendees to an existing event and sends them invitation emails. Skips emails that are already on the attendee list.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a calendar event. This action is irreversible: the event, its attendees list, reminders, and all associated data are removed immediately and cannot be recovered. Attendees will receive cancellation emails (controlled by send_updates). For recurring events: deleting the master event ID removes the entire series and all its instances. Deleting a specific instance ID removes only that one occurrence. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user the event title, date, and time that will be permanently deleted, and for recurring events clarify whether you are deleting one occurrence or the entire series, and wait for their explicit written confirmation before proceeding.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Moves a default event from one calendar to another. Only events of type 'default' can be moved — birthday, focusTime, fromGmail, outOfOffice, and workingLocation events cannot be moved and will return an error. The event is removed from the source calendar and placed in the destination calendar — any calendar-specific settings, sharing permissions, or notification rules from the source will no longer apply. While technically reversible by moving back, this can disrupt other attendees and shared calendar visibility in ways that are hard to track down. NEVER call this tool autonomously. You MUST tell the user which event is being moved, from which calendar to which, and wait for their explicit confirmation.
Lists all calendars the user has access to. Returns calendar IDs, names, timezones, colors, and access roles. Use min_access_role to filter to calendars the user can write to.
Gets full details of a specific calendar including its name, description, timezone, and color settings.
Creates a new calendar owned by the user. Returns the created calendar with its ID, which is needed for all subsequent operations on that calendar.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes an entire calendar and every event it contains. This action is irreversible: all events, recurring series, and history in the calendar are gone immediately with no way to recover them. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly which calendar will be deleted and that all its events will be permanently lost, and wait for their explicit written confirmation before proceeding.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes ALL events from a calendar without deleting the calendar itself. This action is irreversible: every event in the calendar — past, present, and future — is removed immediately with no way to recover them. The calendar itself remains and can be used for new events. This is the only way to clear the primary calendar, which cannot be deleted. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly which calendar will be cleared and that every event in it will be permanently deleted, and wait for their explicit written confirmation before proceeding.
Returns busy time blocks for one or more calendars within a time range. Use this to find when someone is available or to schedule without conflicts. Provide time_min and time_max in ISO 8601 format with timezone, e.g. '2026-01-08T09:00:00Z'. Returns a map of calendar ID → list of busy time blocks. Free time = gaps between the busy blocks within the requested range.
Google Calendar MCP Server is open source. Tell the MewCP maintainers.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
Google Calendar runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Gmail tool your agent needs.
Free to start.