LabscoMCP early access ↗
PhilflowIOMCP SERVER

CalDAV & CardDAV Tools

Read and write calendars, contacts and tasks on any CalDAV/CardDAV server — Nextcloud, Baikal, Radicale, iCloud.

by PhilflowIO ↗Calendars, Meetings & SchedulingCommunity

LABSCO SUMMARY

Full read-write across calendars, contacts and tasks — not create-and-list.

Updates go through named fields rather than raw iCal or vCard, so changing a title, a location or a task's status is one call instead of re-serialising the whole entry, with the raw variants kept for properties the field list does not reach. The query tools filter on the server, which is what makes this usable on an account where listing a calendar in full would return thousands of entries.

What it is

One server covering the CalDAV and CardDAV protocols: calendars and their events, address books and their contacts, and VTODO tasks — each with list, filtered search, create, update and delete.

What you get

  • Events created, retitled, moved or deleted on any calendar the account can reach
  • Filtered event search by text, date range or location — across every calendar at once when you leave the calendar out
  • Calendars themselves created, renamed, recoloured, retimezoned or deleted
  • Contacts created and changed field by field — name, email, phone, organization, note — with no vCard to hand-write
  • Contact search by name, email or organization instead of pulling the whole address book
  • Tasks with due date, priority, status and percent-complete, searchable by status or due date
  • Raw iCal and vCard updates for the properties the field-level tools do not cover
  • Batch fetch by URL for events, contacts and todos, instead of one call each

Requirements

A CalDAV/CardDAV account, passed as CALDAV_SERVER_URL, CALDAV_USERNAME and CALDAV_PASSWORD. iCloud works with an app-specific password; Google Calendar goes through OAuth2 instead — AUTH_METHOD set to OAuth, plus GOOGLE_USER, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET and GOOGLE_REFRESH_TOKEN. Runs over stdio through npx, or as an HTTP server with --http, serving http://localhost:3000/mcp behind a BEARER_TOKEN and rate-limited to 100 requests/minute per session. Any server following RFC 4791 and RFC 6352 works.

Setup effort

One command plus credentials — npx -y dav-mcp, then supply credentials