Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

iCloud MCP

NPM · MCP-ICLOUD

Apple Mail, Calendar, Contacts, Reminders, Notes, Messages and Safari via AppleScript or iCloud

Available components

0 this week 88 Trust /100

Last scanned (3 hours ago)

Scores higher than 92% of npm servers

Category Productivity and Notes

Trust breakdown (7 categories)

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
Changelog

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
Diagnostics

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 →

MCP tools · 41 exposed · ~2,674 tokens

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 →

Tool Tokens
about ~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 ~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 ~60

Closes a Safari tab

NameTypeReqDescription
tabIndexinteger–Tab index to close (0-based). If omitted, closes the current tab.
windowIndexinteger–Window index (0-based, default: 0 for front window)

No output schema declared.

No examples provided.

complete-reminder ~56

Marks a reminder as complete or incomplete (LOCAL mode only)

NameTypeReqDescription
completedboolean–Set to true to complete, false to uncomplete (default: true)
reminderIdstringyesID of the reminder (required)

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
displayNamestring–Full display name
emailstring–Email address
firstNamestring–First name
lastNamestring–Last name
notesstring–Notes about the contact
organizationstring–Company/Organization
phonestring–Phone number
titlestring–Job title

No output schema declared.

No examples provided.

create-event ~149

Creates a new calendar event

NameTypeReqDescription
calendarNamestring–Local mode: name of the calendar to add the event to (optional, uses the default)
calendarUrlstring–Cloud mode: URL of the calendar to add the event to (optional, uses the first calendar)
descriptionstring–Event description (optional)
endstringyesEnd date/time in ISO 8601 format
locationstring–Event location (optional)
startstringyesStart date/time in ISO 8601 format (e.g., 2026-01-15T10:00:00)
summarystringyesEvent title/summary

No output schema declared.

No examples provided.

create-note ~52

Creates a new note

NameTypeReqDescription
bodystring–Note content/body
folderNamestring–Folder to create the note in (default: Notes)
titlestringyesNote title (required)

No output schema declared.

No examples provided.

create-reminder ~118

Creates a new reminder (LOCAL mode only)

NameTypeReqDescription
bodystring–Reminder notes/description
dueDatestring–Due date in ISO format (e.g., 2026-01-15T10:00:00)
listNamestring–Name of the list to add to (default: Reminders)
namestringyesReminder title (required)
priorityinteger–Priority level (0=none, 1=high, 5=medium, 9=low)

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
contactUrlstringyesURL or ID of the contact to delete (from list-contacts output)

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
eventUrlstringyesEvent handle from list-events: the URL in cloud mode, the UID in local mode

No output schema declared.

No examples provided.

delete-reminder ~33

Deletes a reminder (LOCAL mode only)

NameTypeReqDescription
reminderIdstringyesID of the reminder to delete (required)

No output schema declared.

No examples provided.

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 ~15

Lists all available calendars

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyesCalendars
totalintegeryesNumber of items returned

No examples provided.

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).

NameTypeReqDescription
limitinteger–Maximum number of conversations to return (default 20)
sincestring–Only conversations with a message at or after this date (ISO 8601, optional)
NameTypeReqDescription
itemsarrayyesRecent conversations
totalintegeryesNumber of items returned

No examples provided.

list-contact-accounts ~29

Lists all contact accounts (iCloud, Google, Exchange, etc.) - LOCAL mode only

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyesContact accounts
totalintegeryesNumber of items returned

No examples provided.

list-contact-groups ~46

Lists contact groups from all accounts or a specific account - LOCAL mode only

NameTypeReqDescription
accountIdstring–Optional account ID to filter groups by (from list-contact-accounts)
NameTypeReqDescription
itemsarrayyesContact groups
totalintegeryesNumber of items returned

No examples provided.

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.

NameTypeReqDescription
countinteger–Number of contacts to retrieve (default: 25, max: 50)
NameTypeReqDescription
itemsarrayyesContacts
totalintegeryesNumber of items returned

No examples provided.

list-emails ~63

Lists emails from a folder (default: inbox)

NameTypeReqDescription
countinteger–Number of emails to retrieve (default: 25, max: 50)
folderstring–Email folder (inbox, sent, drafts, trash, archive, junk)
NameTypeReqDescription
itemsarrayyesEmails
totalintegeryesNumber of items returned

No examples provided.

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.

NameTypeReqDescription
countinteger–Number of events to retrieve (default: 25, max: 50)
daysAheadinteger–Number of days to look ahead (default: 30)
NameTypeReqDescription
itemsarrayyesCalendar events
totalintegeryesNumber of items returned

No examples provided.

list-folders ~14

Lists all email folders

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyesMail folders
totalintegeryesNumber of items returned

No examples provided.

list-note-folders ~21

Lists all folders in Notes.app (LOCAL mode only)

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyeslist-note-folders
totalintegeryesNumber of items returned

No examples provided.

list-notes ~57

Lists notes from a specific folder or all folders

NameTypeReqDescription
countinteger–Maximum number of notes to return (default: 25)
folderNamestring–Name of the folder (optional, lists all if not provided)
NameTypeReqDescription
itemsarrayyeslist-notes
totalintegeryesNumber of items returned

No examples provided.

list-reminder-lists ~24

Lists all reminder lists from Reminders.app (LOCAL mode only)

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyeslist-reminder-lists
totalintegeryesNumber of items returned

No examples provided.

list-reminders ~77

Lists reminders from a specific list or all lists (LOCAL mode only)

NameTypeReqDescription
countinteger–Maximum number of reminders to return (default: 50)
includeCompletedboolean–Include completed reminders (default: false)
listNamestring–Name of the reminder list (optional, lists all if not provided)
NameTypeReqDescription
itemsarrayyeslist-reminders
totalintegeryesNumber of items returned

No examples provided.

list-safari-tabs ~20

Lists all open tabs in Safari across all windows

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyeslist-safari-tabs
totalintegeryesNumber of items returned

No examples provided.

mark-as-read ~79

Marks an email as read or unread

NameTypeReqDescription
folderstring–Email folder (default: inbox)
isReadboolean–Mark as read (true) or unread (false). Default: true
uidstringyesEmail 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 ~55

Opens a URL in Safari (new tab or new window)

NameTypeReqDescription
inNewWindowboolean–Open in new window instead of new tab (default: false)
urlstringyesURL to open (required)

No output schema declared.

No examples provided.

react-message ~45

Send a tapback reaction (love, like, dislike, laugh, emphasis, question)

NameTypeReqDescription
chatIdintegeryesChat ID
typestringyesReaction type

No output schema declared.

No examples provided.

read-contact ~36

Get detailed information about a specific contact

NameTypeReqDescription
contactUrlstringyesURL or ID of the contact (from list-contacts output)

No output schema declared.

No examples provided.

read-email ~58

Reads the full content of an email by UID

NameTypeReqDescription
folderstring–Email folder (default: inbox)
uidstringyesEmail 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 ~97

Read message history for a specific iMessage/SMS conversation

NameTypeReqDescription
attachmentsboolean–Include attachment info (default false)
chatIdintegeryesChat ID (rowid from list-chats)
endstring–End date (ISO 8601, optional)
limitinteger–Number of messages (default 20)
startstring–Start date (ISO 8601, optional)

No output schema declared.

No examples provided.

read-note ~32

Reads the content of a specific note

NameTypeReqDescription
noteIdstringyesID of the note to read (required)

No output schema declared.

No examples provided.

search-contacts ~54

Search contacts by name, email, or phone

NameTypeReqDescription
countinteger–Max results (default: 25, max: 50)
querystringyesSearch query (name, email, or phone)
NameTypeReqDescription
itemsarrayyesMatching contacts
totalintegeryesNumber of items returned

No examples provided.

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.

NameTypeReqDescription
countinteger–Max results (default: 25, max: 50)
folderstring–Email folder to search (default: inbox)
fromstring–Filter by sender
querystring–Text to search in email content
subjectstring–Filter by subject
unreadOnlyboolean–Only show unread emails
NameTypeReqDescription
itemsarrayyesMatching emails
totalintegeryesNumber of items returned

No examples provided.

search-notes ~45

Search notes by text in title or content

NameTypeReqDescription
countinteger–Maximum results to return (default: 25)
querystringyesSearch text (required)

No output schema declared.

No examples provided.

search-reminders ~49

Search reminders by text in name or body (LOCAL mode only)

NameTypeReqDescription
countinteger–Maximum results to return (default: 25)
querystringyesSearch text (required)

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
bccstring–BCC recipient(s), comma-separated
bodystringyesEmail body content
ccstring–CC recipient(s), comma-separated
isHtmlboolean–Whether the body is HTML (default: false)
subjectstringyesEmail subject
tostringyesRecipient email address(es), comma-separated

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
bodystringyesMessage content
filestring–Path to file attachment (optional)
tostringyesRecipient phone number (with country code) or email

No output schema declared.

No examples provided.

set-mode ~57

Switch between LOCAL (AppleScript/macOS apps) and CLOUD (iCloud protocols) modes

NameTypeReqDescription
modestringyesMode to activate: "local" for AppleScript access to macOS apps, "cloud" for iCloud protocols

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
descriptionstring–New description (optional)
endstring–New end date/time in ISO 8601 format (optional)
eventUrlstringyesEvent handle from list-events: the URL in cloud mode, the UID in local mode
locationstring–New location (optional)
startstring–New start date/time in ISO 8601 format (optional)
summarystring–New event title (optional)

No output schema declared.

No examples provided.

update-reminder ~78

Updates an existing reminder (LOCAL mode only)

NameTypeReqDescription
bodystring–New notes/description
dueDatestring–New due date in ISO format
namestring–New title
priorityinteger–New priority level
reminderIdstringyesID of the reminder to update (required)

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add mrgo2-icloud-mcp -- npx -y mcp-icloud
Common questions

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.