Skip to main content
Glama

caldav-mcp

An MCP server that gives Claude (Desktop/Cowork/Code) access to plain CalDAV calendars — the on-prem/self-hosted calendars (SOGo, Nextcloud, Radicale, Baïkal, Synology, …) not covered by the official Google/M365 connectors. Sibling project to imap-mcp and built on the same safety model.

Safety model

All guardrails live in accounts.json — not in prompts or tool descriptions — so they hold even if calendar content tries prompt injection:

  1. Read tools always work: list calendars, search events, read an event.

  2. Write tools (create/update/cancel events) require "allow_writes": true on the account; without it they refuse before any network connection.

  3. No delete. cancel_event only sets STATUS:CANCELLED (reversible with cancelled=false); nothing is ever removed from the server.

  4. No invitations. Events can never carry attendees, so the CalDAV server can never send scheduling emails (iTIP/iMIP) on Claude's behalf.

Related MCP server: calendar-mcp

Setup

bash setup.sh        # macOS/Linux — creates .venv, installs deps, registers in Claude Desktop
.\setup.ps1          # Windows

Then edit accounts.json (gitignored) with your CalDAV URL and username, store the password in the OS keychain, and verify:

.venv/bin/python server.py --set-password '<account>'
.venv/bin/python server.py --check

Restart Claude Desktop. For Claude Code, register with:

claude mcp add caldav -- "$PWD/.venv/bin/python" "$PWD/server.py"

Account config

{
  "accounts": {
    "crewcast": {
      "url": "https://mail.crewcast.dk/SOGo/dav/",
      "username": "you@crewcast.dk",
      "allow_writes": false
    }
  }
}

Key

Required

Meaning

url

yes

The CalDAV base URL (e.g. SOGo: https://host/SOGo/dav/)

username

yes

Login username

allow_writes

no

true enables create/update/cancel (default: read-only)

password

no

Discouraged — prefer the OS keychain via --set-password

Tools

Tool

Tier

Description

list_accounts

read

Configured account names (no connection)

list_calendars

read

Calendars on an account

search_events

read

Events in a time window (default: next 30 days), recurring events expanded, optional text filter, one or all calendars

get_event

read

Full event details by UID

create_event

write

New event (timed or all-day); no attendees, ever

update_event

write

Change summary/time/location/description; moving start keeps duration

cancel_event

write

Set/clear STATUS:CANCELLED — the only "removal" offered

Tests

.venv/bin/python test_server.py

Offline — no calendar server or credentials needed; prints per-check status and ALL CHECKS PASSED.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.

  • Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

View all MCP Connectors

Latest Blog Posts

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/friisconsult/caldav'

If you have feedback or need assistance with the MCP directory API, please join our Discord server