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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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 gradedqualityBmaintenanceEnables calendar management with iCloud through CalDAV, allowing users to list, create, update, and delete events via a standardized API.27MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to access iCloud Calendar, Reminders, and Mail with configurable scope and read-only modes.1MIT
Related MCP Connectors
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nweii/apple-calendar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server