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 Calendarを自動化するスキルです。予定の作成・検索・更新・削除に加え、参加者の空き時間も調べられます。

主な機能

  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 を利用可能であること)
  • outlook ツールキットを指定した RUBE_MANAGE_CONNECTIONS による 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 の期間指定用(末尾に Z を付けた UTC)

注意点:

  • 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 はデフォルトで勤務時間内を検索します。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'
  • カレンダービューでは 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 を利用

コメント