Skip to main content
Glama
reinthal

icloud-calendar-mcp

by reinthal

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ICLOUD_CALENDARNoName of the target iCloud calendarAlex Plugg
ICLOUD_PASSWORDYesiCloud app-specific password
ICLOUD_USERNAMEYesiCloud account email address

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_calendarsA

List all available iCloud calendars with comprehensive metadata.

Returns: A list of dicts containing: - name: Display name with provider prefix - provider: Provider identifier (icloud) - url: CalDAV URL for the calendar - description: Calendar description (if set) - timezone: Calendar timezone information (extracted from VTIMEZONE data) - supported_components: List of supported component types (VEVENT, VTODO, etc.)

list_eventsA

List calendar events from specified calendar or all calendars.

Args: calendar_name: Full calendar name with provider prefix (e.g. '[iCloud] Work'). Defaults to all iCloud calendars. start: ISO 8601 start datetime. Defaults to start of current month. end: ISO 8601 end datetime. Defaults to 30 days after start.

Returns: List of event dicts with 'calendar' and 'provider' fields added.

get_eventA

Get a single calendar event by its UID.

Args: uid: The unique identifier of the event. calendar_name: Optional full calendar name with provider prefix. Defaults to searching all iCloud calendars.

Returns: Event dict with 'calendar' and 'provider' fields.

Raises: ValueError: If event not found

create_eventA

Create a new calendar event in an iCloud calendar.

Args: summary: Title of the event. start: ISO 8601 start datetime. end: ISO 8601 end datetime. calendar_name: Full calendar name with provider prefix (e.g. '[iCloud] Work'). Defaults to DEFAULT_CALENDAR for backward compatibility. description: Optional event description. location: Optional event location. rrule: Optional iCalendar RRULE string for recurring events.

Returns: The created event as a dict with its assigned UID.

update_eventA

Update an existing calendar event by UID. Only provided fields are changed.

Args: uid: The unique identifier of the event to update. summary: New title (optional). start: New ISO 8601 start datetime (optional). end: New ISO 8601 end datetime (optional). description: New description (optional). location: New location (optional). calendar_name: Full calendar name with provider prefix.

Returns: The updated event as a dict.

Raises: ValueError: If event not found

delete_eventA

Delete a calendar event by its UID.

Args: uid: The unique identifier of the event to delete. calendar_name: Full calendar name with provider prefix.

Returns: Confirmation dict with the deleted event's UID and summary.

Raises: ValueError: If event not found

update_calendar_metadataA

Update metadata for a calendar.

Args: calendar_name: Full calendar name with provider prefix (e.g. '[iCloud] Work') description: New description for the calendar (optional)

Returns: Dict with the updated calendar metadata including provider information

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
calendars_resourceList all available iCloud calendars as a resource. Returns a JSON array of objects with comprehensive metadata for each calendar. Exposed as a resource so clients can discover available calendars on connect without explicitly invoking a tool.
timezone_resourceGet current timezone information. Returns: JSON string containing timezone information

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair: calendars vs. events, and list/get/create/update/delete are clearly separated. No two tools overlap in purpose, and the parameter descriptions reinforce their differences.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (list_calendars, create_event, delete_event, etc.). The naming convention is uniform and predictable across the entire set.

Tool Count5/5

Seven tools is well-scoped for an iCloud calendar server, covering calendar listing/metadata and event CRUD without unnecessary bloat. Each tool has a clear role and the count feels intentional.

Completeness4/5

Event lifecycle is fully covered (list, get, create, update, delete), and calendar metadata can be updated. The main gap is lack of create/delete calendar operations, but that may not be supported by iCloud CalDAV and is a minor omission.

Maintenance

ActivityInactive
ResponsivenessNo issues