CalDAV Server
FreeNot checkedEnables full CRUD operations on calendar events, free/busy queries, and availability slot finding via CalDAV, supporting Nextcloud, Radicale, iCloud, and other
About
Enables full CRUD operations on calendar events, free/busy queries, and availability slot finding via CalDAV, supporting Nextcloud, Radicale, iCloud, and other RFC 4791-compliant servers.
README
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.main
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 |
|---|---|---|---|
CALDAV_URL |
Yes | — | Full CalDAV server URL |
CALDAV_USERNAME |
Yes | — | Login username |
CALDAV_PASSWORD |
Yes | — | Password or app-specific token |
CALDAV_FEATURES |
No | — | Server compatibility profile |
CALDAV_SSL_VERIFY_CERT |
No | true |
Set to false for self-signed certs, or path to CA bundle |
CALDAV_TIMEOUT |
No | 30 |
HTTP request timeout in seconds |
Tools
| Tool | Description |
|---|---|
calendar_list_calendars |
List all calendars on the server with names, URLs, and supported component types |
calendar_search_events |
Search events by date range with optional text filtering |
calendar_get_event |
Get full details of a single event by UID (summary, times, description, location, attendees, recurrence) |
calendar_create_event |
Create a new event with optional recurrence rules, attendees, and reminders |
calendar_update_event |
Update fields on an existing event (only specified fields are changed) |
calendar_delete_event |
Permanently delete an event by UID |
calendar_get_freebusy |
Get busy time slots in a date range (falls back to event search if server doesn't support free/busy) |
calendar_find_available_slots |
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 |
Nextcloud |
radicale |
Radicale |
baikal |
Baikal |
fastmail |
Fastmail |
icloud |
Apple iCloud |
google |
Google Calendar |
zimbra |
Zimbra |
sogo |
SOGo |
posteo |
Posteo |
ox |
Open-Xchange / mailbox.org |
synology |
Synology Calendar |
iCloud Setup
- Generate an app-specific password at appleid.apple.com
- Set
CALDAV_URL=https://caldav.icloud.com - Set
CALDAV_USERNAMEto your Apple ID email - Set
CALDAV_PASSWORDto the generated app-specific password - Set
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 empty
Project 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__.py
License
MIT
Installing CalDAV Server
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/johnwujiang2008/caldav-mcp-serverFAQ
Is CalDAV Server MCP free?
Yes, CalDAV Server MCP is free — one-click install via Unyly at no cost.
Does CalDAV Server need an API key?
No, CalDAV Server runs without API keys or environment variables.
Is CalDAV Server hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install CalDAV Server in Claude Desktop, Claude Code or Cursor?
Open CalDAV Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Notion
Read and write pages in your workspace
by NotionLinear
Issues, cycles, triage — from Claude
by LinearGoogle Drive
Search and read your Drive files
by Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
by mindsdbfulcradynamics/fulcra-context-mcp
MCP server for accessing personal health and biometric data including sleep stages, heart rate, HRV, glucose, workouts, calendar, and location via the Fulcra Li
by fulcradynamicsaymericzip/intlayer
A MCP Server that enhance your IDE with AI-powered assistance for Intlayer i18n / CMS tool: smart CLI access, access to the docs.
by aymericziprinadelph/Agent-MCP
A framework for creating multi-agent systems using MCP for coordinated AI collaboration, featuring task management, shared context, and RAG capabilities.
by rinadelphWhenLabs-org/when
Developer toolkit: auto-detect stack for AI context files, catch port conflicts, validate .env schemas, spot docs drift, audit dependency licenses, and time cod
by WhenLabs-orgBeltran12138/wecom-docs-mcp-server
WeCom (Enterprise WeChat) document operations via MCP: create, read, and edit Docs and Smartsheets (9 tools). Fills the doc-CRUD gap — existing WeCom MCP server
by Beltran12138madbonez/caldav-mcp
Universal MCP server for CalDAV protocol integration. Works with any CalDAV-compatible calendar server including Yandex Calendar, Google Calendar (via CalDAV),
by madbonezCompare CalDAV Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All productivity MCPs
