mcpField
O
outlook-calendar-automation

outlook-calendar-automation

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

关于 outlook-calendar-automation

outlook-calendar-automation 是通过 Rube MCP 和 Composio Outlook 工具包自动化 Outlook 日历操作的技能,面向安排和管理会议的工作流。它支持事件创建、查询、更新、删除,以及查找多人可用时段。

主要功能

  1. 01创建和更新日历事件
  2. 02筛选及查看事件
  3. 03删除事件或拒绝邀请
  4. 04查找会议时间
  5. 05检查日程可用性
  6. 06设置在线会议

适用场景

  1. 01安排带参会者的日历活动
  2. 02查询特定时段或主题的事件
  3. 03修改或取消会议
  4. 04协调多人可参加的会议时段

MCP 相关

该技能要求客户端连接 Rube MCP,并先调用 RUBE_SEARCH_TOOLS 获取当前工具定义。它通过 Composio 的 Outlook 工具包操作日历事件和日程。

安装

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

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

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

详细介绍

通过 Rube MCP 自动化 Outlook 日历

通过 Rube MCP 使用 Composio 的 Outlook 工具包自动执行 Outlook 日历操作。

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

先决条件

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

设置

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

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 可用
  2. 使用工具包 outlook 调用 RUBE_MANAGE_CONNECTIONS
  3. 如果连接状态不是 ACTIVE,请按照返回的身份验证链接完成 Microsoft OAuth
  4. 运行任何工作流前,确认连接状态显示为 ACTIVE

核心工作流

1. 创建日历事件

使用场景:用户想在 Outlook 日历上安排新事件

工具调用顺序:

  1. OUTLOOK_LIST_CALENDARS - 列出可用日历[可选]
  2. OUTLOOK_CALENDAR_CREATE_EVENT - 创建事件[必需]

关键参数:

  • subject:事件标题
  • start_datetime:ISO 8601 格式的开始时间(例如,'2025-01-03T10:00:00')
  • end_datetime:ISO 8601 格式的结束时间(必须晚于开始时间)
  • time_zone:IANA 或 Windows 时区(例如,'America/New_York'、'Pacific Standard Time')
  • attendees_info:电子邮件地址字符串或参会者对象数组
  • body:事件描述(纯文本或 HTML)
  • is_html:如果正文包含 HTML,则设为 true
  • location:实体地点字符串
  • is_online_meeting:如需 Teams 会议链接,则设为 true
  • online_meeting_provider:Teams 集成使用 'teamsForBusiness'
  • show_as:'free'、'tentative'、'busy'、'oof'

注意事项:

  • start_datetime 必须早于 end_datetime
  • 必须提供 time_zone,且其值必须是有效的 IANA 或 Windows 时区名称
  • 添加参会者可能会立即触发邀请邮件
  • 要生成 Teams 会议链接,必须同时设置 is_online_meeting=true 和 online_meeting_provider='teamsForBusiness'
  • user_id 默认为 'me';要访问其他用户的日历,请使用其电子邮件地址或 UUID
2. 列出和搜索事件

使用场景:用户想查找日历中的事件

工具调用顺序:

  1. OUTLOOK_GET_MAILBOX_SETTINGS - 获取用户时区,以便准确查询[前置步骤]
  2. OUTLOOK_LIST_EVENTS - 使用筛选条件搜索事件[必需]
  3. OUTLOOK_GET_EVENT - 获取特定事件的完整详情[可选]
  4. OUTLOOK_GET_CALENDAR_VIEW - 获取指定时间段内的活动事件[替代方案]

关键参数:

  • filter:OData 筛选字符串(例如,"start/dateTime ge '2024-07-01T00:00:00Z'")
  • select:要返回的属性数组
  • orderby:排序条件(例如,['start/dateTime desc'])
  • top:每页结果数(1-999)
  • timezone:结果的显示时区
  • start_datetime/end_datetime:用于 CALENDAR_VIEW 时间段查询(UTC,末尾带 Z)

注意事项:

  • OData 筛选中的日期时间值必须使用单引号并带 Z 后缀
  • 筛选事件开始时间时使用 'start/dateTime',而不是 'receivedDateTime'(该字段用于邮件)
  • 'createdDateTime' 支持 orderby/select,但不支持筛选
  • 分页:持续跟进 @odata.nextLink,直到收集完所有页面
  • 对于“今天我的日历上有什么”活动查询,CALENDAR_VIEW 更合适(包含跨越时间段的事件)
  • 对于关键词/类别筛选,LIST_EVENTS 更合适
  • 响应中的事件开始和结束时间分别嵌套在 start.dateTime 和 end.dateTime 中
3. 更新事件

适用场景:用户想要修改现有日历事件

工具调用顺序:

  1. OUTLOOK_LIST_EVENTS - 查找要更新的事件 [前置条件]
  2. OUTLOOK_UPDATE_CALENDAR_EVENT - 更新事件 [必需]

关键参数:

  • event_id:事件的唯一标识符(来自 LIST_EVENTS)
  • subject:新的事件标题(可选)
  • start_datetime/end_datetime:新的时间(可选)
  • time_zone:新时间的时区
  • attendees:更新后的与会者列表(如果提供,将替换现有列表)
  • body:更新后的描述,包含 contentType 和 content
  • location:更新后的位置

注意事项:

  • UPDATE 会将提供的字段与现有事件合并;未指定的字段会保留
  • 提供 attendees 会替换整个与会者列表;请包含所有需要的与会者
  • 提供 categories 会替换整个类别列表
  • 更新时间可能会触发向与会者重新发送通知
  • 必须提供 event_id;请先从 LIST_EVENTS 获取
4. 删除事件和拒绝邀请

适用场景:用户想要移除事件或拒绝会议邀请

工具调用顺序:

  1. OUTLOOK_DELETE_EVENT - 删除事件 [可选]
  2. OUTLOOK_DECLINE_EVENT - 拒绝会议邀请 [可选]

关键参数:

  • event_id:要删除或拒绝的事件
  • send_notifications:是否向与会者发送取消通知(默认值为 true)
  • comment:拒绝原因(用于 DECLINE_EVENT)
  • proposedNewTime:拒绝时建议的替代时间

注意事项:

  • 删除时若 send_notifications=true,会发送取消邮件
  • 拒绝时可建议新时间,开始和结束时间需采用 ISO 8601 格式
  • 删除重复事件主项会删除所有实例
  • DECLINE_EVENT 中的 sendResponse 控制是否通知组织者
5. 查找可用会议时间

适用场景:用户想要为多人查找合适的会议时段

工具调用顺序:

  1. OUTLOOK_FIND_MEETING_TIMES - 获取会议时间建议 [必需]
  2. OUTLOOK_GET_SCHEDULE - 查看特定人员的忙闲状态 [替代方案]

关键参数:

  • attendees:与会者对象数组,包含电子邮件和类型
  • meetingDuration:ISO 8601 时长(例如,1 小时为 'PT1H',30 分钟为 'PT30M')
  • timeConstraint:要在其中搜索的时间段
  • minimumAttendeePercentage:最低可信度阈值(0-100)
  • Schedules:用于 GET_SCHEDULE 的电子邮件数组
  • StartTime/EndTime:日程查询的时间范围(最长 62 天)

注意事项:

  • FIND_MEETING_TIMES 默认在工作时间内搜索;如需全天候搜索,请使用 activityDomain='unrestricted'
  • 时间约束中的时段,开始和结束时间都需要提供 dateTime 和 timeZone
  • GET_SCHEDULE 的时间范围不能超过 62 天
  • 会议建议会考虑与会者的空闲情况,但对于复杂的群组,返回的时间可能并非最优

常见模式

事件 ID 解析
1. Call OUTLOOK_LIST_EVENTS with time-bound filter
2. Find target event by subject or other criteria
3. Extract event id (e.g., 'AAMkAGI2TAAA=')
4. Use in UPDATE, DELETE, or GET_EVENT calls
日历的 OData 筛选语法

时间范围筛选:

filter: "start/dateTime ge '2024-07-01T00:00:00Z' and start/dateTime le '2024-07-31T23:59:59Z'"

主题包含:

filter: "contains(subject, 'Project Review')"

组合筛选:

filter: "contains(subject, 'Review') and categories/any(c:c eq 'Work')"
时区处理
  • 获取用户时区:使用 OUTLOOK_GET_MAILBOX_SETTINGS 并设置 select=['timeZone']
  • 筛选器的日期时间值使用一致的时区
  • 日历视图要求使用带 Z 后缀的 UTC 时间戳
  • LIST_EVENTS 筛选器的日期时间值接受时区
创建在线会议
1. Set is_online_meeting: true
2. Set online_meeting_provider: 'teamsForBusiness'
3. Create event with OUTLOOK_CALENDAR_CREATE_EVENT
4. Teams join link available in response onlineMeeting field
5. Or retrieve via OUTLOOK_GET_EVENT for the full join URL

已知注意事项

DateTime 格式:

  • 必须使用 ISO 8601 格式:'2025-01-03T10:00:00'
  • 日历视图要求使用带 Z 的 UTC 时间:'2025-01-03T10:00:00Z'
  • 筛选值需要使用单引号:"'2025-01-03T00:00:00Z'"
  • 时区不匹配会导致事件边界偏移;请务必先确认用户时区

OData 筛选错误:

  • 400 Bad Request 通常表示筛选语法有问题
  • 并非所有事件属性都支持筛选(createdDateTime 不支持)
  • 遇到 400 错误时,请调整语法或边界后重试
  • 有效的筛选字段:start/dateTime、end/dateTime、subject、categories、isAllDay

与会者管理:

  • 添加与会者会触发邀请邮件
  • 更新与会者会替换整个列表;请包含所有需要的与会者
  • 与会者类型:'required'、'optional'、'resource'
  • 日历委派会影响可访问的日历

响应结构:

  • 事件嵌套在 response.data.value 中
  • 事件时间位于 event.start.dateTime 和 event.end.dateTime
  • 日历视图可能嵌套在 data.results[i].response.data.value 中
  • 解析时请做好防护,并针对不同嵌套层级设置回退方案

快速参考

任务工具标识关键参数
创建事件OUTLOOK_CALENDAR_CREATE_EVENTsubject, start_datetime, end_datetime, time_zone
列出事件OUTLOOK_LIST_EVENTSfilter, select, top, timezone
获取事件详情OUTLOOK_GET_EVENTevent_id
日历视图OUTLOOK_GET_CALENDAR_VIEWstart_datetime, end_datetime
更新事件OUTLOOK_UPDATE_CALENDAR_EVENTevent_id, subject, start_datetime
删除事件OUTLOOK_DELETE_EVENTevent_id, send_notifications
拒绝事件OUTLOOK_DECLINE_EVENTevent_id, comment
查找会议时间OUTLOOK_FIND_MEETING_TIMESattendees, meetingDuration
获取日程安排OUTLOOK_GET_SCHEDULESchedules, StartTime, EndTime
列出日历OUTLOOK_LIST_CALENDARSuser_id
邮箱设置OUTLOOK_GET_MAILBOX_SETTINGSselect

由 Composio 提供支持

评论

支持 Markdown