Dav MCP server
AI-orchestrated calendars, contacts & tasks across any DAV platform. 27 tools, field-agnostic.
34 stars123 downloads/wk
Reviews
Write oneNobody has reviewed Dav yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Dav tools (27, 16 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
addressbook_multi_getBatch fetch multiple specific contacts by their URLs. Use when you have exact contact URLs and want to retrieve their details
addressbook_querywrite action⭐ PREFERRED: Search and filter contacts efficiently (name, email, organization). Use for "find contacts with...", "search for email...", "contacts at company..." queries. Use instead of list_contacts when ANY filter is specified. Omit addressbook_url to search across ALL addressbooks automatically.
calendar_multi_getBatch fetch multiple specific calendar events by their URLs. Use when you have exact event URLs and want to retrieve their details
calendar_query⭐ PREFERRED: Search and filter calendar events efficiently. Use instead of list_events to avoid loading thousands of entries. Omit calendar_url to search across ALL calendars automatically.
create_contactwrite actionCreate a new contact (vCard) with name, email, phone, organization, and other details
create_eventwrite actionCreate a new calendar event with title, date, time, optional description and location
create_todowrite actionCreate a new todo/task in a calendar. Use this when user wants to add a task, todo item, or reminder with optional due date, priority, and status.
delete_calendarwrite actionPermanently delete a calendar and all its events. WARNING: This action cannot be undone! Use this when user explicitly asks to "delete calendar" or "remove calendar"
delete_contactwrite actionPermanently delete a contact (vCard) from the address book. WARNING: This action cannot be undone — the contact is removed from the server immediately. Use only when the user explicitly requests deletion. Obtain the vCard URL and etag from list_contacts or addressbook_query first. The etag ensures no conflicting changes occurred since the contact was last retrieved.
delete_eventwrite actionPermanently delete a calendar event. WARNING: This action cannot be undone — the event is removed from the server immediately. Use only when the user explicitly requests deletion. Obtain the event URL and etag from list_events or calendar_query first. The etag ensures no conflicting changes occurred since the event was last retrieved.
delete_todowrite actionPermanently delete a todo/task from the calendar. WARNING: This action cannot be undone — the todo is removed from the server immediately. Use only when the user explicitly requests deletion. Obtain the todo URL and etag from list_todos or todo_query first. The etag ensures no conflicting changes occurred since the todo was last retrieved.
freebusy_queryFind free and busy time in a date range — use for "when am I free?", "am I available Tuesday afternoon?" or finding a slot for a new meeting. Searches all calendars unless one is given. Events marked TRANSPARENT (does not block time) and cancelled events are ignored; recurring events are expanded.
list_addressbooksList all available address books from the CardDAV server. Use this to get address book URLs needed for other contact operations
list_calendarsList all available calendars from the CalDAV server. Use this to get calendar URLs needed for other operations
list_contactsList ALL contacts from an address book without filtering. WARNING: Returns all contacts which can be thousands - use addressbook_query instead when searching for specific contacts by name, email, or organization to save tokens
list_eventsList ALL events from a single calendar without filtering. WARNING: Returns all events which can be many thousands - use calendar_query instead for searching with filters (supports multi-calendar search).
list_todosList ALL todos/tasks from a calendar. WARNING: Returns all todos without filtering - use todo_query for searches with filters by status, summary, or due date.
make_calendarwrite actionCreate a new calendar collection on the CalDAV server with optional color, description, timezone, and component types
todo_multi_getBatch fetch multiple specific todos by their URLs. More efficient than fetching one by one when you have exact todo URLs.
todo_query⭐ PREFERRED: Search and filter todos efficiently. Use instead of list_todos to conserve tokens. Omit calendar_url to search across ALL calendars automatically.
update_calendarwrite actionUpdate an existing calendar's properties (display name, description, color, timezone). Use this when user asks to "rename calendar", "change calendar color", or "update calendar properties"
update_contactwrite actionPREFERRED: Update contact fields without vCard formatting. Supports: FN (full name), N (structured name), EMAIL, TEL (phone), ORG (organization), TITLE (job title), NOTE, URL, ADR (address), BDAY (birthday), and any RFC 6350 vCard property including custom X-* properties.
update_contact_rawwrite actionADVANCED: Update contact with raw vCard data. Requires manual vCard formatting - use update_contact instead for simple field updates (name, email, phone). Only use this if you have complete pre-formatted vCard data or need to update advanced vCard properties.
update_eventwrite actionPREFERRED: Update event fields without iCal formatting. Use start_date/end_date/all_day to move an event or convert it between all-day and timed. Use fields for everything else: SUMMARY (title), DESCRIPTION (details), LOCATION (place), STATUS (TENTATIVE/CONFIRMED/CANCELLED), and any other RFC 5545 property including custom X-* properties (e.g., X-ZOOM-LINK, X-MEETING-ROOM).
update_event_rawwrite actionADVANCED: Update event with raw iCal data. Requires manual iCal formatting - use update_event instead for simple field updates (summary, description). Only use this if you have complete pre-formatted iCal data or need to update advanced iCal properties.
update_todowrite actionPREFERRED: Update todo fields without iCal formatting. Supports: SUMMARY (title), DESCRIPTION (details), STATUS (NEEDS-ACTION/IN-PROCESS/COMPLETED/CANCELLED), PRIORITY (0-9), DUE (due date), PERCENT-COMPLETE (0-100), and any RFC 5545 VTODO property including custom X-* properties.
update_todo_rawwrite actionADVANCED: Update todo with raw VTODO iCal data. Requires manual iCal formatting - use update_todo instead for simple field updates (summary, description, status). Only use this if you have complete pre-formatted VTODO data or need to update advanced iCal properties.
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan45 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 9 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
What the publisher says
From the Dav repository's README, as published. We do not edit it. Read it on GitHub
dav-mcp
Give your AI agents the power of organization — Transform them into orchestrating assistants managing calendars, contacts, and tasks.
Built on 26 production-ready tools spanning CalDAV, CardDAV, and VTODO protocols.
Quick Start
Claude Desktop / Cursor (Local)
Add to your MCP config file:
{
"mcpServers": {
"dav-mcp": {
"command": "npx",
"args": ["-y", "dav-mcp"],
"env": {
"CALDAV_SERVER_URL": "https://dav.example.com",
"CALDAV_USERNAME": "your_username",
"CALDAV_PASSWORD": "your_password"
}
}
}
}Config file locations:
- macOS: ~/Library/Application Support/Claude/claudedesktopconfig.json
- Windows: %APPDATA%\Claude\claudedesktopconfig.json
- Linux: ~/.config/Claude/claudedesktopconfig.json
Restart Claude Desktop after adding the configuration.
n8n (Remote HTTP)
Start the HTTP server:
CALDAV_SERVER_URL=https://dav.example.com \
CALDAV_USERNAME=your_username \
CALDAV_PASSWORD=your_password \
BEARER_TOKEN=your-secret-token \
npx dav-mcp --httpThen in n8n:
- Add AI Agent node
- Add MCP Client Tool node and connect to AI Agent
- Configure:
- MCP Endpoint: http://localhost:3000/mcp
- Authentication: Bearer
- Token: your-secret-token
Custom port:
npx dav-mcp --http --port=8080Docker
Pull the published image (distroless, runs as non-root, no shell):
docker run -d --name dav-mcp -p 3000:3000 --env-file .env \
ghcr.io/philflowio/dav-mcp:latestTags: latest, the exact release (4.0.0) and the minor line (4.0). Set PORT to serve on a different port; the healthcheck follows it.
Or build from source:
git clone https://github.com/PhilflowIO/dav-mcp.git
cd dav-mcp
cp .env.example .env
# Edit .env with your credentials
docker-compose upThe Orchestration
When partial tools force your AI to improvise, complete tools let it execute precise operations across all components.
Available Tools (27 Total)
CalDAV Tools (12 tools)
- listcalendars** - List all available calendars
- listevents - List ALL events (use calendarquery for filtered searches)
- createevent** - Create a new calendar event
- updateevent - PREFERRED: Update any event field (SUMMARY, LOCATION, STATUS, custom X- properties); move or convert an event with startdate/enddate/all_day
- updateeventraw - Update event with raw iCal data (advanced)
- deleteevent** - Delete an event permanently
- calendarquery** - PREFERRED: Search and filter events efficiently by text, date range, or location
- makecalendar** - Create a new calendar collection
- updatecalendar** - Update calendar properties (display name, description, color, timezone)
- deletecalendar** - Permanently delete a calendar and all its events
- calendarmultiget - Batch fetch multiple specific events by URLs
- freebusyquery** - Find free and busy time in a range ("when am I free?"), calculated client-side
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y dav-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add dav-mcp -- npx -y dav-mcp
Dav: common questions
- Is Dav MCP server safe?
- Mostly: it is graded B (83/100). Read the Dav safety report
- How do I install Dav?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Dav need an API key?
- Yes. The registry entry asks for
CALDAV_PASSWORD,GOOGLE_CLIENT_SECRET,GOOGLE_REFRESH_TOKEN. - Is Dav maintained?
- The last commit was 10 days ago (2026-09-10). The latest release is v4.0.1.