google-calendar-automation
通过Rube MCP(Composio)自动化Google日历事件、日程安排、可用性检查及参会者管理。可编程创建事件、查找空闲时段、管理参会人员,并列出日历列表。
Google Calendar Automation via Rube MCP
Automate Google Calendar workflows including event creation, scheduling, availability checks, attendee management, and calendar browsing through Composio's Google Calendar toolkit.
Prerequisites
RUBE_MANAGE_CONNECTIONS with toolkit googlecalendarRUBE_SEARCH_TOOLS first to get current tool schemasSetup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit googlecalendarCore Workflows
1. Create and Manage Events
When to use: User wants to create, update, or delete calendar events
Tool sequence:
GOOGLECALENDAR_LIST_CALENDARS - Identify target calendar ID [Prerequisite]GOOGLECALENDAR_GET_CURRENT_DATE_TIME - Get current time with proper timezone [Optional]GOOGLECALENDAR_FIND_FREE_SLOTS - Check availability before booking [Optional]GOOGLECALENDAR_CREATE_EVENT - Create the event [Required]GOOGLECALENDAR_PATCH_EVENT - Update specific fields of an existing event [Alternative]GOOGLECALENDAR_UPDATE_EVENT - Full replacement update of an event [Alternative]GOOGLECALENDAR_DELETE_EVENT - Delete an event [Optional]Key parameters:
calendar_id: Use 'primary' for main calendar, or specific calendar IDstart_datetime: ISO 8601 format 'YYYY-MM-DDTHH:MM:SS' (NOT natural language)timezone: IANA timezone name (e.g., 'America/New_York', NOT 'EST' or 'PST')event_duration_hour: Hours (0+)event_duration_minutes: Minutes (0-59 only; NEVER use 60+)summary: Event titleattendees: Array of email addresses (NOT names)location: Free-form text for event locationPitfalls:
start_datetime must be ISO 8601; natural language like 'tomorrow' is rejectedevent_duration_minutes max is 59; use event_duration_hour=1 instead of event_duration_minutes=60timezone must be IANA identifier; abbreviations like 'EST', 'PST' are NOT validattendees only accepts email addresses, not names; resolve names firstexclude_organizer=true2. List and Search Events
When to use: User wants to find or browse events on their calendar
Tool sequence:
GOOGLECALENDAR_LIST_CALENDARS - Get available calendars [Prerequisite]GOOGLECALENDAR_FIND_EVENT - Search by title/keyword with time bounds [Required]GOOGLECALENDAR_EVENTS_LIST - List events in a time range [Alternative]GOOGLECALENDAR_EVENTS_INSTANCES - List instances of a recurring event [Optional]Key parameters:
query / q: Free-text search (matches summary, description, location, attendees)timeMin: Lower bound (RFC3339 with timezone offset, e.g., '2024-01-01T00:00:00-08:00')timeMax: Upper bound (RFC3339 with timezone offset)singleEvents: true to expand recurring events into instancesorderBy: 'startTime' (requires singleEvents=true) or 'updated'maxResults: Results per page (max 2500)Pitfalls:
timeMin/timeMax scans the full calendar and can be slowpageToken in response means more results; paginate until absentorderBy='startTime' requires singleEvents=true3. Manage Attendees and Invitations
When to use: User wants to add, remove, or update event attendees
Tool sequence:
GOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LIST - Find the event [Prerequisite]GOOGLECALENDAR_PATCH_EVENT - Add attendees (replaces entire attendees list) [Required]GOOGLECALENDAR_REMOVE_ATTENDEE - Remove a specific attendee by email [Required]Key parameters:
event_id: Unique event identifier (opaque string, NOT the event title)attendees: Full list of attendee emails (PATCH replaces entire list)attendee_email: Email to removesend_updates: 'all', 'externalOnly', or 'none'Pitfalls:
event_id is a technical identifier, NOT the event title; always search first to get the IDPATCH_EVENT attendees field replaces the entire list; include existing attendees to avoid removing themGMAIL_SEARCH_PEOPLE to resolve names to emails before managing attendees4. Check Availability and Free/Busy Status
When to use: User wants to find available time slots or check busy periods
Tool sequence:
GOOGLECALENDAR_LIST_CALENDARS - Identify calendars to check [Prerequisite]GOOGLECALENDAR_GET_CURRENT_DATE_TIME - Get current time with timezone [Optional]GOOGLECALENDAR_FIND_FREE_SLOTS - Find free intervals across calendars [Required]GOOGLECALENDAR_FREE_BUSY_QUERY - Get raw busy periods for computing gaps [Fallback]GOOGLECALENDAR_CREATE_EVENT - Book a confirmed slot [Required]Key parameters:
items: List of calendar IDs to check (e.g., ['primary'])time_min/time_max: Query interval (defaults to current day if omitted)timezone: IANA timezone for interpreting naive timestampscalendarExpansionMax: Max calendars (1-50)groupExpansionMax: Max members per group (1-100)Pitfalls:
GOOGLECALENDAR_FREE_BUSY_QUERY requires RFC3339 timestamps with timezoneCommon Patterns
ID Resolution
GOOGLECALENDAR_LIST_CALENDARS to enumerate all calendarsGOOGLECALENDAR_FIND_EVENT or GOOGLECALENDAR_EVENTS_LISTGMAIL_SEARCH_PEOPLETimezone Handling
GOOGLECALENDAR_GET_CURRENT_DATE_TIME to get current time in user's timezonePagination
GOOGLECALENDAR_EVENTS_LIST returns nextPageToken; iterate until absentGOOGLECALENDAR_LIST_CALENDARS also paginates; use page_tokenKnown Pitfalls
event_duration_minutes max 59; use hours for longer durationsQuick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List calendars | GOOGLECALENDAR_LIST_CALENDARS | max_results |
| Create event | GOOGLECALENDAR_CREATE_EVENT | start_datetime, timezone, summary |
| Update event | GOOGLECALENDAR_PATCH_EVENT | calendar_id, event_id, fields to update |
| Delete event | GOOGLECALENDAR_DELETE_EVENT | calendar_id, event_id |
| Search events | GOOGLECALENDAR_FIND_EVENT | query, timeMin, timeMax |
| List events | GOOGLECALENDAR_EVENTS_LIST | calendarId, timeMin, timeMax |
| Recurring instances | GOOGLECALENDAR_EVENTS_INSTANCES | calendarId, eventId |
| Find free slots | GOOGLECALENDAR_FIND_FREE_SLOTS | items, time_min, time_max, timezone |
| Free/busy query | GOOGLECALENDAR_FREE_BUSY_QUERY | timeMin, timeMax, items |
| Remove attendee | GOOGLECALENDAR_REMOVE_ATTENDEE | event_id, attendee_email |
| Get current time | GOOGLECALENDAR_GET_CURRENT_DATE_TIME | timezone |
| Get calendar | GOOGLECALENDAR_GET_CALENDAR | calendar_id |