outlook-calendar-automation について
outlook-calendar-automationは、ComposioのOutlookツールキットとRube MCPを介してOutlook Calendarを操作するスキルです。予定管理や会議調整に使え、認証、タイムゾーン、参加者への通知、変更時の承認についても扱います。
主な機能
- 01予定の作成・更新・削除
- 02予定とカレンダービューの検索
- 03会議候補の検索と空き状況の確認
- 04招待と参加者の管理
- 05タイムゾーンと定期予定への対応
- 06重要な変更前の承認確認
活用シーン
- 01Outlookの予定を登録
- 02指定期間内の予定を検索
- 03複数参加者の会議時間を調整
- 04通知に配慮して予定を変更またはキャンセル
MCP 対応
https://rube.app/mcpのRube MCPを通じて、ComposioのOutlookツールを検索・実行します。ワークフローの前にRUBE_SEARCH_TOOLSが利用可能で、Outlook接続が有効である必要があります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill outlook-calendar-automationインストール後、Claude Code で/outlook-calendar-automationを入力して読み込まれたか確認します。
詳細
Rube MCP を使用した Outlook カレンダーの自動化
Rube MCP 経由で Composio の Outlook ツールキットを使用し、Outlook カレンダーの操作を自動化します。
前提条件
- Rube MCP が接続されていること(
RUBE_SEARCH_TOOLSが利用可能) - ツールキット
outlookを指定したRUBE_MANAGE_CONNECTIONSによる有効な Outlook 接続 - 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出すこと
セットアップ
Rube MCP の取得:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加します。対象アカウントでは、返された接続フローを通じて認証し、必要なスコープを許可する必要があります。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確かめます- ツールキット
outlookを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクから Microsoft OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE と表示されていることを確認します
カレンダーと通知に関する権限
現在のツールスキーマを確認し、正確なメールボックス、カレンダー、イベントの発生回を特定します。検索や空き時間確認のリクエストは、招待、変更、キャンセル、辞退を許可するものではありません。これらの書き込み操作を行う前に、承認済みの宛先、内容、シリーズ全体か個別の発生回かの範囲を確認してください。これらの操作により、参加者にすぐ通知が送信される場合があります。置き換える意図がない限り、既存の参加者リストやカテゴリリストを保持してください。作成や更新が完了したか不明な場合は、再試行する前に状態を照合してください。タイムゾーンの例はアダプター固有のものとして扱い、対応しているタイムゾーン、UTC オフセット、夏時間の境界を確認してください。繰り返しイベントの各発生回や期間をまたぐイベントを展開するには、calendarView を使用します。共有するカレンダーの詳細は最小限に抑えてください。
主なワークフロー
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 が含まれる場合は 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. イベントの一覧表示と検索
使用する場面:ユーザーがカレンダーのイベントを検索したい場合
ツールの実行順序:
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 の対象期間(末尾に Z を付けた UTC)
注意点:
- OData フィルターの日時値には、シングルクォートと Z サフィックスが必要です
- イベントの開始時刻のフィルタリングには 'start/dateTime' を使用します。'receivedDateTime' は使用しないでください(これはメール用です)
- 'createdDateTime' は orderby/select には対応していますが、フィルタリングには対応していません
- ページネーション:すべてのページを取得するまで @odata.nextLink をたどってください
- 「今日のカレンダーには何があるか」といったクエリには、CALENDAR_VIEW が適しています(期間をまたぐイベントも含みます)
- キーワードやカテゴリによるフィルタリングには、LIST_EVENTS が適しています
- イベントの start/end は、レスポンス内で 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 と content を含む、更新後の説明location:更新後の場所
注意点:
- 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 はデフォルトで勤務時間内を検索します。24 時間対応にするには 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')"
タイムゾーンの処理
- ユーザーのタイムゾーンを取得:select=['timeZone'] を指定して
OUTLOOK_GET_MAILBOX_SETTINGSを実行します - フィルターの日時値には一貫したタイムゾーンを使用します
- Calendar View には、末尾に 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'
- Calendar View では、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 にあります
- Calendar View では 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 |
使用する場面
このスキルは、概要で説明されているワークフローや操作を実行する場合に適用できます。
制限事項
- このスキルは、タスクが上記の説明の範囲に明確に該当する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、成功基準が不明な場合は、作業を中止して確認してください。