关于 outlook-calendar-automation
outlook-calendar-automation 是通过 Rube MCP 和 Composio Outlook 工具包自动化 Outlook 日历操作的技能,面向安排和管理会议的工作流。它支持事件创建、查询、更新、删除,以及查找多人可用时段。
主要功能
- 01创建和更新日历事件
- 02筛选及查看事件
- 03删除事件或拒绝邀请
- 04查找会议时间
- 05检查日程可用性
- 06设置在线会议
适用场景
- 01安排带参会者的日历活动
- 02查询特定时段或主题的事件
- 03修改或取消会议
- 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 密钥——只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS能够响应,以验证 Rube MCP 可用 - 使用工具包
outlook调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,请按照返回的身份验证链接完成 Microsoft OAuth
- 运行任何工作流前,确认连接状态显示为 ACTIVE
核心工作流
1. 创建日历事件
使用场景:用户想在 Outlook 日历上安排新事件
工具调用顺序:
OUTLOOK_LIST_CALENDARS- 列出可用日历[可选]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,则设为 truelocation:实体地点字符串is_online_meeting:如需 Teams 会议链接,则设为 trueonline_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. 列出和搜索事件
使用场景:用户想查找日历中的事件
工具调用顺序:
OUTLOOK_GET_MAILBOX_SETTINGS- 获取用户时区,以便准确查询[前置步骤]OUTLOOK_LIST_EVENTS- 使用筛选条件搜索事件[必需]OUTLOOK_GET_EVENT- 获取特定事件的完整详情[可选]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. 更新事件
适用场景:用户想要修改现有日历事件
工具调用顺序:
OUTLOOK_LIST_EVENTS- 查找要更新的事件 [前置条件]OUTLOOK_UPDATE_CALENDAR_EVENT- 更新事件 [必需]
关键参数:
event_id:事件的唯一标识符(来自 LIST_EVENTS)subject:新的事件标题(可选)start_datetime/end_datetime:新的时间(可选)time_zone:新时间的时区attendees:更新后的与会者列表(如果提供,将替换现有列表)body:更新后的描述,包含 contentType 和 contentlocation:更新后的位置
注意事项:
- UPDATE 会将提供的字段与现有事件合并;未指定的字段会保留
- 提供
attendees会替换整个与会者列表;请包含所有需要的与会者 - 提供
categories会替换整个类别列表 - 更新时间可能会触发向与会者重新发送通知
- 必须提供
event_id;请先从 LIST_EVENTS 获取
4. 删除事件和拒绝邀请
适用场景:用户想要移除事件或拒绝会议邀请
工具调用顺序:
OUTLOOK_DELETE_EVENT- 删除事件 [可选]OUTLOOK_DECLINE_EVENT- 拒绝会议邀请 [可选]
关键参数:
event_id:要删除或拒绝的事件send_notifications:是否向与会者发送取消通知(默认值为 true)comment:拒绝原因(用于 DECLINE_EVENT)proposedNewTime:拒绝时建议的替代时间
注意事项:
- 删除时若
send_notifications=true,会发送取消邮件 - 拒绝时可建议新时间,开始和结束时间需采用 ISO 8601 格式
- 删除重复事件主项会删除所有实例
- DECLINE_EVENT 中的
sendResponse控制是否通知组织者
5. 查找可用会议时间
适用场景:用户想要为多人查找合适的会议时段
工具调用顺序:
OUTLOOK_FIND_MEETING_TIMES- 获取会议时间建议 [必需]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_EVENT | subject, start_datetime, end_datetime, time_zone |
| 列出事件 | OUTLOOK_LIST_EVENTS | filter, select, top, timezone |
| 获取事件详情 | OUTLOOK_GET_EVENT | event_id |
| 日历视图 | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |
| 更新事件 | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime |
| 删除事件 | OUTLOOK_DELETE_EVENT | event_id, send_notifications |
| 拒绝事件 | OUTLOOK_DECLINE_EVENT | event_id, comment |
| 查找会议时间 | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration |
| 获取日程安排 | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime |
| 列出日历 | OUTLOOK_LIST_CALENDARS | user_id |
| 邮箱设置 | OUTLOOK_GET_MAILBOX_SETTINGS | select |
由 Composio 提供支持
评论
支持 Markdown