icloud-calendar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ICLOUD_USERNAME | Yes | Your iCloud email address | |
| ICLOUD_MCP_CONFIG | No | Path to config JSON file for HTTP mode parameters | |
| ICLOUD_APP_PASSWORD | Yes | Your Apple app-specific password (create at appleid.apple.com) | |
| ICLOUD_MCP_HTTP_PORT | No | Port for HTTP mode (default 3000) | |
| ICLOUD_MCP_TRANSPORT | No | Transport mode: 'stdio' (default) or 'http' | |
| ICLOUD_MCP_HTTP_TOKEN | No | Bearer token for HTTP mode (at least 24 characters) |
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_calendarsA | List iCloud calendars |
| list_eventsA | List events in an explicit range with pagination |
| get_eventC | Get an event by persistent opaque handle |
| create_eventB | Create an event idempotently |
| update_eventB | Update an event using ETag concurrency control |
| delete_eventC | Delete an event using ETag concurrency control |
| find_conflictsC | Find overlapping iCloud events |
| free_busyB | Compute busy intervals from visible iCloud events |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| schedule_event | Explicit schedule_event user template |
| reschedule_event | Explicit reschedule_event user template |
| find_conflicts | Explicit find_conflicts user template |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| calendars | Available iCloud calendars |
TDQS
Scored across 8 tools
Each tool targets a distinct resource or action: calendars vs events, single vs list, CRUD vs conflict/free-busy analysis. find_conflicts and free_busy are related but serve different purposes (overlap detection vs availability intervals). No two tools are ambiguous.
Most tools follow a consistent verb_noun pattern (list_calendars, create_event, update_event). The only exception is free_busy, which is a conventional compound term rather than verb_noun, but it remains clear and doesn't disrupt the overall consistency.
Eight tools cover the core calendar event lifecycle (list, get, create, update, delete) plus calendar listing and analysis (conflicts, free_busy). This is well-scoped and avoids unnecessary bloat, fitting the server's purpose neatly.
The event lifecycle is fully covered with create, read, update, delete, and list operations, and conflict detection adds analytical value. The main gap is that calendar management only supports listing, not creating or modifying calendars, but this is acceptable for an event-focused MCP. A search operation would be a minor enhancement.