Apple Calendar MCP
Apple Calendar MCP
Apple Calendar MCP は、AI クライアントに 1 つの iCloud Calendar アカウントへのリモート読み取り・書き取りアクセスを提供します。これは Cloudflare 上でステートレスな TypeScript Worker として実行され、Apple デバイスがオンラインであり続ける必要はありません。
1 つのデプロイメントは 1 つの Apple Account に接続します。これはマルチユーザー カレンダー サービスではありません。
デプロイ前 に
必要なもの:
Cloudflare アカウント。
二要素認証を有効にした Apple Account。
リモート HTTPS サーバーと OAuth をサポートする MCP クライアント。
あなたの IANA タイムゾーン名。例:
America/New_York。
Apple と Cloudflare の設定ページはご自身で開いてください。エージェントは案内や結果の検証はできますが、あなたのパスワードを受取ったり入カしたりするべきではありません。
[!WARNING] Apple Account のパスワード、Apple アプリ固有パスワード、承パスワードをチャット、ソース管理、ログ、または Issue に貼り付けないでください。
Related MCP server: calendar-app-mcp
Apple アプリ固有パスワードを作成する
account.apple.com を開いてサインインします。
Sign-In and Security > App-Specific Passwords を選択します。
Generate an app-specific password を選択します。
明確なラベルを付けます。例:
Apple Calendar MCP。Cloudflare が要求するまで、生成された値は Apple のページに表示したままにします。
Apple では、アプリ固有パスワードに二要素認証が必用です。アクティブなパスワードは最マ 25 個まで作成できます。1 つまたはすべてを取り消しできます。メインの Apple Account パスワードを変更またはリセットすると、すべてのアプリ固有パスワードが取り消されます。Apple のアプリ固有パスワードの手順を参照してください。
[!WARNING] Apple アプリ固有パスワードは、この MCP がクライアントに表示する Calendar 権限よりも広い範囲を持ちます。Worker は許可リストに登録された iCloud CalDAV ホストにのみアクセスを制限しますが、Apple は Calendar 専用のアプリ固有パスワードを発行しません。
Cloudflare にデプロイする
このページ上部の Deploy to Cloudflare を選択します。
Cloudflare にサインインし、デプロイメント フォームに従います。
Cloudflare が要求する 3 つのシークレット値を入カします:
ICLOUD_USERNAME: Apple Account と iCloud Calendar に使用する完全なメール アドレス。ICLOUD_APP_PASSWORD: Apple が生成したアプリ固有パスワード。正確にそのまま保ちます。APPROVAL_PASSWORD: 新し MCP クライアントの承を保護する、別の一意のパスワード。Apple のどちらのパスワードも再利用しないでください。
Worker のデプロイメントが完了するまで待ちます。
Workers & Pages を開き、Worker を選択し、Settings を選択して Variables and Secrets を見つけます。
CALENDAR_TIME_ZONEをUTCからあなたの IANA タイムゾーン名に変更し、設定をデプロイします。次の形式のエンドポインとをコピーします:
https://<worker-name>.<account-subdomain>.workers.dev/mcp。
Cloudflare は 3 つのシークレット値を暗号化された Worker シークレットとして保格します。デプロイメント フォームは、生成されたリポジトリやローカルの .dev.vars ファイルにそれらを書き込みません。
シークレットをスキップした場合や置き換える必要がある場合は、Workers & Pages を開き、Worker を選択し、Settings を選択して Variables and Secrets を見つけ、値を Secret として追加または編集し、Deploy を選択します。
Cloudflare は OAUTH_KV 名前空間を自動的にプロビジョニングします。wrangler.jsonc に KV ID を追加しないでください。
MCP クライアントを接続する
デプロイした
/mcpエンドポイントをカスタム リモート MCP サーバーまたはアプリとして追カします。Connect を選択します。クライアントが OAuth を検出し、Apple Calendar MCP 承ページを開くはずです。
クライアント名と要求された権限を確認します。
APPROVAL_PASSWORDを入カし、Allow and return を選択します。ページが必要以上のアクセスを求める場合は Cancel を選択します。クライアントが接続完了を報告するまで待ちます。完了後もブラウザ タブが開いたままの場合は閉じます。
クライアントのツールを更新または再スキャンします。クライアントは接続後またはサーバー更新後にツール カタログをキャッシュすることがあります。
Claude の場合は、リモート MCP でカスタム コネクタを使用するを参照してください。ChatGPT の場合は、開発者モードとフル MCP コネクタを参照してください。
承認ページでは、次の 2 つの権限が提供されます:
Read calendars and events は
calendar:readを許可し、7 つの読み取りツールを公開します。Read and edit calendars and events は
calendar:read calendar:writeを許可し、4 つの変更容易ールを追加します。
権限を変更するには、再認証とツール カタログの更新が必用です。サーバーの更新では、既存の読み取り専用の認可に書き取りツールが追カされません。
[!WARNING] 参カ者や招カ状に関わる書き取り操カは、他の人にメールや通知を送信することがあります。
接続を確認する
まず読み取りアクセスを確認します:
calendar_get_profileを呼び出します。Apple Account の ID とタイムゾーンを確認します。calendar_list_calendarsを呼び出します。期待するカレンダー名が表示されることを確認します。読み取り専用アクセスを承した場会、クライアントが変更ツールを表示しないことを確認します。
デプロイメント、シークレットの入カ、OAuth 接続、カレンダーの読み取り成功は、それぞれ独リした状態です。カレンダーの読み取りが成功すれば、Apple の認証情報が機能していることが証明されます。
書き取りアクセスを確認するには、まず Apple Calendar に空の一時カレンダーを作成します。エージェントには、あなたが確認した後にのみ、この制限されたテスを実行するよう依頼します:
一意のタイル、参カ者なし、繰り返しなし、アラートなしで、未ライのイベントを 1 つ作成します。
イベントを読み取り、現在の ETag を保ちます。
その ETag を使ってタイルのみを変更します。
もう一度イベントを読み取り、返された ETag を使って削除します。
イベントが存在しないことを確認します。
クリーンアップが失敗した場会、正しく なカレンダー、タイル、時刻を記録して、自分でイベントを削除できるようにしてください。デフォルトのカレンダーで書き取りテスをしないでください。
また、エージェントと Apple Calendar MCP をセットアップするの制限された手順をエージェントに与えることもできます。
ツール
ツール | スコープ | 目的 |
|
| 設定された iCloud アカウントの ID とデフォルトのタイムゾーンを返します。 |
|
| 表示されているカレンダー、有効なタイムゾーン、および不透明な ID を一覧表示します。 |
|
| カレンダー全体で制限された時 間範囲を検索します。 |
|
| 1 つのカレンダーから制限された時 間範囲を一覧表示します。 |
|
| イベントの詳細と現在の ETag を読み取ります。 |
|
| イベントごとのエラーを含む最マ 20 件のイベントを読み取ります。 |
|
| イベントの詳細を含まない、結合されたビジー ウィンドウを返します。 |
|
| 時 刻指定、終日、繰り返し、招カ、場 所指定、アラート付きのイベントを作成します。 |
|
| 1 つの出 現、この出 現以降、または系 列全体を変 更します。 |
|
| 1 つの出 現、この出 現以降、または系 列全体を削 除します。 |
|
| 招 カを受 託、辞 退、または仮 受 託します。 |
更新、削除、招カ応答ツールには、最新の ETag が必用です。繰り返しの出 現変 更には、検 索で返された元の recurrenceId も必用です。
時 刻指定の入 力には、Z または明 示的なオフセット付きの RFC 3339 タイムスタンプを使用します。クライアントは timeZone を省 略できます。作 成時 には、カレンダーの公 開された IANA タイムゾーンが使 用され、次に CALENDAR_TIME_ZONE が使 用されます。時 刻指定の出 力には、UTC と現 地の値が含 まれます。
location は表 示される Calendar のフィールドです。structuredLocation では、タイトル、住 所、緯 度、経 度、半 径を追 加できます。検 証済みの座 標により、Apple Calendar のマップ プレビューが有 効になります。座 標を推 測しないでください。
description は Calendar のメモに対 応します。url はイベントの URL フィールドに対 応します。MCP は、無 関係な変 更の際にサポートされていない添 付ファイルとアラーム タイプを保 持しますが、添 付ファイルのアップロード、ダウンロード、変 更は行 いません。生の ICS をインポートすることもありません。
カスタム ドメインを使用する
デフォルトの workers.dev エンドポインとには、ホスト名の設 定は不 要です。カスタム ドメインには、明 示的な許 可リストの設 定が 1 つ必 要です:
Cloudflare で Worker を開きます。
Settings > Domains & Routes > Add > Custom Domain を選 択し、ホスト名を追 加します。
Variables and Secrets で、
MCP_HOSTNAMEを平 文変 数として追 加します。calendar.example.comなどのホスト名のみを入 力します。https://、パス、ポート、認 証情 報を 含 めないでください。設 定をデプロイします。
クライアントを再 度
https://<custom-host>/mcpに接 続し、再び認 証を完 了します。
ホスト名は OAuth アイデンティティの一 部です。workers.dev に対 して発 行されたトークンは、カスタム オリジンには移 行しません。
Cloudflare Access を追 加する
組 み込 みの承 認パスワードがデフォルトの認 可ガードです。Cloudflare Access はオプションの多 層防 御です。
Access を追 加する場 合、<hostname>/authorize のみを保 護してください。/me mcp、/.well-known/*、/oauth/token、/oauth/register は MCP クライアントがアクセスできるようにしておいてください。Access が /authorize を保 護していることを確 認したら、EXTERNAL_AUTHORIZATION=true を平 文の Worker 変 数として追 加します。
[!WARNING]
EXTERNAL_AUTHORIZATION=trueは、外 部ガードが/authorizeを保 護している場 合にのみ設 定してください。この設 定は、外 部ガードがアクティブであることを宣 言するものです。
セキュリティ
Worker は、実 行時 にあなたの Apple ユーザーネームとアプリ固 有パスワードを受 け取ります。あなたは自 分の Cloudflare アカウント、デプロイされたソース、Apple、および接 続されたすべての MCP クライアントを信 頼します。Cloudflare アカウントへのアクセスを制 限し、信 頼できるクライアントのみを接 続してください。
APPROVAL_PASSWORD は新 しい承 認を保 護します。このパスワードが設 定されているか、EXTERNAL_AUTHORIZATION が検 証済みの外 部ガードを宣 言している場 合を除 き、承 認ルートはフェイルクローズドになります。ガードを通 かした人 は誰 でも、設 定された Apple Account に対 してクライアントを認 可できます。
Cloudflare の OAuth プロバイダーは、アクセス トークン、リフレッシュ トークン、認 可コード、登 録済みクライアント シークレットをハッシュで保 格します。認 可プ口パティは暗 号 化されます。クライアント名とグラント メタデータはストレージ上 で可 視のま ま残るため、シークレットを 含 めてはな りません。プロバイダーの K V ストレージとクリーンアップのドキュメンテーションを参 照してください。
Worker は、許 可リストに登 録された iCloud CalDAV ホストにのみ、HTTPS で Apple の認 証情 報を送 信します。ツール引 数でアップロード ホストを選 択することはできません。エラーは認 証情 報に似 た値を伏 せます。Worker はツール引 数やイベント ペイロードをログに記 録しません。
ツール結 果には、タイル、メモ、場 所、参 カ者、URL が含 まれる場 合があります。MCP クライアントは、自 社の製 品およびワークスペースのポリシーに基 づいてこのデータを保 持できます。
書 き込 みアクセスは、イベントの作 成、変 更、削 除、招 カへの応 答を対 象とします。ETag はよ り新 しいイベントの上 書 きを防 ぎますが、意 図しない書 き込 みを無 害にすることはできません。無 関係な変 更では、可 能な場 合にサポートされていない Apple プロパティが保 持されます。
この正 準リポジトリ、または変 更をレビューしたフォークからデプロイしてください。リモート MCP サーバーは、所 有 者が新 しいコードをデプロイするとツール カタログを変 更できます。
アクセスを取り消す、またはローテーションする
目標 | 操作 | 結果 |
1つのクライアントを停止する | そのクライアントの設定で切断または削除します。利用可能な場合は失効フローを使用します。 | クライアントはその接続の使用を停止します。 |
新しい承認を停止する |
| 既存のOAuthトークンは影響を受けません。 |
すべてのAppleアクセスを直ちに停止する | Workerを無効化し、account.apple.com でそのアプリ固有のパスワードを失効させます。 | 新しいアプリ固有のパスワードを設定するまで、カレンダー呼び出しは失敗します。 |
通常のローテーションを行う | 新しいAppleアプリ固有のパスワードを作成し、Cloudflareで | 失効前に置き換えを検証するため、ダウンタイムを回避できます。 |
Apple Accountのパスワードリセット後に復旧する | 新しいアプリ固有のパスワードを作成し、Workerのシークレットを置き換えます。 | Appleは既に古いアプリ固有のパスワードを失効させています。 |
侵害を疑う場合は、最初に古いAppleアプリ固有のパスワードを失効させます。次にそれを置き換えてアクセスを検証します。これにより短時間の停止が発生します。
トラブルシューティング
401まはiCloudパスワードの拒否は、通例、アプリ固有のパスワードが存しないか失効していることを意味します。AppleとCloudflareで作成または置き換えてください。チャットに貼り付けないでください。書き込みツールがない場合は、通例、クライアントが読み取り専用の許可を持っているか、ツールカタログがキャッシュされていることを意味します。ツールを更新し、必要に応じて切断して再度承認してください。
/mcpを拒否するカスタムドメインは、通例、MCP_HOSTNAMEが欠落しているか無効です。正確なホスト名を設定して再デプロイしてください。フェイルクローズする承認ページには、
APPROVAL_PASSWORDも宣言された外部ガードもありません。/authorizeでCloudflare Accessを既に検証していない限り、承認シークレットを追加してください。
ローカルでの開発
bun install
cp .dev.vars.example .dev.vars
bun run test
bun run typecheck
bun run cloudflare:check.dev.vars はローカルに保持します。bun run deploy でデプロイします。
ライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
GDPR-compliant calendar access for AI assistants: read, create, edit, RSVP. Google, MS 365, Apple.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
- muse.spaceOAuthspace.muse
Let your agent into iCloud Mail, calendar and contacts. It gets actions, never your password.
Sync Google, Outlook, and iCloud calendars and manage events, availability, and booking links.
1
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to view and create events in their iCloud Calendar using natural language through supported LLMs. It integrates with Apple's infrastructure via app-specific passwords to provide secure calendar management.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and interact with macOS Calendar.app events and reminders, including viewing, searching, and filtering calendar data.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables calendar management with iCloud through CalDAV, allowing users to list, create, update, and delete events via a standardized API.558 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides AI calendar operators full iCloud Calendar access through CalDAV, with two-factor authentication and app-specific passwords.MIT