dav-mcp
Enables OAuth2-authenticated access to Google Calendar via CalDAV, allowing management of calendar events with support for creating, updating, and field-specific modifications using RFC-compliant properties.
Supports iCloud calendars and contacts via CalDAV/CardDAV protocols using app-specific password authentication, enabling full CRUD operations on events, contacts, and tasks stored in iCloud.
Provides full CalDAV and CardDAV support for managing calendars, contacts, and tasks stored in Nextcloud, including creating, updating, deleting, and querying calendar events, address book contacts, and VTODO tasks.
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/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.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/mcpAuthentication: Bearer
Token: your-secret-token
Custom port:
npx dav-mcp --http --port=8080Docker
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.
Capability | dav-mcp | Most MCPs |
Calendar Management | Full CRUD (11 tools) | Create + list only (2-3 tools) |
Contact Management | Complete CardDAV (8 tools) | Often missing entirely |
Task Management | Full VTODO support (7 tools) | Rarely included |
Field-Based Updates | All RFC properties + custom fields | Rarely available |
Server-Side Filtering | Efficient queries | Dumps all data |
Multi-Provider | Any CalDAV/CardDAV server | Limited provider support |
Total Tools | 26 tools | 2-6 tools |
Available Tools (26 Total)
CalDAV Tools (11 tools)
list_calendars - List all available calendars
list_events - List ALL events (use calendar_query for filtered searches)
create_event - Create a new calendar event
update_event - PREFERRED: Update any event field (SUMMARY, LOCATION, DTSTART, STATUS, custom X-* properties)
update_event_raw - Update event with raw iCal data (advanced)
delete_event - Delete an event permanently
calendar_query - PREFERRED: Search and filter events efficiently by text, date range, or location
make_calendar - Create a new calendar collection
update_calendar - Update calendar properties (display name, description, color, timezone)
delete_calendar - Permanently delete a calendar and all its events
calendar_multi_get - Batch fetch multiple specific events by URLs
CardDAV Tools (8 tools)
list_addressbooks - List all available address books
list_contacts - List ALL contacts (use addressbook_query for filtered searches)
create_contact - Create a new contact (vCard)
update_contact - PREFERRED: Update any contact field (FN, EMAIL, TEL, ORG, ADR, custom X-* properties)
update_contact_raw - Update contact with raw vCard data (advanced)
delete_contact - Delete a contact permanently
addressbook_query - PREFERRED: Search and filter contacts efficiently by name, email, or organization
addressbook_multi_get - Batch fetch multiple specific contacts by URLs
VTODO Tools (7 tools)
list_todos - List ALL todos/tasks (use todo_query for filtered searches)
create_todo - Create a new todo/task with optional due date, priority, status
update_todo - PREFERRED: Update any todo field (SUMMARY, STATUS, PRIORITY, DUE, PERCENT-COMPLETE, custom X-* properties)
update_todo_raw - Update todo with raw VTODO iCal data (advanced)
delete_todo - Delete a todo/task permanently
todo_query - PREFERRED: Search and filter todos efficiently by status/due date
todo_multi_get - Batch fetch multiple specific todos by URLs
Real-World Applications
n8n Automation Workflows
Meeting Management: "Show me all Friday meetings" → calendar_query with date filter returns only relevant events
Contact Search: "Find everyone at Google" → addressbook_query with org filter finds matches efficiently
Task Reporting: "Show overdue high-priority tasks" → todo_query with filters returns specific results
Scheduled Cleanup: Daily cron job deletes completed tasks using targeted queries
Claude Desktop Integration
Quick Event Creation: "Create team meeting tomorrow 2 PM" → create_event executes immediately
Contact Lookup: "What's Sarah's email?" → addressbook_query with name filter finds contact
Calendar Overview: "What's on my calendar next week?" → calendar_query with date range shows events
Calendar Management: "Create a new calendar called Project Luna" → make_calendar creates collection
Works Across All Major Providers
Works with any CalDAV/CardDAV server that follows RFC 4791 and RFC 6352:
Nextcloud - Full support
Baikal - Full support
Radicale - Full support
iCloud - Works with app-specific password
Any RFC-compliant server - Standard protocol support
Google Calendar (OAuth2)
For Google Calendar, use OAuth2 authentication:
{
"mcpServers": {
"dav-mcp": {
"command": "npx",
"args": ["-y", "dav-mcp"],
"env": {
"AUTH_METHOD": "OAuth",
"GOOGLE_USER": "your@gmail.com",
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"GOOGLE_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}Security
Input Validation: All inputs validated with Zod schemas before execution
Rate Limiting: 100 requests/minute per session (HTTP mode)
Bearer Auth: Token authentication for HTTP transport
No Credential Storage: Pass-through only, never logged or cached
Structured Logging: Audit trail with request IDs, no PII exposure
CORS Protection: Whitelist origins, block cross-site attacks
Documentation
MCP Specification - Model Context Protocol docs
tsdav Docs - CalDAV/CardDAV library reference
CalDAV RFC 4791 - CalDAV protocol specification
CardDAV RFC 6352 - CardDAV protocol specification
Contributing
Pull requests are welcome! Please read CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE for details
Acknowledgments
Built with:
tsdav - Excellent TypeScript CalDAV/CardDAV library
tsdav-utils - Field-agnostic utility layer for RFC-compliant field updates
MCP SDK - Model Context Protocol by Anthropic
ical.js - RFC-compliant iCalendar parser
Questions? Issues? Create a GitHub issue
Built for AI agents managing calendars, contacts, and tasks
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/PhilflowIO/dav-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server