icloud-calendar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TZ | No | Alternative IANA timezone environment variable applied to times without an offset (default UTC). | UTC |
| ICLOUD_APPLE_ID | No | Apple ID email. | |
| MCP_BEARER_TOKEN | No | Token clients must send as Authorization: Bearer <token>. Required only for SSE transport. | |
| ICLOUD_APP_PASSWORD | No | App-specific password for iCloud Calendar (not your Apple ID password). | |
| ICLOUD_MCP_TIMEZONE | No | IANA timezone applied to times without an offset (default UTC), e.g. Europe/London. | UTC |
| ICLOUD_APPLE_ID_FILE | No | Path to a file containing the Apple ID email (container secret variant). | |
| ICLOUD_MCP_READ_ONLY | No | Set to true to hide create_event, update_event and delete_event. | false |
| MCP_BEARER_TOKEN_FILE | No | Path to a file containing the bearer token (container secret variant). Required only for SSE transport. | |
| ICLOUD_APP_PASSWORD_FILE | No | Path to a file containing the app-specific password (container secret variant). |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_calendarsA | List the calendars that can hold events, with their id and name. |
| list_eventsA | List events between start and end (ISO 8601 date or datetime; naive times use the
server's default timezone). A date-only |
| get_eventA | Get one event by UID. For a recurring event this returns the series, including its RRULE. |
| create_eventA | Create an event in |
| update_eventA | Update fields of an event by UID; omitted fields are unchanged and an empty string
clears location or description. Changing only |
| delete_eventA | Delete an event by UID. For a recurring event this deletes the whole series. |
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 6 tools
Each tool targets a distinct calendar/event operation: listing calendars, listing events in a range, getting a single event, creating, updating, or deleting. The boundaries between list_events and get_event are clear from their descriptions, and the mutation tools are unambiguous.
All tool names follow a consistent snake_case verb_noun pattern: list_calendars, list_events, get_event, create_event, update_event, delete_event. There are no mixed conventions or vague names.
Six tools are well scoped for a calendar server, covering calendar discovery and full event CRUD without unnecessary bloat. Each tool has a clear role and earns its place.
The surface covers the core event lifecycle (create, read/list, update, delete) and calendar discovery. Minor gaps exist around calendar management, attendee/reminder handling, and per-occurrence recurring-event edits, but the main workflows are covered.