ical-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ICAL_MCP_URL | Yes | CalDAV server URL (e.g. https://caldav.icloud.com) | |
| ICAL_MCP_PASSWORD | Yes | Password or app-specific password | |
| ICAL_MCP_TIMEZONE | No | Default timezone (default: UTC) | UTC |
| ICAL_MCP_USERNAME | Yes | Your email / account ID | |
| ICAL_MCP_WRITABLE_CALENDARS | No | Calendars that allow writes (see Write protection) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_calendarsA | List all available calendars. Returns calendar names and IDs for use with other tools. Call this first to discover which calendars exist before querying or creating events. |
| get_eventsA | Get events within a date range. Returns events sorted by start time. Recurring events are returned as individual expanded occurrences within the requested range. |
| create_eventA | Create a new calendar event. Confirm the calendar, date, time, and details with the user before calling. Returns the created event with its ID and ETag for future updates. |
| update_eventA | Update an existing calendar event. Only send the fields you want to change — unchanged fields are preserved. Requires the event's ETag for optimistic concurrency; if the event was modified elsewhere, the update will fail with a conflict error. |
| delete_eventA | Delete a calendar event. Confirm with the user before deleting. Pass the ETag from get_events to ensure you're deleting the right version. |
| get_freebusyA | Check free/busy status for a time range. Returns a list of busy time blocks within the requested range. Useful for finding available slots before scheduling. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aberhamm/ical-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server