calendar-mcp
Provider-agnostic CalDAV calendar MCP server for AI assistants. Connect any CalDAV calendar to Claude Desktop, Cursor, VS Code, or any MCP-compatible client.
Features
- 10 calendar tools: list_calendars, get_events, get_event, today, upcoming, search_events, free_busy, create_event, update_event, delete_event
- Provider auto-detection: Automatically configures Google, Apple iCloud, Nextcloud, Fastmail from your CalDAV URL
- Any CalDAV server: Works with Radicale, Baikal, ownCloud, or any standard CalDAV provider
- Read-only mode: Optional safety mode that disables all write operations
- Zero external dependencies: Pure Python stdlib for CalDAV/iCal (only
mcpSDK required) - RFC 5545 compliant: Proper iCalendar parsing with recurrence rules, durations, timezones, attendees
Quick Start
pip install calendar-mcp
Configuration
Set three environment variables:
export CALENDAR_MCP_URL="https://caldav.icloud.com/"
export CALENDAR_MCP_USERNAME="you@icloud.com"
export CALENDAR_MCP_PASSWORD="your-app-password"
All Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
CALENDAR_MCP_URL |
Yes | — | CalDAV server URL |
CALENDAR_MCP_USERNAME |
Yes | — | Username (usually email) |
CALENDAR_MCP_PASSWORD |
Yes | — | Password or app-specific password |
CALENDAR_MCP_PROVIDER |
No | Auto-detected | Force provider: google, apple, nextcloud, fastmail, generic |
CALENDAR_MCP_CALENDAR_ID |
No | First calendar | Default calendar name |
CALENDAR_MCP_READ_ONLY |
No | false | Set to true to disable write operations |
CALENDAR_MCP_TIMEZONE |
No | UTC | Default timezone |
Provider Auto-Detection
| URL Pattern | Provider | Default CalDAV URL |
|---|---|---|
| googleusercontent.com | https://apidata.googleusercontent.com/caldav/v2/ | |
| caldav.icloud.com | apple | https://caldav.icloud.com/ |
| office365.com | outlook | https://outlook.office365.com/caldav/v2/ |
| caldav.fastmail.com | fastmail | https://caldav.fastmail.com/dav/calendars/user/{email}/ |
| nextcloud, owncloud | nextcloud | (your server URL) |
| anything else | generic | (your server URL) |
Client Configuration
Claude Desktop
{
"mcpServers": {
"calendar": {
"command": "calendar-mcp",
"env": {
"CALENDAR_MCP_URL": "https://caldav.icloud.com/",
"CALENDAR_MCP_USERNAME": "you@icloud.com",
"CALENDAR_MCP_PASSWORD": "your-app-password"
}
}
}
}
Claude Code
claude mcp add -e CALENDAR_MCP_URL=https://caldav.icloud.com/ -e CALENDAR_MCP_USERNAME=you@icloud.com -e CALENDAR_MCP_PASSWORD=your-app-password calendar calendar-mcp
Tools
| Tool | Description | Write? |
|---|---|---|
list_calendars |
List all calendars on the account | No |
get_events |
Get events in a date range (configurable days ahead/back) | No |
get_event |
Get a single event by UID | No |
today |
Get all events for today | No |
upcoming |
Get events in the next N hours | No |
search_events |
Search by text in title, description, location | No |
free_busy |
Free/busy summary with total hours | No |
create_event |
Create a new event | Yes |
update_event |
Update an existing event (partial updates) | Yes |
delete_event |
Delete an event by UID | Yes |
Write tools are disabled when CALENDAR_MCP_READ_ONLY=true.
License
Dual-licensed:
- AGPL-3.0 — free for open-source use (see LICENSE)
- Commercial — for proprietary use (see LICENSE-COMMERCIAL)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
calendar_mcp-1.0.0.tar.gz
(33.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file calendar_mcp-1.0.0.tar.gz.
File metadata
- Download URL: calendar_mcp-1.0.0.tar.gz
- Upload date:
- Size: 33.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d10cda5830ac1093297c944cfdd39105c33e6f537e2ffa2137a09abdce38431
|
|
| MD5 |
1cee43687ce4204f7b7e657b48605298
|
|
| BLAKE2b-256 |
f87a0fab26376aa0ec68b3a9b0fd53dfa6b3d0d848989c0e73677c09ff674732
|
File details
Details for the file calendar_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: calendar_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5209be4dd87b29889dc07954e1bdc49d28e7f034d68c6ff6ce58b4cb702851d4
|
|
| MD5 |
a64feec498ad4f18177c43ae745d4f93
|
|
| BLAKE2b-256 |
0c88ba359b3f7a98a3254bab8e6d7a8c3aed1bbe45fb75b4768cbdedee1be964
|