cal-com-automation について
Rube MCP と Composio の Cal ツールキットを通じて、Cal.com のスケジュール管理を自動化するスキルです。予約、空き時間、チーム、Webhook を扱うユーザー向けで、予約の検索や作成などに対応します。
主な機能
- 01ステータスや日付による予約の絞り込み
- 02多忙時間と予約可能枠の確認
- 03予約リクエストの作成
- 04Webhook の参照・更新・削除
- 05チームとイベントタイプの閲覧
活用シーン
- 01期間を指定した予約可能枠の検索
- 02選択した枠での予約作成
- 03予約イベント通知用Webhookの管理
- 04チームとチームのイベントタイプの確認
MCP 対応
Rube MCP 経由で Cal.com のツールを使用します。利用には Cal.com 接続が必要で、RUBE_SEARCH_TOOLS から最新のツールスキーマを取得します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill cal-com-automationインストール後、Claude Code で/cal-com-automationを入力して読み込まれたか確認します。
詳細
Rube MCP を使用した Cal.com の自動化
Rube MCP を通じて Composio の Cal ツールキットを利用し、Cal.com のスケジュール管理操作を自動化します。
ツールキットのドキュメント: composio.dev/toolkits/cal
前提条件
- Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能)
RUBE_MANAGE_CONNECTIONSでツールキットcalを指定した、有効な Cal.com 接続- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出してください
セットアップ
Rube MCP を入手する: クライアント設定で https://rube.app/mcp を MCP サーバーとして追加してください。API キーは不要です。エンドポイントを追加するだけで動作します。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確認します- ツールキット
calを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクを開いて Cal.com の認証を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE と表示されていることを確認します
主なワークフロー
1. 予約を管理する
使用する場合: ユーザーが予約の一覧表示、作成、または確認を希望するとき
ツールの実行順序:
CAL_FETCH_ALL_BOOKINGS- フィルターを指定してすべての予約を一覧表示します[必須]CAL_POST_NEW_BOOKING_REQUEST- 新しい予約を作成します[任意]
一覧表示の主なパラメーター:
status: 予約ステータスで絞り込みます('upcoming'、'recurring'、'past'、'cancelled'、'unconfirmed')afterStart: この日付以降に開始する予約で絞り込みます(ISO 8601)beforeEnd: この日付以前に終了する予約で絞り込みます(ISO 8601)
作成時の主なパラメーター:
eventTypeId: 予約のイベントタイプ IDstart: 予約の開始時刻(ISO 8601)end: 予約の終了時刻(ISO 8601)name: 参加者の名前email: 参加者のメールアドレスtimeZone: 参加者のタイムゾーン(IANA 形式)language: 参加者の言語コードmetadata: 追加のメタデータオブジェクト
注意点:
- 日付フィルターには、タイムゾーンを含む ISO 8601 形式を使用します(例: '2024-01-15T09:00:00Z')
eventTypeIdは、有効でアクティブなイベントタイプを参照している必要があります- 予約を作成するには、空き枠に一致させる必要があります。先に空き状況を確認してください
- タイムゾーンには、有効な IANA タイムゾーン文字列を指定する必要があります(例: 'America/New_York')
- ステータスフィルターには指定された文字列を使用します。無効な値を指定すると、結果は空になります
2. 空き状況を確認する
使用する場合: ユーザーが空き時間や予約可能な枠を確認したいとき
ツールの実行順序:
CAL_RETRIEVE_CALENDAR_BUSY_TIMES- 予定が入っている時間帯を取得します[必須]CAL_GET_AVAILABLE_SLOTS_INFO- 具体的な空き枠を取得します[必須]
主なパラメーター:
dateFrom: 空き状況を確認する開始日(YYYY-MM-DD)dateTo: 空き状況を確認する終了日(YYYY-MM-DD)eventTypeId: 空き枠を確認するイベントタイプtimeZone: 空き状況のレスポンスに使用するタイムゾーンloggedInUsersTz: リクエストしたユーザーのタイムゾーン
注意点:
- 予定が入っている時間帯は、ユーザーが利用できない時間を示します
- 空き枠は、イベントタイプの所要時間と設定によって異なります
- 正確な結果を得るには、妥当な日付範囲を指定してください(数か月先まで指定しないでください)
- タイムゾーンによって空き枠の表示が変わるため、必ず明示的に指定してください
- 空き状況には、カレンダー連携(Google Calendar、Outlook など)が反映されます
3. Webhook を設定する
使用するタイミング:予約イベントの Webhook 通知を設定または管理する場合
ツールの順序:
CAL_RETRIEVE_WEBHOOKS_LIST- 既存の Webhook を一覧表示します[必須]CAL_GET_WEBHOOK_BY_ID- 特定の Webhook の詳細を取得します[任意]CAL_UPDATE_WEBHOOK_BY_ID- Webhook の設定を更新します[任意]CAL_DELETE_WEBHOOK_BY_ID- Webhook を削除します[任意]
主なパラメーター:
id:GET/UPDATE/DELETE 操作で使用する Webhook IDsubscriberUrl:Webhook エンドポイントの URLeventTriggers:トリガー対象のイベントタイプの配列active:Webhook が有効かどうかsecret:Webhook 署名用シークレット
注意点:
- Webhook URL は、インターネットからアクセス可能な HTTPS エンドポイントである必要があります
- イベントトリガーには、'BOOKING_CREATED'、'BOOKING_RESCHEDULED'、'BOOKING_CANCELLED' などがあります
- 無効な Webhook は実行されません。
activeを切り替えて有効化/無効化してください - Webhook シークレットは、ペイロードの署名検証に使用します
4. チームを管理する
使用するタイミング:チームやチームのイベントタイプを作成、表示、管理する場合
ツールの順序:
CAL_GET_TEAMS_LIST- すべてのチームを一覧表示します[必須]CAL_GET_TEAM_INFORMATION_BY_TEAM_ID- 特定のチームの詳細を取得します[任意]CAL_CREATE_TEAM_IN_ORGANIZATION- 新しいチームを作成します[任意]CAL_RETRIEVE_TEAM_EVENT_TYPES- チームのイベントタイプを一覧表示します[任意]
主なパラメーター:
teamId:チーム識別子name:チーム名(作成時)slug:URL で使用できるチーム識別子
注意点:
- チームの作成には、組織レベルの権限が必要な場合があります
- チームのイベントタイプは、個人のイベントタイプとは別です
- チームのスラッグは、URL で使用できる形式で、組織内で一意である必要があります
5. 組織を管理する
使用するタイミング:組織の詳細を表示する場合
ツールの順序:
CAL_GET_ORGANIZATION_ID- 組織 ID を取得します[必須]
主なパラメーター:(必須のものはありません)
注意点:
- チームの作成や組織レベルの操作には、組織 ID が必要です
- Cal.com のすべてのアカウントに組織があるとは限りません。個人プランではエラーが返される場合があります
一般的なパターン
予約作成のフロー
1. Call CAL_GET_AVAILABLE_SLOTS_INFO to find open slots
2. Present available times to the user
3. Call CAL_POST_NEW_BOOKING_REQUEST with selected slot
4. Confirm booking creation response
ID の解決
チーム名 -> チーム ID:
1. Call CAL_GET_TEAMS_LIST
2. Find team by name in response
3. Extract id field
Webhook の設定
1. Call CAL_RETRIEVE_WEBHOOKS_LIST to check existing hooks
2. Create or update webhook with desired triggers
3. Verify webhook fires on test booking
既知の注意点
日付/時刻の形式:
- 予約時刻:タイムゾーンを含む ISO 8601 形式(例:'2024-01-15T09:00:00Z')
- 空き状況の日付:YYYY-MM-DD 形式
- 混乱を避けるため、必ずタイムゾーンを明示してください
イベントタイプ:
- イベントタイプ ID は数値の整数です
- イベントタイプでは、時間、場所、予約ルールが定義されます
- 無効なイベントタイプでは、新しい予約を受け付けられません
権限:
- チームの操作には、チームへの所属または管理者アクセスが必要です
- 組織の操作には、組織レベルの権限が必要です
- Webhook の管理には、適切なアクセスレベルが必要です
レート制限:
- Cal.com API には、API キーごとのレート制限があります
- 429 レスポンスを受け取った場合は、バックオフを実装してください
クイックリファレンス
| タスク | ツールスラッグ | 主なパラメーター |
|---|---|---|
| 予約を一覧表示 | CAL_FETCH_ALL_BOOKINGS | status, afterStart, beforeEnd |
| 予約を作成 | CAL_POST_NEW_BOOKING_REQUEST | eventTypeId, start, end, name, email |
| 予定ありの時間を取得 | CAL_RETRIEVE_CALENDAR_BUSY_TIMES | dateFrom, dateTo |
| 空き時間枠を取得 | CAL_GET_AVAILABLE_SLOTS_INFO | eventTypeId, dateFrom, dateTo |
| Webhook を一覧表示 | CAL_RETRIEVE_WEBHOOKS_LIST | (none) |
| Webhook を取得 | CAL_GET_WEBHOOK_BY_ID | id |
| Webhook を更新 | CAL_UPDATE_WEBHOOK_BY_ID | id, subscriberUrl, eventTriggers |
| Webhook を削除 | CAL_DELETE_WEBHOOK_BY_ID | id |
| チームを一覧表示 | CAL_GET_TEAMS_LIST | (none) |
| チームを取得 | CAL_GET_TEAM_INFORMATION_BY_TEAM_ID | teamId |
| チームを作成 | CAL_CREATE_TEAM_IN_ORGANIZATION | name, slug |
| チームのイベントタイプ | CAL_RETRIEVE_TEAM_EVENT_TYPES | teamId |
| 組織 ID を取得 | CAL_GET_ORGANIZATION_ID | (none) |
Composio 提供