CalDAV MCP Server
Provides full CRUD operations on calendar events, free/busy, and availability-finding for Google Calendar.
Provides full CRUD operations on calendar events, free/busy, and availability-finding for iCloud calendars.
Provides full CRUD operations on calendar events, free/busy, and availability-finding for mailbox.org calendars.
Provides full CRUD operations on calendar events, free/busy, and availability-finding for Nextcloud calendars.
Provides full CRUD operations on calendar events, free/busy, and availability-finding for Synology Calendar.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CalDAV MCP Serverlist my calendars"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CalDAV MCP Server
MCP (Model Context Protocol) server for interacting with CalDAV calendars. Provides full CRUD operations on calendar events plus free/busy and availability-finding tools.
Supports Nextcloud, Radicale, Fastmail, iCloud, Baikal, Zimbra, SOGo, and any RFC 4791-compliant CalDAV server.
Quick Start
# Install
cd caldav-mcp-server
pip install -e .
# Configure
export CALDAV_URL="https://your-server.com/remote.php/dav/"
export CALDAV_USERNAME="your-username"
export CALDAV_PASSWORD="your-password"
# Run
caldav-mcp-server
# or: python -m caldav_mcp_server.mainRelated MCP server: CalDAV MCP Server
Claude Code Integration
Add to ~/.claude.json in the mcpServers section:
{
"mcpServers": {
"caldav": {
"command": "python",
"args": ["-m", "caldav_mcp_server.main"],
"cwd": "/Users/jiangwu/claude/caldav-mcp-server/src",
"env": {
"CALDAV_URL": "https://your-server.com/remote.php/dav/",
"CALDAV_USERNAME": "your-username",
"CALDAV_PASSWORD": "your-password",
"CALDAV_FEATURES": "nextcloud"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| Yes | — | Full CalDAV server URL |
| Yes | — | Login username |
| Yes | — | Password or app-specific token |
| No | — | Server compatibility profile |
| No |
| Set to |
| No |
| HTTP request timeout in seconds |
Tools
Tool | Description |
| List all calendars on the server with names, URLs, and supported component types |
| Search events by date range with optional text filtering |
| Get full details of a single event by UID (summary, times, description, location, attendees, recurrence) |
| Create a new event with optional recurrence rules, attendees, and reminders |
| Update fields on an existing event (only specified fields are changed) |
| Permanently delete an event by UID |
| Get busy time slots in a date range (falls back to event search if server doesn't support free/busy) |
| Find free time slots for scheduling, with optional working hours/days constraints |
Time Format
All times use ISO 8601 format: 2026-01-15T09:00:00 or 2026-01-15T09:00:00+02:00. Times without a timezone offset are treated as UTC.
Recurrence Rules
The rrule parameter accepts RFC 5545 recurrence rule strings:
FREQ=WEEKLY;BYDAY=MO,WE,FR— every Monday, Wednesday, FridayFREQ=MONTHLY;BYMONTHDAY=15— 15th of every monthFREQ=DAILY;COUNT=10— every day for 10 occurrences
Server Compatibility
Set CALDAV_FEATURES to one of these profiles to enable server-specific workarounds:
Profile | Servers |
| Nextcloud |
| Radicale |
| Baikal |
| Fastmail |
| Apple iCloud |
| Google Calendar |
| Zimbra |
| SOGo |
| Posteo |
| Open-Xchange / mailbox.org |
| Synology Calendar |
iCloud Setup
Generate an app-specific password at appleid.apple.com
Set
CALDAV_URL=https://caldav.icloud.comSet
CALDAV_USERNAMEto your Apple ID emailSet
CALDAV_PASSWORDto the generated app-specific passwordSet
CALDAV_FEATURES=icloud
iCloud limitations: no recurring event expansion, no todos, no free/busy, no calendar creation.
Local Testing with Radicale
pip install radicale
radicale --storage-type filesystem --filesystem-folder /tmp/radicale
# Server runs at http://localhost:5232
# No auth by default — leave CALDAV_USERNAME and CALDAV_PASSWORD emptyProject Structure
caldav-mcp-server/
├── pyproject.toml
├── README.md
├── src/
│ └── caldav_mcp_server/
│ ├── __init__.py
│ ├── main.py # FastMCP entry point + 8 tools
│ ├── auth.py # Client factory + calendar resolution
│ ├── config.py # Pydantic settings from env vars
│ ├── errors.py # Error mapping + decorator
│ └── formatters.py # Markdown + JSON output formatters
└── tests/
└── __init__.pyLicense
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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