philflowio avatar

Dav Mcp

philflowio/dav-mcp

Gives Claude full CRUD access to any CalDAV, CardDAV, or VTODO server through 26 specialized tools. You can query calendars with server-side filters, update individual contact fields without touching the rest of the vCard, manage tasks with priority and due dates, and even create new calendar collections on the fly. Works with Nextcloud, Baikal, Radicale, and iCloud out of the box, plus Google Calendar via OAuth2. The field-agnostic updates are the real win here since you can modify any RFC property or custom X-* field without reconstructing entire iCal objects. Reach for this when you need AI-driven calendar orchestration beyond simple event creation, or when you want contacts and tasks in the same integration.

GitHub stars
42
tools
27
auth
Secret needed
transport
STDIO
env vars
10
last updated
Oct 9, 2026

Tools

27 tools

Public tool metadata for what this MCP can expose to an agent.

list_calendarsList all available calendars

List all available calendars

No parameter schema in public metadata yet.

list_eventsList ALL events (use calendar_query for filtered searches)

List ALL events (use calendar_query for filtered searches)

No parameter schema in public metadata yet.

create_eventCreate a new calendar event

Create a new calendar event

No parameter schema in public metadata yet.

update_eventPREFERRED: Update any event field (SUMMARY, LOCATION, STATUS, custom X-* properties); move or convert an event with start_date/end_date/all_day

PREFERRED: Update any event field (SUMMARY, LOCATION, STATUS, custom X-* properties); move or convert an event with start_date/end_date/all_day

No parameter schema in public metadata yet.

update_event_rawUpdate event with raw iCal data (advanced)

Update event with raw iCal data (advanced)

No parameter schema in public metadata yet.

delete_eventDelete an event permanently

Delete an event permanently

No parameter schema in public metadata yet.

calendar_queryPREFERRED: Search and filter events efficiently by text, date range, or location

PREFERRED: Search and filter events efficiently by text, date range, or location

No parameter schema in public metadata yet.

make_calendarCreate a new calendar collection, optionally with a time zone (an IANA name such as Europe/Berlin, sent as a VTIMEZONE)

Create a new calendar collection, optionally with a time zone (an IANA name such as Europe/Berlin, sent as a VTIMEZONE)

No parameter schema in public metadata yet.

update_calendarUpdate calendar properties (display name, description, color, time zone)

Update calendar properties (display name, description, color, time zone)

No parameter schema in public metadata yet.

delete_calendarDelete a calendar and all its events

Delete a calendar and all its events

No parameter schema in public metadata yet.

calendar_multi_getBatch fetch multiple specific events by URLs

Batch fetch multiple specific events by URLs

No parameter schema in public metadata yet.

freebusy_queryFind free and busy time in a range ("when am I free?"), calculated client-side

Find free and busy time in a range ("when am I free?"), calculated client-side

No parameter schema in public metadata yet.

list_addressbooksList all available address books

List all available address books

No parameter schema in public metadata yet.

list_contactsList ALL contacts (use addressbook_query for filtered searches)

List ALL contacts (use addressbook_query for filtered searches)

No parameter schema in public metadata yet.

create_contactCreate a new contact (vCard)

Create a new contact (vCard)

No parameter schema in public metadata yet.

update_contactPREFERRED: Update any contact field (FN, EMAIL, TEL, ORG, ADR, custom X-* properties)

PREFERRED: Update any contact field (FN, EMAIL, TEL, ORG, ADR, custom X-* properties)

No parameter schema in public metadata yet.

update_contact_rawUpdate contact with raw vCard data (advanced)

Update contact with raw vCard data (advanced)

No parameter schema in public metadata yet.

delete_contactDelete a contact permanently

Delete a contact permanently

No parameter schema in public metadata yet.

addressbook_queryPREFERRED: Search and filter contacts efficiently by name, email, or organization

PREFERRED: Search and filter contacts efficiently by name, email, or organization

No parameter schema in public metadata yet.

addressbook_multi_getBatch fetch multiple specific contacts by URLs

Batch fetch multiple specific contacts by URLs

No parameter schema in public metadata yet.

list_todosList ALL todos/tasks (use todo_query for filtered searches)

List ALL todos/tasks (use todo_query for filtered searches)

No parameter schema in public metadata yet.

create_todoCreate a new todo/task with optional due date, priority, status

Create a new todo/task with optional due date, priority, status

No parameter schema in public metadata yet.

update_todoPREFERRED: Update any todo field (SUMMARY, STATUS, PRIORITY, DUE, PERCENT-COMPLETE, custom X-* properties)

PREFERRED: Update any todo field (SUMMARY, STATUS, PRIORITY, DUE, PERCENT-COMPLETE, custom X-* properties)

No parameter schema in public metadata yet.

update_todo_rawUpdate todo with raw VTODO iCal data (advanced)

Update todo with raw VTODO iCal data (advanced)

No parameter schema in public metadata yet.

delete_todoDelete a todo/task permanently

Delete a todo/task permanently

No parameter schema in public metadata yet.

todo_queryPREFERRED: Search and filter todos efficiently by status/due date

PREFERRED: Search and filter todos efficiently by status/due date

No parameter schema in public metadata yet.

todo_multi_getBatch fetch multiple specific todos by URLs

Batch fetch multiple specific todos by URLs

No parameter schema in public metadata yet.

Sponsors

Configuration

CALDAV_SERVER_URL*

Base URL of your CalDAV/CardDAV server (e.g. https://example.com/dav.php/)

CALDAV_USERNAME*

Username for DAV server authentication

CALDAV_PASSWORD*secret

Password or app-specific password for DAV server authentication

AUTH_METHOD

Authentication method, case-insensitive: 'Basic' (default; switches to Digest by itself when the server only offers Digest), 'Digest' (Digest-only servers without ever sending the password) or 'OAuth' for Google

GOOGLE_SERVER_URL

Google CalDAV endpoint; required when AUTH_METHOD=oauth2

GOOGLE_USER

Google account email; required when AUTH_METHOD=oauth2

GOOGLE_CLIENT_ID

OAuth2 client ID; required when AUTH_METHOD=oauth2

GOOGLE_CLIENT_SECRETsecret

OAuth2 client secret; required when AUTH_METHOD=oauth2

GOOGLE_REFRESH_TOKENsecret

OAuth2 refresh token; required when AUTH_METHOD=oauth2

GOOGLE_TOKEN_URL

OAuth2 token endpoint for AUTH_METHOD=oauth2 (default: https://oauth2.googleapis.com/token)

Readme

dav-mcp

Give your AI agents the power of organization — Transform them into orchestrating assistants managing calendars, contacts, and tasks.

Built on 27 production-ready tools spanning CalDAV, CardDAV, and VTODO protocols.

License: MIT npm version


Quick Start

Claude Code plugin

In Claude Code, run:

/plugin install dav-mcp --marketplace PhilflowIO/dav-mcp

Claude Code then asks for your server URL, username and password. The plugin also brings a skill that teaches Claude to use the tools well. Details are in the plugin README.

One-click install (Claude Desktop)


View the full README on GitHub

Details

Repository
github.com/philflowio/dav-mcp
Package
dav-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active