icloud-mcp

An MCP server for mail, calendar, contacts, reminders, notes and Safari: locally through macOS or over iCloud protocols.

  • 80 ★ on the repository
  • Last commit
  • MIT
MCP server

Broad access

Why this level

  • The tools read mail, messages and notes, send emails and delete events, contacts and reminders in your account.
All reasons and checks

mrgo2/icloud-mcp

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/icloud-mcp

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The tools read mail, messages and notes, send emails and delete events, contacts and reminders in your account.

This is third-party code. Review the repository files before installing.

What it does

The server gives an agent 41 tools for seven Apple services. In local mode it drives the native macOS apps through AppleScript: no passwords or network, and it reaches services the iCloud protocols do not expose: reminders, notes, messages and Safari. In cloud mode it works over IMAP, SMTP, CalDAV and CardDAV and runs on any machine, not just a Mac. The `set-mode` tool switches modes at runtime without a restart. Tools include `send-email`, `delete-event`, `update-event`, `delete-contact` and `delete-reminder`. Reads (`list-*`, `read-*`, `search-*`, `get-*`) are marked safe, while writes and deletes are annotated explicitly so a client can ask for confirmation. The server talks only over stdin and stdout, opens no ports and keeps no telemetry.

Who it is for. Mac and iCloud users who want to triage mail, schedule meetings and keep notes and reminders from Claude Code, Cursor or Claude Desktop.

Good fit when

  • An agent finds emails on a topic and drafts a reply, and you confirm sending.
  • The week meetings are moved in the calendar with one request.
  • Today reminders are collected from several lists.
  • Contacts are searched by organisation and data is fixed in one request.

Not a fit when

  • You need access to other peoples mailboxes and calendars, while the server is built for your own account.
  • You have no Mac and no iCloud app-specific password.
  • Emails and messages must not be shown to the model.

Example request

Show emails from clients over the last three days, draft a reply to the most urgent and add a reminder for tomorrow.

MCP

Transport
stdio
Authentication
key is optional

Environment variables

USE_LOCAL_MODE
The value `false` switches on cloud mode.
ICLOUD_EMAIL
iCloud address for cloud mode.
ICLOUD_APP_PASSWORD secret
Apple app-specific password for cloud mode.

Limitations

Local mode works only on macOS: the first time it touches an app the system asks for permission to control it, and reading messages needs disk access and the `imsg` utility. Cloud mode needs `USE_LOCAL_MODE=false`, `ICLOUD_EMAIL` and an app-specific password in `ICLOUD_APP_PASSWORD`, created at account.apple.com. Node.js 20 or newer is required. The tools can send emails and delete data, and recurring events in local mode change as a whole by series id. The content of emails and notes reaches the model, so use a client that asks for confirmation of actions.

How to disable. Remove the `icloud` entry from the client configuration or run `claude mcp remove icloud`. Revoke app control permissions in macOS settings and delete the Apple app-specific password at account.apple.com.

FAQ

How do I connect it to Claude Code?

Run `claude mcp add --transport stdio icloud -- npx -y mcp-icloud`. In other clients add an `icloud` server with the command `npx` and arguments `-y mcp-icloud`.

How do local and cloud mode differ?

Local mode drives Mac apps with no passwords and sees notes, messages, reminders and Safari. Cloud mode uses the iCloud protocols and runs from any machine, but does not cover those services.

Where is the app-specific password kept?

In a `.env` file beside the module or in the macOS Keychain when the `.mcpb` bundle is used. The value is never logged.

Why does a call fail with an authorisation error?

You dismissed the macOS prompt to control the app. Enable the checkbox under Automation in privacy settings and the `-1743` error goes away.

What does the server collect?

Nothing: no telemetry, analytics or state on disk. Data moves between your machine, the connected client and Apple services.

Discussion

No questions or reviews yet.

MCP server for Apple Mail on macOS: read, search, send and organize mail through AppleScript or IMAP and SMTP.

MCP serverBroad access111Repository stars

An MCP server for Mail on Mac: an agent reads, searches, writes and sorts email and triages the inbox, with a read-only mode

MCP serverBroad access256Repository stars

An MCP server for Apple Mail on macOS: search, reading, drafts, rules and attachments, with confirmation for dangerous steps.

MCP serverBroad access105Repository stars
Official

A local MCP server for Mac and Windows that lets an agent work with mail, messengers, calendars and files.

MCP serverBroad access81Repository stars

An MCP server for Apple Mail on macOS: 8 read tools and body search through an FTS5 index on large mailboxes

MCP serverBroad access74Repository stars

README in short

The README describes two modes, the access and security model, a privacy policy, the full tool list with parameters, three install paths and environment variables. Separate sections explain macOS prompts and EventKit.

README badge

Report a problem