mcpField
G
google-calendar-automation

google-calendar-automation

github.com/composiohq生产力78.3k159 次安装14 周前更新
代码仓库

关于 google-calendar-automation

这是通过 Composio 的 Google Calendar 工具包,经由 Rube MCP 自动化日历操作的技能,适用于需要管理日程和参会者的工作流。它涵盖事件管理、日历搜索与空闲时段查询。

主要功能

  1. 01创建、更新和删除事件
  2. 02搜索及浏览日历事件
  3. 03查找空闲时段
  4. 04管理参会者与邀请
  5. 05查询重复事件实例

适用场景

  1. 01预订前检查日历空闲时间
  2. 02按关键词和时间范围查找事件
  3. 03更新活动时间或参会者
  4. 04查看重复日程的各次实例

MCP 相关

通过 Rube MCP 调用 Composio 的 Google Calendar 工具包。需要先连接 Rube MCP,并启用 Google Calendar 连接。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/composiohq/awesome-claude-skills --skill google-calendar-automation

安装后在 Claude Code 中输入/google-calendar-automation确认已加载。

详细介绍

通过 Rube MCP 实现 Google Calendar 自动化

通过 Composio 的 Google Calendar 工具包,自动化 Google Calendar 工作流,包括创建日历事件、安排日程、检查可用时间、管理参会者以及浏览日历。

工具包文档:composio.dev/toolkits/googlecalendar

前提条件

  • 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
  • 通过 RUBE_MANAGE_CONNECTIONS 建立有效的 Google Calendar 连接,并使用工具包 googlecalendar
  • 务必先调用 RUBE_SEARCH_TOOLS,以获取当前工具架构

设置

获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用
  2. 使用工具包 googlecalendar 调用 RUBE_MANAGE_CONNECTIONS
  3. 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 Google OAuth
  4. 运行任何工作流之前,确认连接状态显示为 ACTIVE

核心工作流

1. 创建和管理日历事件

适用场景:用户想要创建、更新或删除日历事件

工具调用顺序:

  1. GOOGLECALENDAR_LIST_CALENDARS - 确定目标日历 ID[前置条件]
  2. GOOGLECALENDAR_GET_CURRENT_DATE_TIME - 获取包含正确时区的当前时间[可选]
  3. GOOGLECALENDAR_FIND_FREE_SLOTS - 预订前检查可用时间[可选]
  4. GOOGLECALENDAR_CREATE_EVENT - 创建日历事件[必需]
  5. GOOGLECALENDAR_PATCH_EVENT - 更新现有日历事件的指定字段[替代方案]
  6. GOOGLECALENDAR_UPDATE_EVENT - 完整替换并更新日历事件[替代方案]
  7. GOOGLECALENDAR_DELETE_EVENT - 删除日历事件[可选]

关键参数:

  • calendar_id:主日历使用 'primary',也可以使用特定日历 ID
  • start_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=60
  • timezone 必须使用 IANA 标识符;'EST'、'PST' 等缩写无效
  • attendees 只接受电子邮件地址,不接受姓名;请先解析姓名
  • 默认会创建 Google Meet 链接;个人 Gmail 账号可能会失败(系统会妥善回退)
  • 除非设置 exclude_organizer=true,否则会自动将组织者添加为参会者
2. 列出和搜索活动

使用场景:用户想查找或浏览日历中的活动

工具调用顺序:

  1. GOOGLECALENDAR_LIST_CALENDARS - 获取可用日历【前置步骤】
  2. GOOGLECALENDAR_FIND_EVENT - 按标题或关键词和时间范围搜索【必需】
  3. GOOGLECALENDAR_EVENTS_LIST - 列出某个时间范围内的活动【替代方案】
  4. 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 下午 4 点至 2026-01-19 下午 4 点
  • 省略 timeMin/timeMax 会扫描整个日历,可能导致速度变慢
  • 响应中出现 pageToken 表示还有更多结果;请翻页,直到该字段消失
  • orderBy='startTime' 需要 singleEvents=true
3. 管理参与者和邀请

使用场景:用户想添加、移除或更新活动参与者

工具调用顺序:

  1. GOOGLECALENDAR_FIND_EVENT 或 GOOGLECALENDAR_EVENTS_LIST - 查找活动【前置步骤】
  2. GOOGLECALENDAR_PATCH_EVENT - 添加参与者(会替换整个参与者列表)【必需】
  3. GOOGLECALENDAR_REMOVE_ATTENDEE - 按电子邮件地址移除指定参与者【必需】

关键参数:

  • event_id:唯一活动标识符(不透明字符串,不是活动标题)
  • attendees:参与者电子邮件地址的完整列表(PATCH 会替换整个列表)
  • attendee_email:要移除的电子邮件地址
  • send_updates:'all'、'externalOnly' 或 'none'

注意事项:

  • event_id 是技术标识符,不是活动标题;请务必先搜索以获取 ID
  • PATCH_EVENT 的 attendees 字段会替换整个列表;请包含现有参与者,以免将其移除
  • 无法解析参与者姓名;请始终使用电子邮件地址
  • 管理参与者前,请使用 GMAIL_SEARCH_PEOPLE 将姓名解析为电子邮件地址
4. 检查空闲状态和忙碌状态

使用场景:用户想查找可用时段或检查忙碌时段

工具调用顺序:

  1. GOOGLECALENDAR_LIST_CALENDARS - 确定要检查的日历【前置步骤】
  2. GOOGLECALENDAR_GET_CURRENT_DATE_TIME - 获取带时区的当前时间【可选】
  3. GOOGLECALENDAR_FIND_FREE_SLOTS - 查找多个日历中的空闲时段【必需】
  4. GOOGLECALENDAR_FREE_BUSY_QUERY - 获取原始忙碌时段,以计算空闲间隔【备用方案】
  5. GOOGLECALENDAR_CREATE_EVENT - 预订已确认的时段【必需】

关键参数:

  • items:要检查的日历 ID 列表(例如,['primary'])
  • time_min/time_max:查询时间范围(省略时默认为当天)
  • timezone:用于解析无时区时间戳的 IANA 时区
  • calendarExpansionMax:日历数量上限(1-50)
  • groupExpansionMax:每组成员数量上限(1-100)

注意事项:

  • 受 Google Calendar freeBusy API 限制,时间跨度最长约为 90 天
  • 范围过长或日历无法访问时,可能会返回空结果或无效结果
  • 只有拥有至少 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 会替换参会者:请在数组中包含所有需要的参会者,而不只是新增的参会者
  • 会议功能限制:Google Meet 在个人账号上可能无法使用(请优雅降级)
  • 速率限制:大量搜索可能触发 403/429;请在调用之间限速

快速参考

任务工具标识关键参数
列出日历GOOGLECALENDAR_LIST_CALENDARSmax_results
创建事件GOOGLECALENDAR_CREATE_EVENTstart_datetime、timezone、summary
更新事件GOOGLECALENDAR_PATCH_EVENTcalendar_id、event_id、要更新的字段
删除事件GOOGLECALENDAR_DELETE_EVENTcalendar_id、event_id
搜索事件GOOGLECALENDAR_FIND_EVENTquery、timeMin、timeMax
列出事件GOOGLECALENDAR_EVENTS_LISTcalendarId、timeMin、timeMax
重复事件实例GOOGLECALENDAR_EVENTS_INSTANCEScalendarId、eventId
查找空闲时段GOOGLECALENDAR_FIND_FREE_SLOTSitems、time_min、time_max、timezone
查询空闲/忙碌情况GOOGLECALENDAR_FREE_BUSY_QUERYtimeMin、timeMax、items
移除参会者GOOGLECALENDAR_REMOVE_ATTENDEEevent_id、attendee_email
获取当前时间GOOGLECALENDAR_GET_CURRENT_DATE_TIMEtimezone
获取日历GOOGLECALENDAR_GET_CALENDARcalendar_id

由 Composio 提供支持

评论

支持 Markdown