mcpField
P
pp-outlook-calendar

pp-outlook-calendar

github.com/mvanhorn生産性2.1k110 回インストール今日更新
リポジトリ

pp-outlook-calendar について

pp-outlook-calendarは、outlook-calendar-pp-cliで個人のMicrosoft 365カレンダーを読み書きするスキルです。日程調整や予定の確認に向け、競合や空き時間、変更をローカルで調べられます。

主な機能

  1. 01予定の一覧表示、作成、更新、削除
  2. 02複数カレンダーの競合と空き時間の検索
  3. 03予定の変更と未返信の招待の確認
  4. 04繰り返し予定のずれとタイムゾーンの検査
  5. 05今後の会議情報の整理

活用シーン

  1. 01毎日の会議概要の作成
  2. 02勤務時間内の空き時間の検索
  3. 03前回同期からの変更の確認
  4. 04複数カレンダーにまたがる予定の重複特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-outlook-calendar

インストール後、Claude Code で/pp-outlook-calendarを入力して読み込まれたか確認します。

詳細

Outlook Calendar — Printing Press CLI

前提条件:CLI をインストールする

このスキルは outlook-calendar-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください:

  1. Printing Press のインストーラーを使ってインストールします。バイナリの既定のインストール先は、macOS/Linux では $HOME/.local/bin、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin です:
    npx -y @mvanhorn/printing-press-library install outlook-calendar --cli-only
    
  2. 確認します:outlook-calendar-pp-cli --version
  3. 報告されたインストールディレクトリが、このスキルを実行するエージェント/ランタイムの $PATH に含まれていることを確認します。

npx によるインストールが失敗した場合(Node がない、オフラインなど)は、Go を直接インストールしてください(Go 1.26.6 以降が必要です):

go install github.com/mvanhorn/printing-press-library/library/productivity/outlook-calendar/cmd/outlook-calendar-pp-cli@latest

インストール後に --version が「command not found」と報告する場合、ランタイムからバイナリディレクトリが $PATH を通じて参照できません。確認に成功するまで、スキルのコマンドを実行しないでください。

この CLI を使用する場面

エージェントが Microsoft 365 の個人用カレンダーを非対話的に読み書きする必要がある場合は、outlook-calendar-pp-cli を使用してください。daily-brief、schedule-this-meeting、find-me-time、what-changed-this-week、prep-me-for-my-next-meeting のようなタスクに適しています。Graph エンドポイントでは単一の呼び出しで取得できない、オフラインでのクエリ(競合、空き時間の計算、定期予定のずれ)が必要な場合は、Microsoft Graph に直接アクセスするよりもこちらを優先してください。

独自の機能

これらの機能は、この API のほかのツールでは利用できません。

積み重ねられるローカル状態
  • conflicts — すべての Outlook カレンダーにまたがる予定の重複を一度に検出します。Outlook 自体の UI では表示されない二重予約を見つけられます。

    エージェントが提案した時間帯でユーザーの予定が塞がるかを確認する必要がある場合、ユーザーが所有するすべてのカレンダーを対象にした信頼できる情報源です。

    outlook-calendar-pp-cli conflicts --from today --to +7d --json --select pair_id,a.subject,b.subject,overlap_minutes
    
  • freetime — 今後 K 日間の勤務時間内にある N 分間の空き時間を計算します。すべてのカレンダーを考慮し、オプションで OOF/仮の予定を除外できます。

    エージェントが会議の時間を提案する必要がある場合、ユーザーの実際の勤務時間を反映した、確定的な結果が得られます。

    outlook-calendar-pp-cli freetime --duration 60m --within 'Mon-Fri 9-17' --next 7d --exclude-oof --json
    
  • review — 前回の差分同期スナップショットと比較し、追加、日時変更、キャンセル、または RSVP の変更があった予定を表示します。

    週全体をスキャンせずに、「前回確認してから何が変わったか」という質問にエージェントが回答できます。

    outlook-calendar-pp-cli review --since last-sync --json
    
  • pending — RSVP が未回答で、開始時刻が未来の予定を開始時刻順に一覧表示します。

    エージェントのタスク:「まだ回答が必要な招待はありますか?」という質問に、1 回のクエリで回答できます。

    outlook-calendar-pp-cli pending --json
    
  • recurring-drift — 各定期予定シリーズのマスターについて、開始時刻、終了時刻、件名、または場所がマスターのパターンと異なるインスタンスを一覧表示します。

    開催者側でひそかに変更された日時を検出し、誤った時間に Teams の通話へ参加してしまう事態を防ぎます。

    outlook-calendar-pp-cli recurring-drift --json
    
  • with — この人物と何回会ったか、最後に会ったのはいつかを、ローカルストアから件数と直近の N 件の予定で確認します。

    カレンダー全体を読むことなく、「X さんとはどれくらいの頻度で会っていますか?」というエージェントのタスクに対応します。

    outlook-calendar-pp-cli with [email protected] --since 90d --json
    
  • tz-audit — 開始時刻のタイムゾーンがカレンダーの既定値と異なる予定、または開始時刻と終了時刻のタイムゾーンが異なる予定を検出します。ほかのデバイスで表示時刻が誤る可能性があります。

    エージェントのタスク:「誰かの画面で間違った時刻に表示されそうな予定はありますか?」という質問に、該当する予定とともに「はい/いいえ」で回答します。

    outlook-calendar-pp-cli tz-audit --json
    
エージェント向けのネイティブ機能
  • prep — 今後 N 時間以内の予定について、件名、場所、参加者のメールアドレス、開催者、本文の抜粋、添付ファイルの一覧、繰り返し/オンライン会議のフラグを含む概要を返します。

    エージェントがこれからの予定をユーザーに説明するために必要な情報を、1 回のツール呼び出しで取得できます。

    outlook-calendar-pp-cli prep --next 4h --json
    

コマンドリファレンス

attachments — イベントの添付ファイルを管理します

  • outlook-calendar-pp-cli attachments delete — 添付ファイルを削除します
  • outlook-calendar-pp-cli attachments get — id を指定して特定の添付ファイルを取得します
  • outlook-calendar-pp-cli attachments list — イベントの添付ファイルを一覧表示します

availability — 空き時間と会議時間に関する情報を取得します(個人用 Microsoft アカウントでは機能が制限されます。自分だけの予定を確認する場合は freetime を優先してください)

  • outlook-calendar-pp-cli availability find — 参加者の空き状況と制約に基づいて会議の候補時間を提案します
  • outlook-calendar-pp-cli availability schedule — ユーザーのリストの空き時間情報を取得します(個人用 Microsoft アカウントでは機能が制限されます)

calendars — アカウントの Outlook カレンダーを管理します

  • outlook-calendar-pp-cli calendars create — 新しいカレンダーを作成します
  • outlook-calendar-pp-cli calendars default — ユーザーの既定のカレンダーを取得します
  • outlook-calendar-pp-cli calendars delete — カレンダーを削除します
  • outlook-calendar-pp-cli calendars get — id を指定してカレンダーを取得します
  • outlook-calendar-pp-cli calendars list — アカウントのすべてのカレンダーを一覧表示します
  • outlook-calendar-pp-cli calendars update — カレンダーを更新します

categories — イベントのタグ付けに使用する Outlook のマスターカテゴリーを管理します

  • outlook-calendar-pp-cli categories create — 新しいマスターカテゴリーを作成します
  • outlook-calendar-pp-cli categories delete — マスターカテゴリーを削除します
  • outlook-calendar-pp-cli categories list — マスターカテゴリーを一覧表示します

delta — イベントをローカルの SQLite ストアに増分同期します

  • outlook-calendar-pp-cli delta events — 前回の delta トークン以降のイベント変更を取得します
  • outlook-calendar-pp-cli delta view — 指定した期間内のカレンダービューの変更を増分取得します

events — 既定または指定したカレンダーの Outlook カレンダーイベントを管理します

  • outlook-calendar-pp-cli events accept — 会議の招待を承諾します
  • outlook-calendar-pp-cli events cancel — 主催したイベントをキャンセルします(参加者に通知されます)
  • outlook-calendar-pp-cli events create — 既定のカレンダーに新しいイベントを作成します
  • outlook-calendar-pp-cli events decline — 会議の招待を辞退します
  • outlook-calendar-pp-cli events delete — id を指定してイベントを削除します
  • outlook-calendar-pp-cli events dismiss — イベントのリマインダーを解除します
  • outlook-calendar-pp-cli events forward — イベントを追加の参加者に転送します
  • outlook-calendar-pp-cli events get — id を指定してイベントを取得します
  • outlook-calendar-pp-cli events instances — 指定した日付範囲内の繰り返しイベントの開催分を一覧表示します
  • outlook-calendar-pp-cli events list — 既定のカレンダーのイベントを一覧表示します
  • outlook-calendar-pp-cli events range — 指定した日付範囲内に発生するイベントを一覧表示します(calendarView。繰り返しイベントの各開催分を展開します)
  • outlook-calendar-pp-cli events search — イベントをサーバー側で検索します($search クエリ)
  • outlook-calendar-pp-cli events snooze — 指定した時刻までイベントのリマインダーをスヌーズします
  • outlook-calendar-pp-cli events tentative — 会議の招待を仮承諾します
  • outlook-calendar-pp-cli events update — 既存のイベントのフィールド(件名、本文、時刻、場所、参加者)を更新します
適切なコマンドを見つける

やりたいことはわかっていても、どのコマンドを使うかわからない場合は、CLI に直接問い合わせてください。

outlook-calendar-pp-cli which "<capability in your own words>"

which は、自然言語で記述された機能の問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は1つ以上の候補が見つかったことを示します。終了コード 2 は確信を持てる候補がないことを示します。その場合は --help を使うか、より具体的な問い合わせに切り替えてください。

レシピ

毎日の概要
outlook-calendar-pp-cli prep --next 24h --json --select subject,start,end,location,attendees

概要の作成に必要なフィールドだけを含む、エージェント向けの毎日のスナップショットです。

来週の1時間枠を探す
outlook-calendar-pp-cli freetime --duration 60m --within 'Mon-Fri 9-17' --next 7d --exclude-oof --json

勤務時間内の空き時間を返します。OOF は除外されます。最初の空き時間を取得するには jq '.[0]' にパイプしてください。

月曜日以降の変更内容
outlook-calendar-pp-cli review --since 'Mon 09:00' --json

差分を追加、再スケジュール、キャンセル、出欠回答の変更に分類し、主催者側による再スケジュールを検出します。

保留中の出欠回答
outlook-calendar-pp-cli pending --json --select subject,start,organizer.email

出欠回答がまだ保留中の今後のイベントをすべて表示します。--select で出力を絞り込み、エージェントに必要なフィールドだけを渡せます。

--select を深く指定した競合スキャン
outlook-calendar-pp-cli conflicts --from today --to +14d --json --select pair.a.subject,pair.b.subject,overlap_minutes,calendar.a,calendar.b

複数のカレンダーを使うユーザー(コンサルタントと個人用など)のエージェントは、まず conflicts を実行して実際に競合している予定を確認します。ドット区切りの --select を使うと、ペイロードを小さく保てます。

認証の設定

認証には、https://login.microsoftonline.com/common に対する OAuth 2.0 デバイスコードフローを使用します。outlook-calendar-pp-cli auth login --device-code を一度実行し、表示された URL に任意のデバイスからアクセスしてコードを入力すれば完了です。トークンは ~/.config/outlook-calendar-pp-cli/config.toml(モード 0600)にキャッシュされます。CLI は保存されたリフレッシュトークンを使って、有効期限が切れるとアクセストークンを自動更新するため、その後のコマンドは非対話形式で実行されます。デフォルトのクライアント ID は Microsoft が公開している Graph PowerShell クライアントです(個人用 Microsoft アカウントでもすぐに使用できます)。独自の Azure アプリ登録を使うには、--client-id を渡してください。個人用 Microsoft アカウント(Outlook.com、Hotmail、Live、MSA)は正式にサポートされ、テスト済みです。

設定を確認するには、outlook-calendar-pp-cli doctor を実行してください。

エージェントモード

任意のコマンドに --agent を追加します。次のオプションに展開されます:--json --compact --no-input --no-color --yes。

  • パイプ可能 — JSON は stdout、エラーは stderr に出力されます

  • フィルタリング可能 — --select でフィールドを絞り込めます。ドット区切りのパスはネストされた構造までたどり、配列では各要素を順に処理します。冗長な API でコンテキストを小さく保つために重要です:

    outlook-calendar-pp-cli attachments list mock-value --agent --select id,name,status
    
  • プレビュー可能 — --dry-run で送信前にリクエストを確認できます

  • オフラインでも使いやすい — sync/search コマンドは、利用可能な場合にローカルの SQLite ストアを使用できます

  • 非対話形式 — プロンプトは表示されず、すべての入力をフラグで指定します

  • 再試行を明示 — 既存の作成を成功として扱う場合にのみ --idempotent を使用し、削除対象が存在しない場合に成功として扱う場合にのみ --ignore-missing を使用します

レスポンスエンベロープ

ローカルストアまたは API から読み取るコマンドは、出力をプロベナンスエンベロープでラップします:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

データには .results を解析し、ライブデータかローカルデータかを確認するには .meta.source を参照してください。人が読める N results (live) の概要は、stdout が端末の場合にのみ stderr に出力されます。パイプ経由またはエージェントからの利用では、stdout には純粋な JSON が出力されます。

エージェントからのフィードバック

この CLI に気になる点があれば、あなた(またはエージェント)が記録してください:

outlook-calendar-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
outlook-calendar-pp-cli feedback --stdin < notes.txt
outlook-calendar-pp-cli feedback list --json --limit 10

エントリは ~/.outlook-calendar-pp-cli/feedback.jsonl にローカル保存されます。OUTLOOK_CALENDAR_FEEDBACK_ENDPOINT が設定され、さらに --send が渡されているか OUTLOOK_CALENDAR_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。デフォルトの動作はローカル保存のみです。

バグ報告ではなく、意外に感じたことを書いてください。短く、具体的に、1 行で記します。積み重ねるべきなのはその部分です。

出力の送信先

すべてのコマンドで --deliver <sink> を指定できます。出力は stdout に加えて(または stdout の代わりに)指定した送信先に渡されるため、エージェントはコマンド結果を手動でパイプせずに振り分けられます。送信先は 3 種類です:

送信先動作
stdoutデフォルト。stdout のみに書き込みます
file:<path>出力を <path> にアトミックに書き込みます(一時ファイル + rename)
webhook:<url>出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson)

不明なスキームは、サポート対象を示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の終了コードを返し、URL と HTTP ステータスを stderr に記録します。

名前付きプロファイル

プロファイルは、複数回の実行で再利用するフラグ値の保存セットです。スケジュールされたエージェントが毎回同じ設定で同じコマンドを実行する場合に使います。HeyGen の「Beacon」パターンがその例です。

outlook-calendar-pp-cli profile save briefing --json
outlook-calendar-pp-cli --profile briefing attachments list mock-value
outlook-calendar-pp-cli profile list --json
outlook-calendar-pp-cli profile show briefing
outlook-calendar-pp-cli profile delete briefing --yes

明示的なフラグは常にプロファイル値より優先され、プロファイル値はデフォルトより優先されます。agent-context は、実行時にエージェントがプロファイルを調べられるよう、すべての利用可能なプロファイルを available_profiles の下に一覧表示します。

終了コード

コード意味
0成功
2使用方法のエラー(引数が誤っています)
3リソースが見つかりません
4認証が必要です
5API エラー(上流の問題)
7レート制限中(待ってから再試行してください)
10設定エラー

引数の解析

$ARGUMENTS を解析します。

  1. 空、help、または --help → outlook-calendar-pp-cli --help の出力を表示します
  2. install で始まる場合 → mcp で終わる場合は MCP のインストール、そうでない場合は上記の前提条件を参照してください
  3. それ以外 → 直接使用(--agent を指定して CLI コマンドとして実行します)

MCP サーバーのインストール

この CLI の公開ライブラリのエントリーまたはビルド済みリリースから MCP バイナリをインストールし、登録します。

claude mcp add outlook-calendar-pp-mcp -- outlook-calendar-pp-mcp

確認:claude mcp list

直接使用

  1. インストール済みか確認します:which outlook-calendar-pp-cli 見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照してください)。
  2. ユーザーのクエリに最適なコマンドを、上記の「独自の機能」と「コマンドリファレンス」から選びます。
  3. --agent フラグを指定して実行します。
    outlook-calendar-pp-cli <command> [subcommand] [args] --agent
    
  4. 曖昧な場合は、サブコマンドのヘルプを確認します:outlook-calendar-pp-cli <command> --help。

コメント