iCloud MCP
NPM · MCP-ICLOUD
Apple Mail, Calendar, Contacts, Reminders, Notes, Messages and Safari via AppleScript or iCloud
Available components
Last scanned (3 hours ago)
Scores higher than 92% of npm servers
Category Productivity and Notes
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security81
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects @modelcontextprotocol/server 2.0.0, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 9 of 47 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to MrGo2/icloud-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2745 tokens (~66/item across 41 items; 41 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (37% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 42 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +21
- CVE-2026-121426 affects this package: high ▼ security
- CVE-2026-121424 affects this package: high ▼ security
- CVE-2026-121425 affects this package: high ▼ security
- Known CVEs: unverified → fail ▼ security
- GHSA-8c8m-p3m8-cjg8 no longer affects this package ▲ security
- GHSA-85x2-q946-cp5h no longer affects this package ▲ security
- GHSA-m943-m63m-w62w no longer affects this package ▲ security
- Malware scan: unverified → pass ▲ security
- Dependency health: unverified → 0.90 ▲ functional
- 4 Nov 26 −5
- Known CVEs: fail → unverified ▼ security
- Dependency health: 0.90 → unverified ▼ functional
- Package version: 2.1.5 → 2.2.2 functional
- Package version: 2.1.5 → 2.2.1 functional
- Package version: 2.1.5 → 2.2.0 functional
- 3 Nov 26 −16
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.90 functional
- Package version: 2.1.3 → 2.1.5 functional
- 28 Oct 26 0
- GHSA-f897-62hf-6gxq affects this package: high ▼ security
- CVE-2026-110869 affects this package: high ▼ security
- CVE-2026-110872 affects this package: high ▼ security
- CVE-2026-110870 affects this package: high ▼ security
- Stability: 0.97 → pass security
- 27 Oct 26 0
- Stability: pass → 0.97 functional
- 24 Oct 26 0
- GHSA-85x2-q946-cp5h affects this package: high ▼ security
- GHSA-m943-m63m-w62w affects this package: high ▼ security
- GHSA-8c8m-p3m8-cjg8 affects this package: high ▼ security
- 23 Oct 26 0
- CVE-2026-110871 affects this package: high ▼ security
- Security disclosure: unverified → fail ▼ functional
- 22 Oct 26 0
- Security disclosure: fail → unverified ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/mcp-icloud@2.2.2
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | MrGo2/icloud-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/MrGo2/icloud-mcp/.github/workflows/release.yml@refs/tags/v2.2.2 |
| Rekor log index | 3685217018 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:bdc894df8e5ad516dff22d31d012d2e191c561a1d8e81c73e5d9f65ac1a4fefe3c2088ac319e2cc09fb29771f24017681e836f33d88cc7c844d8cfb4d |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 17 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-46jr-4wx8-v453 | CVE-2026-111768 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-f897-62hf-6gxq | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes | |
| GHSA-jm63-cq47-j5jp | CVE-2026-111770 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:H | yes |
| GHSA-rvq5-wwqv-78pq | CVE-2026-111771 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-39m8-27wv-hr27 | CVE-2026-110871 | medium | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-4ffr-jq9g-5ffx | CVE-2026-110869 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-4g23-2xm8-66gc | CVE-2026-110872 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-6vj9-mwq6-2f5v | CVE-2026-100701 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:N | yes |
| GHSA-85x2-q946-cp5h | CVE-2026-121426 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N | yes |
| GHSA-8c8m-p3m8-cjg8 | CVE-2026-121424 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N | yes |
| GHSA-8vvx-rff5-p5rq | CVE-2026-100702 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-g57g-f23g-4646 | CVE-2026-100699 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-g73g-hqqh-jr95 | CVE-2026-110870 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-m943-m63m-w62w | CVE-2026-121425 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N | yes |
| GHSA-prgh-xp8r-p3m5 | CVE-2026-90776 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-v53p-9fqp-m79j | CVE-2026-100700 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-c2qf-rxjj-qqgw | CVE-2022-25883 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 47 packages
| Packages resolved | 47 |
|---|---|
| Stale | 9 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
about About This Server ~16
Returns information about this iCloud MCP server
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
check-auth-status Check Auth Status ~18
Check if iCloud credentials are configured correctly
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
close-safari-tab Close Safari Tab ~60
Closes a Safari tab
| Name | Type | Req | Description |
|---|---|---|---|
| tabIndex | integer | – | Tab index to close (0-based). If omitted, closes the current tab. |
| windowIndex | integer | – | Window index (0-based, default: 0 for front window) |
No output schema declared.
No examples provided.
complete-reminder Complete Reminder ~56
Marks a reminder as complete or incomplete (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | – | Set to true to complete, false to uncomplete (default: true) |
| reminderId | string | yes | ID of the reminder (required) |
No output schema declared.
No examples provided.
create-contact Create Contact ~148
Creates a contact in the user's address book (Contacts.app in local mode, iCloud over CardDAV in cloud mode). Every field is optional, so pass at least a name (displayName, or firstName and lastName) along with any known email, phone, organization, job title or notes.
| Name | Type | Req | Description |
|---|---|---|---|
| displayName | string | – | Full display name |
| string | – | Email address | |
| firstName | string | – | First name |
| lastName | string | – | Last name |
| notes | string | – | Notes about the contact |
| organization | string | – | Company/Organization |
| phone | string | – | Phone number |
| title | string | – | Job title |
No output schema declared.
No examples provided.
create-event Create Event ~149
Creates a new calendar event
| Name | Type | Req | Description |
|---|---|---|---|
| calendarName | string | – | Local mode: name of the calendar to add the event to (optional, uses the default) |
| calendarUrl | string | – | Cloud mode: URL of the calendar to add the event to (optional, uses the first calendar) |
| description | string | – | Event description (optional) |
| end | string | yes | End date/time in ISO 8601 format |
| location | string | – | Event location (optional) |
| start | string | yes | Start date/time in ISO 8601 format (e.g., 2026-01-15T10:00:00) |
| summary | string | yes | Event title/summary |
No output schema declared.
No examples provided.
create-note Create Note ~52
Creates a new note
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Note content/body |
| folderName | string | – | Folder to create the note in (default: Notes) |
| title | string | yes | Note title (required) |
No output schema declared.
No examples provided.
create-reminder Create Reminder ~118
Creates a new reminder (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Reminder notes/description |
| dueDate | string | – | Due date in ISO format (e.g., 2026-01-15T10:00:00) |
| listName | string | – | Name of the list to add to (default: Reminders) |
| name | string | yes | Reminder title (required) |
| priority | integer | – | Priority level (0=none, 1=high, 5=medium, 9=low) |
No output schema declared.
No examples provided.
delete-contact Delete Contact ~62
Permanently deletes a contact from the user's address book. Takes the handle returned by list-contacts or search-contacts; there is no undo through this server.
| Name | Type | Req | Description |
|---|---|---|---|
| contactUrl | string | yes | URL or ID of the contact to delete (from list-contacts output) |
No output schema declared.
No examples provided.
delete-event Delete Event ~65
Deletes a calendar event. In local mode, every occurrence of a recurring event shares the series UID, so this acts on the whole series, not one occurrence.
| Name | Type | Req | Description |
|---|---|---|---|
| eventUrl | string | yes | Event handle from list-events: the URL in cloud mode, the UID in local mode |
No output schema declared.
No examples provided.
delete-reminder Delete Reminder ~33
Deletes a reminder (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| reminderId | string | yes | ID of the reminder to delete (required) |
No output schema declared.
No examples provided.
get-current-safari-url Get Current Safari URL ~24
Gets the URL and title of the current/active Safari tab
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list-calendars List Calendars ~15
Lists all available calendars
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Calendars |
| total | integer | yes | Number of items returned |
No examples provided.
list-chats List Chats ~85
List recent iMessage/SMS conversations, most recent first. Use `since` to get only the conversations active after a date (e.g. the last 7 days).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of conversations to return (default 20) |
| since | string | – | Only conversations with a message at or after this date (ISO 8601, optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Recent conversations |
| total | integer | yes | Number of items returned |
No examples provided.
list-contact-accounts List Contact Accounts ~29
Lists all contact accounts (iCloud, Google, Exchange, etc.) - LOCAL mode only
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Contact accounts |
| total | integer | yes | Number of items returned |
No examples provided.
list-contact-groups List Contact Groups ~46
Lists contact groups from all accounts or a specific account - LOCAL mode only
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | Optional account ID to filter groups by (from list-contact-accounts) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Contact groups |
| total | integer | yes | Number of items returned |
No examples provided.
list-contacts List Contacts ~80
Lists contacts from the user's address book, up to 50 per call, including the handle that read-contact and delete-contact take. For a targeted lookup, search-contacts filters by name, email or phone instead of paging through the full list.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number of contacts to retrieve (default: 25, max: 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Contacts |
| total | integer | yes | Number of items returned |
No examples provided.
list-emails List Emails ~63
Lists emails from a folder (default: inbox)
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number of emails to retrieve (default: 25, max: 50) |
| folder | string | – | Email folder (inbox, sent, drafts, trash, archive, junk) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Emails |
| total | integer | yes | Number of items returned |
No examples provided.
list-events List Events ~98
Lists upcoming calendar events within a look-ahead window (30 days by default, up to 365). Each event carries its title, start and end times, and the ref handle that update-event and delete-event take as their eventUrl argument.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number of events to retrieve (default: 25, max: 50) |
| daysAhead | integer | – | Number of days to look ahead (default: 30) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Calendar events |
| total | integer | yes | Number of items returned |
No examples provided.
list-folders List Mail Folders ~14
Lists all email folders
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Mail folders |
| total | integer | yes | Number of items returned |
No examples provided.
list-note-folders List Note Folders ~21
Lists all folders in Notes.app (LOCAL mode only)
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | list-note-folders |
| total | integer | yes | Number of items returned |
No examples provided.
list-notes List Notes ~57
Lists notes from a specific folder or all folders
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Maximum number of notes to return (default: 25) |
| folderName | string | – | Name of the folder (optional, lists all if not provided) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | list-notes |
| total | integer | yes | Number of items returned |
No examples provided.
list-reminder-lists List Reminder Lists ~24
Lists all reminder lists from Reminders.app (LOCAL mode only)
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | list-reminder-lists |
| total | integer | yes | Number of items returned |
No examples provided.
list-reminders List Reminders ~77
Lists reminders from a specific list or all lists (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Maximum number of reminders to return (default: 50) |
| includeCompleted | boolean | – | Include completed reminders (default: false) |
| listName | string | – | Name of the reminder list (optional, lists all if not provided) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | list-reminders |
| total | integer | yes | Number of items returned |
No examples provided.
list-safari-tabs List Safari Tabs ~20
Lists all open tabs in Safari across all windows
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | list-safari-tabs |
| total | integer | yes | Number of items returned |
No examples provided.
mark-as-read Mark Email Read/Unread ~79
Marks an email as read or unread
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Email folder (default: inbox) |
| isRead | boolean | – | Mark as read (true) or unread (false). Default: true |
| uid | string | yes | Email handle: the UID from list-emails in cloud mode, or the message ID in local mode |
No output schema declared.
No examples provided.
open-safari-url Open URL In Safari ~55
Opens a URL in Safari (new tab or new window)
| Name | Type | Req | Description |
|---|---|---|---|
| inNewWindow | boolean | – | Open in new window instead of new tab (default: false) |
| url | string | yes | URL to open (required) |
No output schema declared.
No examples provided.
react-message React To Message ~45
Send a tapback reaction (love, like, dislike, laugh, emphasis, question)
| Name | Type | Req | Description |
|---|---|---|---|
| chatId | integer | yes | Chat ID |
| type | string | yes | Reaction type |
No output schema declared.
No examples provided.
read-contact Read Contact ~36
Get detailed information about a specific contact
| Name | Type | Req | Description |
|---|---|---|---|
| contactUrl | string | yes | URL or ID of the contact (from list-contacts output) |
No output schema declared.
No examples provided.
read-email Read Email ~58
Reads the full content of an email by UID
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Email folder (default: inbox) |
| uid | string | yes | Email handle: the UID from list-emails in cloud mode, or the message ID in local mode |
No output schema declared.
No examples provided.
read-messages Read Messages ~97
Read message history for a specific iMessage/SMS conversation
| Name | Type | Req | Description |
|---|---|---|---|
| attachments | boolean | – | Include attachment info (default false) |
| chatId | integer | yes | Chat ID (rowid from list-chats) |
| end | string | – | End date (ISO 8601, optional) |
| limit | integer | – | Number of messages (default 20) |
| start | string | – | Start date (ISO 8601, optional) |
No output schema declared.
No examples provided.
read-note Read Note ~32
Reads the content of a specific note
| Name | Type | Req | Description |
|---|---|---|---|
| noteId | string | yes | ID of the note to read (required) |
No output schema declared.
No examples provided.
search-contacts Search Contacts ~54
Search contacts by name, email, or phone
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Max results (default: 25, max: 50) |
| query | string | yes | Search query (name, email, or phone) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Matching contacts |
| total | integer | yes | Number of items returned |
No examples provided.
search-emails Search Emails ~139
Searches one mail folder (inbox by default) by free text, sender, subject and unread state; the filters combine as AND. Results carry the same summary fields as list-emails, including the ref handle that read-email and mark-as-read take.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Max results (default: 25, max: 50) |
| folder | string | – | Email folder to search (default: inbox) |
| from | string | – | Filter by sender |
| query | string | – | Text to search in email content |
| subject | string | – | Filter by subject |
| unreadOnly | boolean | – | Only show unread emails |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Matching emails |
| total | integer | yes | Number of items returned |
No examples provided.
search-notes Search Notes ~45
Search notes by text in title or content
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Maximum results to return (default: 25) |
| query | string | yes | Search text (required) |
No output schema declared.
No examples provided.
search-reminders Search Reminders ~49
Search reminders by text in name or body (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Maximum results to return (default: 25) |
| query | string | yes | Search text (required) |
No output schema declared.
No examples provided.
send-email Send Email ~159
Sends an email immediately from the user's account to one or more comma-separated recipients, with optional CC, BCC and HTML body. Cloud mode delivers over SMTP and returns the new message ID; local mode sends through Mail.app, which only sends plain text and returns no ID. There is no draft step, so the message goes out as soon as the tool runs.
| Name | Type | Req | Description |
|---|---|---|---|
| bcc | string | – | BCC recipient(s), comma-separated |
| body | string | yes | Email body content |
| cc | string | – | CC recipient(s), comma-separated |
| isHtml | boolean | – | Whether the body is HTML (default: false) |
| subject | string | yes | Email subject |
| to | string | yes | Recipient email address(es), comma-separated |
No output schema declared.
No examples provided.
send-message Send Message ~87
Sends an iMessage or SMS to a phone number or email handle, with an optional file attachment. The message is delivered as soon as the tool runs; there is no draft step and no recall.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Message content |
| file | string | – | Path to file attachment (optional) |
| to | string | yes | Recipient phone number (with country code) or email |
No output schema declared.
No examples provided.
set-mode Switch Mode ~57
Switch between LOCAL (AppleScript/macOS apps) and CLOUD (iCloud protocols) modes
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | Mode to activate: "local" for AppleScript access to macOS apps, "cloud" for iCloud protocols |
No output schema declared.
No examples provided.
update-event Update Event ~174
Updates an existing calendar event. Only the fields you pass are changed. In cloud mode the CalDAV property-merge preserves recurrence, invitees and alarms (experimental: the live round-trip is not yet verified). In local mode, every occurrence of a recurring event shares the series UID, so this acts on the whole series, not one occurrence.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | New description (optional) |
| end | string | – | New end date/time in ISO 8601 format (optional) |
| eventUrl | string | yes | Event handle from list-events: the URL in cloud mode, the UID in local mode |
| location | string | – | New location (optional) |
| start | string | – | New start date/time in ISO 8601 format (optional) |
| summary | string | – | New event title (optional) |
No output schema declared.
No examples provided.
update-reminder Update Reminder ~78
Updates an existing reminder (LOCAL mode only)
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | New notes/description |
| dueDate | string | – | New due date in ISO format |
| name | string | – | New title |
| priority | integer | – | New priority level |
| reminderId | string | yes | ID of the reminder to update (required) |
No output schema declared.
No examples provided.
How do I install the iCloud MCP server?
iCloud MCP runs locally as an npm package, launched with npx -y mcp-icloud. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · mcp-icloud
claude mcp add mrgo2-icloud-mcp -- npx -y mcp-icloud
What is the iCloud MCP server?
iCloud MCP is listed in the public MCP registry as io.github.MrGo2/icloud-mcp. Apple Mail, Calendar, Contacts, Reminders, Notes, Messages and Safari via AppleScript or iCloud. This page covers its npm package (mcp-icloud).
Is the iCloud MCP server safe to use?
iCloud MCP scores 88 out of 100 on VerifyMCP. We recorded 17 known advisories against it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the iCloud MCP server expose?
iCloud MCP exposes 41 tools: about, check-auth-status, set-mode, list-emails, read-email, and 36 more. Their descriptions and schemas cost roughly 2,674 tokens of context every time the server is loaded.
Is the iCloud MCP server still maintained?
iCloud MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the iCloud MCP server under?
iCloud MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.