CalDAV MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CALDAV_URL | Yes | Full CalDAV server URL | |
| CALDAV_TIMEOUT | No | HTTP request timeout in seconds. Default: 30 | 30 |
| CALDAV_FEATURES | No | Server compatibility profile (e.g., nextcloud, radicale, baikal, fastmail, icloud, google, zimbra, sogo, posteo, ox, synology) | |
| CALDAV_PASSWORD | Yes | Password or app-specific token | |
| CALDAV_USERNAME | Yes | Login username | |
| CALDAV_SSL_VERIFY_CERT | No | Set to false for self-signed certs, or path to CA bundle. Default: true | true |
Capabilities
Features and capabilities supported by this server
| 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 all calendars available on the configured CalDAV server. Returns calendar name, URL path, and supported component types (VEVENT, VTODO, VJOURNAL) for each calendar. Use this first to discover what calendars are available before searching or creating events. |
| calendar_search_eventsA | Search for events in a calendar within a date range. Args: calendar_id: Calendar name or URL path (from calendar_list_calendars) start: ISO 8601 start datetime (e.g., "2026-01-01T00:00:00") end: ISO 8601 end datetime query: Optional text to search in event summary and description limit: Maximum number of results (default 50) Returns events with UID, summary, start/end times, location, and status. Use UIDs from results for calendar_get_event, calendar_update_event, or calendar_delete_event. |
| calendar_get_eventA | Get detailed information about a single calendar event by its UID. Args: calendar_id: Calendar name or URL path event_uid: Unique identifier of the event (from calendar_search_events) Returns all event properties: summary, start/end, description, location, recurrence rules, attendees, and organizer. |
| calendar_create_eventA | Create a new calendar event. Args: calendar_id: Target calendar name or URL path summary: Event title start: ISO 8601 start time (e.g., "2026-01-15T09:00:00") end: ISO 8601 end time description: Optional event notes/description location: Optional physical or virtual location timezone: IANA timezone name (default "UTC", e.g., "America/New_York") rrule: Optional RFC 5545 recurrence rule (e.g., "FREQ=WEEKLY;BYDAY=MO,WE,FR") attendees: Optional comma-separated email addresses alarm_minutes: Optional comma-separated minutes-before reminders (e.g., "-30,-10") Returns the UID of the created event. Save this for later updates or deletion. |
| calendar_update_eventA | Update an existing calendar event. Only provided fields are changed. Args: calendar_id: Target calendar name or URL path event_uid: UID of the event to update summary: New event title (omit to keep unchanged) start: New ISO 8601 start time (omit to keep unchanged) end: New ISO 8601 end time (omit to keep unchanged) description: New description (omit to keep unchanged) location: New location (omit to keep unchanged) Use calendar_get_event first to see current values. |
| calendar_delete_eventA | Delete a calendar event by its UID. WARNING: This operation cannot be undone. For recurring events, this deletes the entire series. Args: calendar_id: Target calendar name or URL path event_uid: UID of the event to delete |
| calendar_get_freebusyA | Get busy time slots from a calendar within a time range. Args: calendar_id: Calendar name or URL path start: ISO 8601 start of the window (e.g., "2026-01-15T00:00:00") end: ISO 8601 end of the window Returns a list of busy periods with start and end times. Use this to check for scheduling conflicts before creating events. |
| calendar_find_available_slotsA | Find available (free) time slots for scheduling new events. Args: calendar_id: Calendar name or URL path start: ISO 8601 start of search window end: ISO 8601 end of search window duration_minutes: Desired meeting duration in minutes (default 60) working_hours_start: Optional ISO time like "09:00" to constrain to working hours working_hours_end: Optional ISO time like "17:00" to constrain to working hours working_days: Optional comma-separated day abbreviations (e.g., "MO,TU,WE,TH,FR") Returns up to 20 available slots sorted chronologically. |
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/johnwujiang2008/caldav-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server