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 でツールキット googlecalendar を指定した、有効な Google Calendar 接続
  • 現在のツールスキーマを取得するため、必ず最初に RUBE_SEARCH_TOOLS を呼び出すこと

セットアップ

Rube MCP を入手する:クライアントの設定で https://rube.app/mcp を MCP サーバーとして追加します。API キーは不要です。エンドポイントを追加するだけで使用できます。

  1. RUBE_SEARCH_TOOLS が応答することを確認し、Rube MCP が利用可能であることを確認します
  2. RUBE_MANAGE_CONNECTIONS をツールキット googlecalendar で呼び出します
  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_minutes=60 の代わりに event_duration_hour=1 を使用してください
  • 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 4pm から 2026-01-19 4pm までの範囲になります
  • 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 の出席者フィールドはリスト全体を置き換えます。既存の出席者を削除しないよう、既存の出席者も含めてください
  • 出席者名からメールアドレスを特定することはできません。必ずメールアドレスを使用してください
  • 出席者を管理する前に、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 提供

コメント