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 · SCANNED SEP 20

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

Available components

+1 this week 90 Trust /100
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 Security90
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects semver 5.3.0, reached via imap > utf7 > semver. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 11 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 39 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 2646 tokens (~64/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 Management90
  • Stability observed for 27 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
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
// .cursor/mcp.json
{
  "mcpServers": {
    "mrgo2-icloud-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-icloud"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mrgo2-icloud-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-icloud"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add mrgo2-icloud-mcp -- npx -y mcp-icloud
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mrgo2-icloud-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-icloud"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mrgo2-icloud-mcp --command npx --arg -y --arg mcp-icloud
# ~/.hermes/config.yaml
mcp_servers:
  mrgo2-icloud-mcp:
    command: "npx"
    args: ["-y", "mcp-icloud"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mrgo2-icloud-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "mcp-icloud"
      ]
    }
  }
}
# add to Vellum
assistant mcp add mrgo2-icloud-mcp -t stdio -c npx -a -y mcp-icloud
// mcp.json
{
  "mcpServers": {
    "mrgo2-icloud-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-icloud"
      ]
    }
  }
}
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.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −2
    • Stability: pass → 0.83 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 0
    • Stability: 0.97 → pass security
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 20 Sept 2026 · Analysed npm/mcp-icloud@2.1.3

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.1.3
Rekor log index 2420668234
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:03424f9eb79c19f308e20ff081d6e6b3283a57caff4df9e73606c5aa85f2f4528b448a94cfe74b48c7d6e784d2e6343555b210510ff5b2c748657a37d

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
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 11
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 41 exposed · ~2,575 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
tabIndexintegerTab index to close (0-based). If omitted, closes the current tab.
windowIndexintegerWindow 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
completedbooleanSet 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
displayNamestringFull display name
emailstringEmail address
firstNamestringFirst name
lastNamestringLast name
notesstringNotes about the contact
organizationstringCompany/Organization
phonestringPhone number
titlestringJob title

No output schema declared.

No examples provided.

create-event ~149

Creates a new calendar event

NameTypeReqDescription
calendarNamestringLocal mode: name of the calendar to add the event to (optional, uses the default)
calendarUrlstringCloud mode: URL of the calendar to add the event to (optional, uses the first calendar)
descriptionstringEvent description (optional)
endstringyesEnd date/time in ISO 8601 format
locationstringEvent 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
bodystringNote content/body
folderNamestringFolder 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
bodystringReminder notes/description
dueDatestringDue date in ISO format (e.g., 2026-01-15T10:00:00)
listNamestringName of the list to add to (default: Reminders)
namestringyesReminder title (required)
priorityintegerPriority 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 ~38

Deletes a calendar event

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

List recent iMessage/SMS conversations with contact names and last message preview

NameTypeReqDescription
limitintegerNumber of conversations to show (default 20)
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
accountIdstringOptional 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
countintegerNumber 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
countintegerNumber of emails to retrieve (default: 25, max: 50)
folderstringEmail 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
countintegerNumber of events to retrieve (default: 25, max: 50)
daysAheadintegerNumber 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
countintegerMaximum number of notes to return (default: 25)
folderNamestringName 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
countintegerMaximum number of reminders to return (default: 50)
includeCompletedbooleanInclude completed reminders (default: false)
listNamestringName 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
folderstringEmail folder (default: inbox)
isReadbooleanMark 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
inNewWindowbooleanOpen 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
folderstringEmail 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
attachmentsbooleanInclude attachment info (default false)
chatIdintegeryesChat ID (rowid from list-chats)
endstringEnd date (ISO 8601, optional)
limitintegerNumber of messages (default 20)
startstringStart 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
countintegerMax 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
countintegerMax results (default: 25, max: 50)
folderstringEmail folder to search (default: inbox)
fromstringFilter by sender
querystringText to search in email content
subjectstringFilter by subject
unreadOnlybooleanOnly 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
countintegerMaximum 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
countintegerMaximum 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
bccstringBCC recipient(s), comma-separated
bodystringyesEmail body content
ccstringCC recipient(s), comma-separated
isHtmlbooleanWhether 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
filestringPath 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 ~147

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

NameTypeReqDescription
descriptionstringNew description (optional)
endstringNew end date/time in ISO 8601 format (optional)
eventUrlstringyesEvent handle from list-events: the URL in cloud mode, the UID in local mode
locationstringNew location (optional)
startstringNew start date/time in ISO 8601 format (optional)
summarystringNew event title (optional)

No output schema declared.

No examples provided.

update-reminder ~78

Updates an existing reminder (LOCAL mode only)

NameTypeReqDescription
bodystringNew notes/description
dueDatestringNew due date in ISO format
namestringNew title
priorityintegerNew priority level
reminderIdstringyesID of the reminder to update (required)

No output schema declared.

No examples provided.

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 90 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 20 September 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,575 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 20 September 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.