CalDAV MCP Server

CalDAV MCP Server

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.

Category
Visit Server

README

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.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, Friday
  • FREQ=MONTHLY;BYMONTHDAY=15 — 15th of every month
  • FREQ=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

  1. Generate an app-specific password at appleid.apple.com
  2. Set CALDAV_URL=https://caldav.icloud.com
  3. Set CALDAV_USERNAME to your Apple ID email
  4. Set CALDAV_PASSWORD to the generated app-specific password
  5. 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured