mcpField
G
google-calendar-automation

google-calendar-automation

github.com/davepoon生产力3.7k136 次安装2 天前更新
代码仓库

关于 google-calendar-automation

google-calendar-automation 是通过 Composio 的 Google Calendar 工具包自动处理日历工作的技能,涵盖事件操作、搜索、参会者管理和空闲时间查询,并通过 Rube MCP 使用这些能力。

主要功能

  1. 01创建、更新和删除事件
  2. 02搜索和浏览日历事件
  3. 03管理事件参会者
  4. 04查询空闲时段和忙碌时间

适用场景

  1. 01查询空闲时间后安排事件
  2. 02按时间范围查找事件
  3. 03添加或移除事件受邀者

MCP 相关

通过 Rube MCP 访问 Composio 的 Google Calendar 工具包。运行工作流前需连接 Rube MCP,并启用 Google Calendar 账户连接。

安装

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

$npx skills add https://github.com/davepoon/buildwithclaude --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