
dav-mcp
Transform AI agents into orchestrating assistants managing calendars, contacts, and tasks
Provides comprehensive CalDAV, CardDAV, and VTODO protocol support for managing calendars, contacts, and tasks across any RFC-compliant server with 26 production-ready tools.
About dav-mcp
dav-mcp is a community-built MCP server published by PhilflowIO that provides AI assistants with tools and capabilities via the Model Context Protocol. Transform AI agents into orchestrating assistants managing calendars, contacts, and tasks It is categorized under auth security. This server exposes 20 tools that AI clients can invoke during conversations and coding sessions.
How to install
You can install dav-mcp in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
License
dav-mcp is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Tools (20)
List all available calendars
List all events in calendars
Create a new calendar event
Update any event field (summary, location, date, status, custom properties)
Delete an event permanently
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.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.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 --http
Then 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
- MCP Endpoint:
Custom port:
npx dav-mcp --http --port=8080
Docker
git clone https://github.com/PhilflowIO/dav-mcp.git
cd dav-mcp
cp .env.example .env
# Edit .env with your credentials
docker-compose up
The 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
Alternatives
Related Skills
Browse all skillsFirebase gives you a complete backend in minutes - auth, database, storage, functions, hosting. But the ease of setup hides real complexity. Security rules are your last line of defense, and they're often wrong. Firestore queries are limited, and you learn this after you've designed your data model. This skill covers Firebase Authentication, Firestore, Realtime Database, Cloud Functions, Cloud Storage, and Firebase Hosting. Key insight: Firebase is optimized for read-heavy, denormalized data. I
Comprehensive backend development skill for building scalable backend systems using NodeJS, Express, Go, Python, Postgres, GraphQL, REST APIs. Includes API scaffolding, database optimization, security implementation, and performance tuning. Use when designing APIs, optimizing database queries, implementing business logic, handling authentication/authorization, or reviewing backend code.
Expert in secure backend coding practices specializing in input validation, authentication, and API security. Use PROACTIVELY for backend security implementations or security code reviews.
Django security best practices, authentication, authorization, CSRF protection, SQL injection prevention, XSS prevention, and secure deployment configurations.
Spring Security best practices for authn/authz, validation, CSRF, secrets, headers, rate limiting, and dependency security in Java Spring Boot services.
This skill should be used when the user requests to generate, create, or add Row-Level Security (RLS) policies for Supabase databases in multi-tenant or role-based applications. It generates comprehensive RLS policies using auth.uid(), auth.jwt() claims, and role-based access patterns. Trigger terms include RLS, row level security, supabase security, generate policies, auth policies, multi-tenant security, role-based access, database security policies, supabase permissions, tenant isolation.