名称: 谷歌日历自动化 描述: 通过Rube MCP (Composio)自动化谷歌日历事件、日程安排、可用性检查和参与者管理。程序化创建事件、查找空闲时段、管理参与者和列出日历。 要求: mcp: [rube]
通过Rube MCP的谷歌日历自动化
通过Composio的谷歌日历工具包,自动化谷歌日历工作流,包括事件创建、日程安排、可用性检查、参与者管理和日历浏览。
前提条件
- Rube MCP必须连接(RUBE_SEARCH_TOOLS可用)
- 通过
RUBE_MANAGE_CONNECTIONS与工具包googlecalendar建立活跃的谷歌日历连接 - 始终先调用
RUBE_SEARCH_TOOLS以获取当前工具模式
设置
获取Rube MCP:在客户端配置中添加https://rube.app/mcp作为MCP服务器。无需API密钥——只需添加端点即可工作。
- 确认Rube MCP可用,通过验证
RUBE_SEARCH_TOOLS响应 - 使用工具包
googlecalendar调用RUBE_MANAGE_CONNECTIONS - 如果连接未激活,请遵循返回的认证链接完成谷歌OAuth
- 在运行任何工作流前,确认连接状态显示为活跃
核心工作流
1. 创建和管理事件
使用时机:用户想要创建、更新或删除日历事件
工具序列:
GOOGLECALENDAR_LIST_CALENDARS- 识别目标日历ID [前提]GOOGLECALENDAR_GET_CURRENT_DATE_TIME- 获取当前时间及正确时区 [可选]GOOGLECALENDAR_FIND_FREE_SLOTS- 预订前检查可用性 [可选]GOOGLECALENDAR_CREATE_EVENT- 创建事件 [必需]GOOGLECALENDAR_PATCH_EVENT- 更新现有事件的特定字段 [替代]GOOGLECALENDAR_UPDATE_EVENT- 完整替换更新事件 [替代]GOOGLECALENDAR_DELETE_EVENT- 删除事件 [可选]
关键参数:
calendar_id:使用’primary’表示主日历,或特定日历IDstart_datetime:ISO 8601格式 ‘YYYY-MM-DDTHH:MM:SS’(不接受自然语言)timezone:IANA时区名称(例如’America/New_York’,不接受’EST’或’PST’)event_duration_hour:小时数(0+)event_duration_minutes:分钟数(0-59;切勿使用60+)summary:事件标题attendees:电子邮件地址数组(不接受名称)location:事件位置的自由文本
常见陷阱:
start_datetime必须是ISO 8601;自然语言如’tomorrow’被拒绝event_duration_minutes最大为59;使用event_duration_hour=1代替event_duration_minutes=60timezone必须是IANA标识符;缩写如’EST’、'PST’无效attendees只接受电子邮件地址,不接受名称;先解析名称- 谷歌Meet链接创建默认为真;个人Gmail账户可能失败(优雅降级)
- 组织者自动添加为参与者,除非
exclude_organizer=true
2. 列出和搜索事件
使用时机:用户想要查找或浏览日历上的事件
工具序列:
GOOGLECALENDAR_LIST_CALENDARS- 获取可用日历 [前提]GOOGLECALENDAR_FIND_EVENT- 通过标题/关键词和时间边界搜索 [必需]GOOGLECALENDAR_EVENTS_LIST- 列出时间范围内的事件 [替代]GOOGLECALENDAR_EVENTS_INSTANCES- 列出重复事件的实例 [可选]
关键参数:
query/q:自由文本搜索(匹配摘要、描述、位置、参与者)timeMin:下限(RFC3339带时区偏移,例如’2024-01-01T00:00:00-08:00’)timeMax:上限(RFC3339带时区偏移)singleEvents:true以将重复事件扩展为实例orderBy:‘startTime’(需要singleEvents=true)或’updated’maxResults:每页结果数(最大2500)
常见陷阱:
- 时区警告:UTC时间戳(以’Z’结尾)不与本地日期对齐;使用本地时区偏移代替
- 示例:'2026-01-19T00:00:00Z’在PST中覆盖2026-01-18 4pm到2026-01-19 4pm
- 省略
timeMin/timeMax扫描整个日历,可能较慢 - 响应中的
pageToken表示更多结果;分页直到缺失 orderBy='startTime'要求singleEvents=true
3. 管理参与者和邀请
使用时机:用户想要添加、删除或更新事件参与者
工具序列:
GOOGLECALENDAR_FIND_EVENT或GOOGLECALENDAR_EVENTS_LIST- 查找事件 [前提]GOOGLECALENDAR_PATCH_EVENT- 添加参与者(替换整个参与者列表) [必需]GOOGLECALENDAR_REMOVE_ATTENDEE- 通过电子邮件删除特定参与者 [必需]
关键参数:
event_id:唯一事件标识符(不透明字符串,非事件标题)attendees:参与者电子邮件完整列表(PATCH替换整个列表)attendee_email:要删除的电子邮件send_updates:‘all’、‘externalOnly’或’none’
常见陷阱:
event_id是技术标识符,非事件标题;始终先搜索获取IDPATCH_EVENT的attendees字段替换整个列表;包括现有参与者以避免删除- 参与者名称无法解析;始终使用电子邮件地址
- 在管理参与者前,使用
GMAIL_SEARCH_PEOPLE解析名称到电子邮件
4. 检查可用性和繁忙状态
使用时机:用户想要查找可用时间段或检查繁忙时段
工具序列:
GOOGLECALENDAR_LIST_CALENDARS- 识别要检查的日历 [前提]GOOGLECALENDAR_GET_CURRENT_DATE_TIME- 获取当前时间及时区 [可选]GOOGLECALENDAR_FIND_FREE_SLOTS- 查找日历间的空闲间隔 [必需]GOOGLECALENDAR_FREE_BUSY_QUERY- 获取原始繁忙时段以计算间隙 [备用]GOOGLECALENDAR_CREATE_EVENT- 预订确认时段 [必需]
关键参数:
items:要检查的日历ID列表(例如[‘primary’])time_min/time_max:查询间隔(省略时默认为当前日期)timezone:IANA时区,用于解释简单时间戳calendarExpansionMax:最大日历数(1-50)groupExpansionMax:每组最大成员数(1-100)
常见陷阱:
- 最大跨度约90天,受谷歌日历freeBusy API限制
- 非常长的范围或不可访问的日历导致空/无效结果
- 只有至少freeBusyReader访问权限的日历可见
- 空闲时段响应可能标准化为UTC(‘Z’);检查偏移
GOOGLECALENDAR_FREE_BUSY_QUERY需要带时区的RFC3339时间戳
常用模式
ID解析
- 日历名称 -> calendar_id:
GOOGLECALENDAR_LIST_CALENDARS枚举所有日历 - 事件标题 -> event_id:
GOOGLECALENDAR_FIND_EVENT或GOOGLECALENDAR_EVENTS_LIST - 参与者名称 -> 电子邮件:
GMAIL_SEARCH_PEOPLE
时区处理
- 始终使用IANA时区标识符(例如’America/Los_Angeles’)
- 使用
GOOGLECALENDAR_GET_CURRENT_DATE_TIME获取用户时区的当前时间 - 查询本地日期的事件时,使用带本地偏移的时间戳,非UTC
- 示例:PST使用’2026-01-19T00:00:00-08:00’,非’2026-01-19T00:00:00Z’
分页
GOOGLECALENDAR_EVENTS_LIST返回nextPageToken;迭代直到缺失GOOGLECALENDAR_LIST_CALENDARS也分页;使用page_token
已知陷阱
- 自然语言日期:不支持;所有日期必须是ISO 8601或RFC3339
- 时区不匹配:UTC时间戳不与本地日期过滤对齐
- 时长限制:
event_duration_minutes最大59;使用小时表示更长时长 - 仅IANA时区:‘EST’、‘PST’等无效;使用’America/New_York’
- 事件ID不透明:始终搜索获取event_id;切勿猜测或构造
- 参与者作为电子邮件:不能使用名称;用GMAIL_SEARCH_PEOPLE解析
- PATCH替换参与者:数组中包含所有期望参与者,非仅新参与者
- 会议限制:谷歌Meet在个人账户上可能失败(优雅降级)
- 速率限制:高容量搜索可能触发403/429;在调用间节流
快速参考
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 列出日历 | GOOGLECALENDAR_LIST_CALENDARS |
max_results |
| 创建事件 | GOOGLECALENDAR_CREATE_EVENT |
start_datetime, timezone, summary |
| 更新事件 | GOOGLECALENDAR_PATCH_EVENT |
calendar_id, event_id, 要更新的字段 |
| 删除事件 | GOOGLECALENDAR_DELETE_EVENT |
calendar_id, event_id |
| 搜索事件 | GOOGLECALENDAR_FIND_EVENT |
query, timeMin, timeMax |
| 列出事件 | GOOGLECALENDAR_EVENTS_LIST |
calendarId, timeMin, timeMax |
| 重复实例 | GOOGLECALENDAR_EVENTS_INSTANCES |
calendarId, eventId |
| 查找空闲时段 | GOOGLECALENDAR_FIND_FREE_SLOTS |
items, time_min, time_max, timezone |
| 繁忙查询 | GOOGLECALENDAR_FREE_BUSY_QUERY |
timeMin, timeMax, items |
| 移除参与者 | GOOGLECALENDAR_REMOVE_ATTENDEE |
event_id, attendee_email |
| 获取当前时间 | GOOGLECALENDAR_GET_CURRENT_DATE_TIME |
timezone |
| 获取日历 | GOOGLECALENDAR_GET_CALENDAR |
calendar_id |