iCloud MCP
iCloud MCP
Сервер MCP, размещённый на Cloudflare Workers, который предоставляет ИИ-ассистенту нативный доступ к инструментам iCloud Mail, Calendar и Contacts — через IMAP, CalDAV и CardDAV — без того, чтобы ваши учётные данные когда-либо покидали сервер.
Что это такое
iCloud MCP — это один Cloudflare Worker, который говорит на трёх протоколах Apple и предоставляет их MCP-клиенту (например, Claude) в виде набора инструментов. Ассистент может читать и искать вашу почту, создавать черновики ответов в папке Drafts, читать и управлять событиями календаря, находить свободное время и искать контакты — всё это против вашей реальной учётной записи iCloud.
Он был создан для одного человека с одним Apple ID, но ничто в нём не является личным для этой учётной записи: каждое значение, специфичное для аккаунта, хранится в конфигурации, которую вы предоставляете. См. Развёртывание.
Что может делать ассистент
Читать почту — он не отправляет: список, поиск и чтение сообщений и вложений (включая текст, извлечённый из PDF).
Создавать черновики в вашей папке iCloud Drafts — новые сообщения и ответы в ветках, с подготовленными вложениями. Он не может отправлять. Человек проверяет каждый черновик и отправляет его вручную. Это граница безопасности, а не ограничение. См. Безопасность.
Управлять календарём — список, поиск, чтение, создание, обновление и удаление событий. Каждое изменение, которое является разрушительным или уведомляет кого-либо, сначала предпросматривается и применяется только после явного шага подтверждения.
Находить свободное время во всех ваших календарях на заданную длительность.
Искать контакты по имени или электронной почте.
Что он намеренно не делает
Не отправляет почту. Никакого SMTP, никогда. Шаг черновика и проверки — это защита от отправки содержимого, внедрённого через промпт, под вашим именем.
Не действует сам. Никаких cron-задач, фоновых наблюдателей, дайджестов.
Не кэширует ваш контент. iCloud — это система записи; кэшируются только метаданные обнаружения (какой сервер содержит вашу учётную запись), на 24 часа.
Не поддерживает несколько пользователей или другие сервисы iCloud (Reminders, Notes, Photos).
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 работает через нативный TCP-сокет Workers с неявным TLS на порту 993 — без моста, без прокси. Соединение открывается, используется и закрывается в рамках одного запроса.
CalDAV/CardDAV используют
tsdav; разрешённые расположения серверов кэшируются в KV.Ваши учётные данные Apple хранятся только в Cloudflare Secrets. Они никогда не логируются, не возвращаются в ответе и не помещаются в сообщение об ошибке.
Полное описание дизайна — поток запросов, внутренности транспорта, обеспечение безопасности и карта модулей — см. в ARCHITECTURE.md.
Инструменты
23 инструмента в пяти группах. Описание каждого инструмента содержит уведомление о недоверенном содержимом; названия событий, тела сообщений и поля контактов рассматриваются как данные, а не как инструкции.
Диагностика
Инструмент | Что делает |
| Проверка подключения к iCloud IMAP, аутентификации и возможностей. |
| Проверка обнаружения CalDAV/CardDAV: разрешённые URL, хост-шард, попадание в кэш, тайминги. |
Почта
Инструмент | Что делает |
| Список почтовых папок с ролью и количеством. |
| Список сообщений в папке, сначала новые (метаданные + ограниченный фрагмент, никогда не тела). |
| Список непрочитанной почты в папке. |
| Поиск в одной папке по ключевому слову, отправителю и диапазону дат. |
| Чтение одного сообщения полностью по непрозрачному идентификатору. |
| Чтение одного вложения как текста (текст PDF извлекается). |
| Создание нового сообщения в Drafts (никогда не отправляется). |
| Ответ на сообщение в Drafts, в ветке (никогда не отправляется). |
| Подготовка файла для вложения в черновик (из сообщения, сырых байтов или URL загрузки). |
| Завершение предварительно подписанной загрузки вложения. |
Календарь
Инструмент | Что делает |
| Список календарей: id, имя, цвет, флаг подписки. |
| Список событий в диапазоне дат (повторяющиеся события разворачиваются в экземпляры). |
| Чтение одного события полностью по непрозрачному идентификатору. |
| Поиск событий по ключевому слову или участнику в диапазоне. |
| Поиск свободных слотов во всех календарях на длительность и диапазон. |
| Создание события. С участниками сначала предпросмотр и возврат подтверждения. |
| Предпросмотр изменения; ничего не записывается до |
| Предпросмотр удаления одного события; ничего не записывается до |
| Применение предпросмотренного создания/обновления/удаления с использованием его токена подтверждения. |
Контакты
Инструмент | Что делает |
| Поиск контактов по имени или email (строки содержат адреса). |
| Чтение одного контакта полностью по непрозрачному идентификатору. |
Полные входные параметры для каждого инструмента находятся в описаниях самих инструментов и в ARCHITECTURE.md.
Требования
Требование | Почему |
Учётная запись Cloudflare, тариф Workers Paid | Бесплатный тариф с бюджетом 10 мс CPU не может разбирать MIME-тела и PDF-вложения. |
Домен на Cloudflare |
|
Apple ID с паролем приложения | iCloud требует пароль приложения для 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. Создание привязок хранилища
Каждая команда выводит идентификатор. Вставьте его в соответствующую запись в 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Добавьте правило жизненного цикла в корзину, чтобы подготовленные загрузки истекали через один день
(панель Cloudflare → R2 → ваша корзина → Settings → Object lifecycle rules:
префикс staging/, удалять через 1 день). Это обязательно — токен подготовки
истекает через 24 часа, и байты не должны переживать его намного дольше.
3. Заполните wrangler.jsonc
Отредактируйте эти значения в вашем игнорируемом git wrangler.jsonc:
routes[0].pattern→ ваш пользовательский домен (например,icloud-mcp.your-domain.example)vars.R2_ACCOUNT_ID→ ваш идентификатор аккаунта Cloudflarekv_namespaces[].id→ три идентификатора из шага 2
Имя хоста автоматически встраивается в сборку из 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 requestПодключение MCP-клиента
Конечная точка MCP — https://your-domain.example/mcp. Она использует OAuth 2.1 с
динамической регистрацией клиентов.
Добавьте URL коннектора (
https://your-domain.example/mcp) в вашем MCP-клиенте.Клиент перенаправит вас на страницу
/authorize.Введите ваш
AUTH_SECRETи подтвердите.
Список разрешённых источников перенаправления — https://claude.ai плюс loopback. Чтобы авторизовать
клиента на другом источнике, добавьте его в 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 хуком. Локальные запуски используют
локальные KV/R2 Miniflare — никакое живое хранилище Cloudflare не затрагивается.
Не направляйте тесты или любые автоматизированные шаги на ваш реальный Apple ID. Набор использует фиктивные учётные данные намеренно (D-09).
Тестирование
npm test # full suite
npm run typecheck # tsc --noEmit
npm run scan # the safety scanner (see below)Тесты запускаются внутри реального рантайма workerd через
@cloudflare/vitest-pool-workers,
поэтому код сокетов и DAV проверяется в реалистичных ограничениях Workers, а не в Node-моке.
~2400 тестов, без необходимости в живой учётной записи.
Обеспечение безопасности
Пять правил безопасности механически обеспечиваются scripts/forbidden-tokens.mjs,
который запускается как из набора тестов, так и из pre-commit хука:
Нет путей транспорта с оппортунистическим TLS (только неявный TLS на 993).
Нет отправки почты — нет SMTP, один путь записи черновиков, обеспечивается как счётчик.
Только один модуль может открывать TCP-сокет.
Никакие учётные данные никогда не попадают в лог или ошибку (в
src/нет логирования).Чтение почты никогда не помечает её как прочитанную (почтовые ящики открываются только для чтения, выборки с peek).
Изменение любого из этих правил — это изменение границы безопасности проекта. Правила, их причины и способы обеспечения описаны в 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 (схемы).
Вклад
Приветствуются issues и pull request'ы. Прежде чем менять что-либо в 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