icloud-mail-calendar-contacts-mcp
Provides tools for interacting with iCloud Mail, Calendar, and Contacts via IMAP/SMTP, CalDAV, and CardDAV. Supports listing mailboxes, searching and fetching messages, sending email, managing flags/moves/drafts, listing calendars and events, creating/updating events and RSVPs, and searching/managing contacts and contact groups.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@icloud-mail-calendar-contacts-mcpwhat's on my calendar tomorrow and any new iCloud mail today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
icloud-mail-calendar-contacts-mcp
MIT-licensed Model Context Protocol server for one iCloud account (or a handful, in Cloud mode). It talks to Apple with an app-specific password over IMAP + SMTP, CalDAV, and CardDAV — the same third-party surface Mail.app / Calendar.app use.
There is no official Apple MCP. This is a small open-source one.
GitHub: eruveo/icloud-mail-calendar-contacts-mcp
Author: Michal Sevcik (@eruveo)
License: MIT
Two ways to run it
Local (your machine) | Cloud (hosted for you + friends) | |
Who | You, on your machine | You plus a few friends |
Transport | MCP stdio (Claude Desktop, Cursor, any local client) | Streamable HTTP at |
Credentials | Env vars in the client config | Per-user iCloud login, encrypted at rest; friends authenticate with a bearer token |
Docs |
Keep Local as the default. Cloud mode is opt-in (serve + a user-admin CLI).
Using Grok Bot? Run Local on your bot's own always-on computer (the box): no hosting, no cost, and every one of your bots gets the tools. See docs/setup-grok-bot.md.
Once this package is on npm you will be able to run:
npx -y icloud-mail-calendar-contacts-mcpThis repository does not publish to npm as part of development. Until then, npm install && npm run build && node dist/index.js.
Related MCP server: icloud-mcp
What it can do
Service | Protocol | Reads | Writes |
IMAP | List folders, search, fetch bodies (never implicitly marked seen) | Send, reply/forward threading, drafts, flags, move, create folders, trash | |
Calendar | CalDAV | List calendars, list/get events with timezones and expanded recurrences, list invitations | Create calendars, create/update events, attendees (iCloud sends the invites), RSVP |
Contacts | CardDAV | Search/list/get, list groups | Create/update contacts and groups |
Delete is off unless you opt in (ICLOUD_ALLOW_DELETE in Local mode, or --allow-delete per Cloud user). Permanent IMAP expunge is a separate opt-in.
What it cannot do
No app-specific-password API suitable for a third-party MCP:
Photos, iCloud Drive, Notes, Passwords / iCloud Keychain
Reminders — modern lists live on CloudKit, not reliable CalDAV
VTODO.ICLOUD_SERVICES=remindersis rejected.
Platform limits (cloud)
Host | Calendar / Contacts | Mail (IMAP/SMTP) |
Node / Docker / VPS | Yes | Yes |
Vercel (Node serverless) | Yes | Yes (new TCP connection per request; fine for light use) |
Cloudflare Workers | Yes ( | No. |
Put Cloudflare Access (email allowlist) or Tailscale in front of any public URL. Bearer tokens are necessary, not sufficient, if the endpoint is on the internet. See SECURITY.md.
Permission model
Defaults suit a personal assistant that may send mail and create events, but must not destroy data:
Flag | Default | Effect |
|
| Master switch. Disables every write and omits write tools. |
|
| SMTP |
|
| Flags, move, create mailbox, save draft. |
|
| Create/update events and calendars, RSVP. |
|
| Create/update contacts and groups. |
|
|
|
|
|
|
read-only wins. Write tool descriptions start with [WRITE]. IMAP reads still use EXAMINE + BODY.PEEK.
Tools
Mail: list_mailboxes, search_messages, list_recent_messages, get_message, send_email, mark_message, move_message, create_mailbox, save_draft, trash_message, expunge_message.
Calendar: list_calendars, list_events, get_event, list_invitations, create_calendar, create_event, update_event, respond_to_invitation, delete_event.
Contacts: list_contacts, list_contact_groups, get_contact, create_contact, update_contact, create_contact_group, delete_contact.
Develop
Node 20+.
npm install
npm test
npm run lint
npm run buildTests mock IMAP, SMTP, and DAV. They do not need a live iCloud account.
License
MIT © Michal Sevcik
This server cannot be deployed
Maintenance
Related MCP Connectors
- muse.spaceOAuthspace.muse
Let your agent into iCloud Mail, calendar and contacts. It gets actions, never your password.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
Your Gmail, Calendar, Drive, GitHub, Oura, wallet and confirmed profile facts in any MCP client.
Your mailbox for MCP clients: search, read, draft, send, rules and notes. Sending is off by default.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for iCloud integration, enabling management of calendars (CalDAV), contacts (CardDAV), and email (IMAP/SMTP) through natural language.MIT
- AlicenseNot gradedqualityBmaintenanceUnified Apple/iCloud MCP server for Calendar, Contacts, and Mail using CalDAV, CardDAV, IMAP, and SMTP protocols with app-specific passwords.MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with read-only access to iCloud mail and calendar via IMAP and CalDAV, with opt-in write support for sending mail, managing events, and contacts.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables an AI assistant to read and search iCloud mail, draft messages (never sent), manage calendar events with a preview/commit gate, and look up contacts via IMAP, CalDAV, and CardDAV.38 npmMIT