apple-icloud-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPLE_ID | Yes | Your Apple ID email | |
| APPLE_APP_PASSWORD | Yes | The app-specific password from step 1 (created at account.apple.com under Sign-In and Security, then App-Specific Passwords) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| calendar_list_calendarsA | List iCloud calendars (name, supported component types). |
| calendar_list_eventsB | List events between start and end (ISO dates/datetimes, e.g. 2026-10-15 and 2026-10-29). Recurrences are expanded. Optionally filter by calendar name. |
| reminders_list_listsA | List iCloud reminder lists (calendars that support VTODO). |
| reminders_list_incompleteC | List incomplete reminders (VTODOs), optionally from one list. |
| calendar_create_eventA | Create a calendar event. start and end are ISO dates or datetimes. A plain date such as 2026-11-06 makes an all-day event. timezone_name is an IANA name such as America/Sao_Paulo and applies to datetimes without an offset. end defaults to one hour after start, or the next day for all-day events. Returns the new event's uid. |
| calendar_update_eventB | Change fields of an existing event, found by uid (from calendar_list_events). Only the fields you pass change. Not for recurring events with exceptions: those are updated as a whole series. |
| calendar_delete_eventA | Permanently delete an event by uid (from calendar_list_events). This cannot be undone. |
| reminders_createB | Create a reminder. due is an optional ISO date or datetime. priority is 1 (high) to 9 (low). Returns its uid. |
| reminders_updateC | Change a reminder found by uid (from reminders_list_incomplete). Pass completed=true to mark it done. |
| reminders_deleteB | Permanently delete a reminder by uid. This cannot be undone. |
| contacts_searchA | Search iCloud contacts by name/email/phone/org substring (empty query lists all, up to limit). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool is scoped to a distinct resource (calendar, reminder, contact) and action (list, create, update, delete, search), with domain prefixes that make misselection unlikely. The only near-pairs, calendar_list_calendars vs calendar_list_events and reminders_list_lists vs reminders_list_incomplete, are clearly distinguished by their descriptions.
The set follows a predictable domain_action_object pattern (calendar_create_event, reminders_create, contacts_search) throughout. The only blemish is the inconsistent domain prefix form: singular 'calendar_' vs plural 'reminders_', which is readable but not perfectly uniform.
Eleven tools is well within the sweet spot and each one earns its place by covering a specific resource/action pair. No redundant or filler tools are present.
Calendar and reminder coverage is essentially full CRUD plus listing, and uid-based lookups are routed through the list tools. Contacts, however, is search-only with no create/update/delete, a notable gap if contact management is in scope.