iCloud MCP
iCloud MCP
Cloudflare Workers 上でホストされる MCP サーバーで、AI アシスタントに iCloud メール、カレンダー、連絡先 へのネイティブなツールアクセスを提供します。IMAP、CalDAV、CardDAV を介して、認証情報がサーバーから出ることはありません。
これは何か
iCloud MCP は、3 つの Apple プロトコルを話し、それらを MCP クライアント(Claude など)にツールセットとして公開する単一の Cloudflare Worker です。アシスタントは、メールの読み取りと検索、下書きフォルダへの返信の下書き作成、カレンダーイベントの読み取りと管理、空き時間の検索、連絡先の検索を、実際の iCloud アカウントに対して行うことができます。
これは 1 人のユーザーが 1 つの Apple ID に対して使用するために構築されましたが、そのアカウントに固有のものは何もありません。アカウント固有の値はすべて、ユーザーが提供する設定に含まれています。デプロイ を参照してください。
アシスタントができること
メールの読み取り(送信はしない)— メッセージと添付ファイル(PDF から抽出したテキストを含む)の一覧表示、検索、読み取り。
下書きメールの作成 — iCloud の下書きフォルダに、新しいメッセージとスレッド返信を、ステージングされた添付ファイルとともに作成します。送信はできません。 人間がすべての下書きを確認し、手動で送信します。これは安全上の境界であり、制限ではありません。セキュリティ を参照してください。
カレンダーの管理 — イベントの一覧表示、検索、読み取り、作成、更新、削除。破壊的または誰かに通知する変更は、すべて最初にプレビューされ、明示的な確認ステップの後にのみ適用されます。
空き時間の検索 — 指定した期間について、すべてのカレンダーにわたって空き時間を検索します。
連絡先の検索 — 名前またはメールアドレスで連絡先を検索します。
意図的に行わないこと
メールの送信。 SMTP は一切使用しません。下書きと確認のステップが、プロンプトインジェクションされたメール内容があなたの名前で送信されることを防ぐ最後の防衛線です。
自律的な動作。 cron ジョブ、バックグラウンドウォッチャー、ダイジェストはありません。
コンテンツのキャッシュ。 iCloud が正規の記録であり、ディスカバリメタデータ(どのサーバーがあなたのアカウントを保持しているか)のみが 24 時間キャッシュされます。
複数ユーザーのサポート や他の iCloud サービス(リマインダー、メモ、写真)はサポートしません。
Related MCP server: Apple MCP
仕組み
MCP client (Claude)
│ HTTPS, OAuth 2.1 bearer token
▼
Cloudflare Worker ── OAuth provider gates every request
│ (@cloudflare/workers-oauth-provider)
▼
MCP handler (/mcp) ── builds a fresh server per request
│
├─ Mail tools ──▶ IMAP over TLS (raw TCP socket) ──▶ imap.mail.me.com:993
├─ Cal tools ──▶ CalDAV over HTTPS ──▶ caldav.icloud.com
└─ Contact tools ▶ CardDAV over HTTPS ──▶ contacts.icloud.comエンドポイントは OAuth で保護されています。認証されていないリクエストがツールに到達することはありません。
IMAP は、Workers ネイティブの TCP ソケット API を介して、ポート 993 で暗黙的 TLS を使用して実行されます。ブリッジもプロキシもありません。接続は単一のリクエスト内で開かれ、使用され、閉じられます。
CalDAV/CardDAV は
tsdavを使用します。解決されたサーバーの場所は KV にキャッシュされます。あなたの Apple 認証情報は Cloudflare Secrets にのみ存在します。ログに記録されることも、レスポンスで返されることも、エラーメッセージに含まれることもありません。
完全な設計(リクエストフロー、トランスポート内部、安全対策の実施、モジュールマップ)については、ARCHITECTURE.md を参照してください。
ツール
5 つのグループに 23 のツールがあります。すべてのツールの説明には、信頼できないコンテンツに関する注意事項が含まれています。イベントのタイトル、メッセージ本文、連絡先フィールドはデータとして扱われ、指示として扱われることはありません。
診断
ツール | 説明 |
| iCloud IMAP の接続性、認証、機能を確認します。 |
| CalDAV/CardDAV のディスカバリを確認します: 解決された URL、シャードホスト、キャッシュヒット、タイミング。 |
メール
ツール | 説明 |
| メールフォルダを役割と件数とともに一覧表示します。 |
| フォルダのメッセージを新しい順に一覧表示します(メタデータと上限付きスニペット。本文は含みません)。 |
| フォルダの未読メールを一覧表示します。 |
| キーワード、送信者、日付範囲で 1 つのフォルダを検索します。 |
| 不透明な ID で 1 つのメッセージを完全に読み取ります。 |
| 添付ファイルをテキストとして読み取ります(PDF のテキストは抽出されます)。 |
| 新しいメッセージを下書きフォルダに作成します(送信はされません)。 |
| メッセージへの返信を下書きフォルダにスレッドとして作成します(送信はされません)。 |
| 下書きに添付するファイルをステージングします(メッセージ、生バイト、アップロード URL から)。 |
| 署名付きアップロードを完了します。 |
カレンダー
ツール | 説明 |
| カレンダーを一覧表示します: ID、名前、色、購読フラグ。 |
| 日付範囲内のイベントを一覧表示します(繰り返しイベントは発生インスタンスに展開されます)。 |
| 不透明な ID で 1 つのイベントを完全に読み取ります。 |
| 範囲内でキーワードまたは出席者によってイベントを検索します。 |
| すべてのカレンダーにわたって、期間と範囲に対して空きスロットを検索します。 |
| イベントを作成します。出席者がいる場合は、最初にプレビューされ、確認を返します。 |
| 変更をプレビューします。 |
| 1 つのイベントの削除をプレビューします。 |
| プレビューされた作成/更新/削除を、その確認トークンを使用して適用します。 |
連絡先
ツール | 説明 |
| 名前またはメールアドレスで連絡先を検索します(行にはアドレスが含まれます)。 |
| 不透明な ID で 1 つの連絡先を完全に読み取ります。 |
各ツールの完全な入力パラメータは、ツールの説明自体と ARCHITECTURE.md にあります。
要件
要件 | 理由 |
Cloudflare アカウント、Workers 有料プラン | 無料プランの 10 ms CPU 予算では、MIME 本文と PDF 添付ファイルを解析できません。 |
Cloudflare 上のドメイン |
|
アプリ固有のパスワードを持つ Apple ID | iCloud は、アカウントが 2 要素認証を使用している場合(実際に使用しています)、IMAP/DAV にアプリ固有のパスワードを要求します。 |
Node.js 20+ と npm | Wrangler と Vitest のツールチェーン用です。 |
デプロイ
アカウント固有の値はすべて wrangler.jsonc に格納され、これは git で無視されます。追跡されるテンプレートは wrangler.jsonc.example です。npm install は初回実行時にテンプレートを所定の場所にコピーします。
1. クローンとインストール
git clone https://github.com/russellkmoore/icloud-mcp.git
cd icloud-mcp
npm install # also copies wrangler.jsonc.example -> wrangler.jsonc2. ストレージバインディングを作成する
各コマンドは ID を出力します。それを wrangler.jsonc の対応するエントリに貼り付けます。
npx wrangler kv namespace create OAUTH_KV
npx wrangler kv namespace create DAV_CACHE
npx wrangler kv namespace create CONFIRM_KV
npx wrangler r2 bucket create icloud-mcp-attachmentsステージングされたアップロードが 1 日後に期限切れになるように、バケットにライフサイクルルールを追加します(Cloudflare ダッシュボード → R2 → バケット → 設定 → オブジェクトライフサイクルルール: プレフィックス staging/、1 日後に削除)。これは必須です。ステージングトークンは 24 時間で期限切れになるため、バイトはそれをあまり超えて存続してはなりません。
3. wrangler.jsonc を記入する
git で無視される wrangler.jsonc でこれらの値を編集します:
routes[0].pattern→ カスタムドメイン(例:icloud-mcp.your-domain.example)vars.R2_ACCOUNT_ID→ Cloudflare アカウント IDkv_namespaces[].id→ ステップ 2 の 3 つの ID
ホスト名は routes[0].pattern から自動的にビルドに組み込まれます。コードで編集する必要はありません。
4. シークレットを設定する
npx wrangler secret put AUTH_SECRET # your login password for /authorize
npx wrangler secret put APPLE_ID # the account's Apple ID (email)
npx wrangler secret put APPLE_APP_PASSWORD # app-specific password, not the real one
npx wrangler secret put CONFIRM_SECRET # e.g. `openssl rand -base64 32`
npx wrangler secret put R2_ACCESS_KEY_ID # from an R2 S3 API token,
npx wrangler secret put R2_SECRET_ACCESS_KEY # Object Read & Write, scoped to the bucket各シークレットの内容については .dev.vars.example を参照してください。
5. デプロイと検証
npm test # optional: full suite against a local workerd (no live account needed)
npm run deploy
npm run smoke # confirms the live endpoint refuses an unauthenticated requestMCP クライアントを接続する
MCP エンドポイントは https://your-domain.example/mcp です。OAuth 2.1 と動的クライアント登録を使用します。
MCP クライアントにコネクタ URL(
https://your-domain.example/mcp)を追加します。クライアントは
/authorizeページにあなたを送ります。AUTH_SECRETを入力して承認します。
リダイレクトオリジンの許可リストは https://claude.ai とループバックです。別のオリジンのクライアントを承認するには、src/auth/login-handler.ts に追加します。
ローカル開発
cp .dev.vars.example .dev.vars # then fill in the values
npx wrangler dev # runs the Worker locally.dev.vars は git で無視され、pre-commit フックによって拒否されます。ローカル実行では Miniflare のローカル KV/R2 を使用するため、実際の Cloudflare ストレージには触れません。
テストや自動化されたステップを実際の Apple ID に向けないでください。スイートは意図的に偽の認証情報を使用します(D-09)。
テスト
npm test # full suite
npm run typecheck # tsc --noEmit
npm run scan # the safety scanner (see below)テストは @cloudflare/vitest-pool-workers を介して実際の workerd ランタイム内で実行されるため、ソケットと DAV コードは Node モックではなく、現実的な Workers の制約に対して実行されます。約 2,400 のテストがあり、ライブアカウントは不要です。
安全対策の実施
5 つの安全ルールは、scripts/forbidden-tokens.mjs によって機械的に実施されます。これはテストスイートと pre-commit フックの両方から実行されます:
opportunistic-TLS トランスポートパスはありません(993 での暗黙的 TLS のみ)。
メール送信はありません — SMTP なし、下書き書き込みパスは 1 つ、カウントとして実施されます。
TCP ソケットを開くことができるモジュールは 1 つだけです。
認証情報がログやエラーに到達することはありません(
src/にはログ記録はありません)。メールの読み取りは既読にしません(メールボックスは読み取り専用で開かれ、ピークフェッチを使用します)。
これらのいずれかを変更することは、プロジェクトの安全境界の変更です。ルール、その理由、および実施方法は、ARCHITECTURE.md → 安全モデル に文書化されています。
プロジェクト構成
src/
index.ts Worker entry (the OAuth provider)
env.ts binding surface (KV, R2, vars, secrets)
auth/ OAuth options + the /authorize login handler
mcp/ MCP handler, per-request server factory, tool registrations
mail/ IMAP: the one socket importer, session orchestrator, MIME
dav/ CalDAV/CardDAV: transport, discovery, calendar/contacts, parsers
staging/ R2 attachment staging + presigned uploads
feed/ subscription-feed fetch (calendar subscriptions)
scripts/ hostname generation, the safety scanner, smoke test
test/ ~2,400 tests, run inside workerd技術スタック
Cloudflare Workers · TypeScript · MCP SDK v2 (@modelcontextprotocol/server) · agents (createMcpHandler) · @cloudflare/workers-oauth-provider · tsdav (CalDAV/CardDAV) · ical.js (iCalendar および vCard) · postal-mime (MIME) · unpdf (PDF テキスト) · aws4fetch (R2 プリサイン) · zod (スキーマ)。
貢献
Issue とプルリクエストを歓迎します。src/ の下で何かを変更する前に、ARCHITECTURE.md を読んでください。特に 安全モデル は、スキャナーがすべてのコミットで実施します。セキュリティの問題を報告するには、SECURITY.md を参照してください。
ライセンス
MIT © 2026 Russell Moore.
このプロジェクトは Apple Inc. とは提携しておらず、その承認も受けていません。「iCloud」および「Apple」は Apple Inc. の商標です。
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 gradedqualityBmaintenanceEnables AI agents to access iCloud Calendar, Reminders, and Mail with configurable scope and read-only modes.1MIT
- AlicenseBqualityAmaintenanceEnables Claude to interact with Apple apps on macOS including Mail, Calendar, Contacts, Reminders, Notes, and iCloud Drive for personal productivity tasks like triaging email, managing calendar, and cross-app context.765MIT
- AlicenseAqualityAmaintenanceEnables Claude to interact with Apple services including Email, Calendar, Contacts, Reminders, Notes, Messages, and Safari via AppleScript (macOS) or iCloud protocols.4111728MIT
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
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/russellkmoore/icloud-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server