{
  "markdown": "# dav-mcp\n\n**Give your AI agents the power of organization** — Transform them into orchestrating assistants managing calendars, contacts, and tasks.\n\nBuilt on 26 production-ready tools spanning CalDAV, CardDAV, and VTODO protocols.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![npm version](https://badge.fury.io/js/dav-mcp.svg)](https://www.npmjs.com/package/dav-mcp)\n\n---\n\n## Quick Start\n\n### Claude Desktop / Cursor (Local)\n\nAdd to your MCP config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"dav-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"dav-mcp\"],\n      \"env\": {\n        \"CALDAV_SERVER_URL\": \"https://dav.example.com\",\n        \"CALDAV_USERNAME\": \"your_username\",\n        \"CALDAV_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n**Config file locations:**\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- **Linux**: `~/.config/Claude/claude_desktop_config.json`\n\nRestart Claude Desktop after adding the configuration.\n\n---\n\n### n8n (Remote HTTP)\n\nStart the HTTP server:\n\n```bash\nCALDAV_SERVER_URL=https://dav.example.com \\\nCALDAV_USERNAME=your_username \\\nCALDAV_PASSWORD=your_password \\\nBEARER_TOKEN=your-secret-token \\\nnpx dav-mcp --http\n```\n\nThen in n8n:\n1. Add **AI Agent** node\n2. Add **MCP Client Tool** node and connect to AI Agent\n3. Configure:\n   - **MCP Endpoint**: `http://localhost:3000/mcp`\n   - **Authentication**: Bearer\n   - **Token**: your-secret-token\n\n**Custom port:**\n```bash\nnpx dav-mcp --http --port=8080\n```\n\n---\n\n### Docker\n\n```bash\ngit clone https://github.com/PhilflowIO/dav-mcp.git\ncd dav-mcp\ncp .env.example .env\n# Edit .env with your credentials\ndocker-compose up\n```\n\n---\n\n## The Orchestration\n\nWhen partial tools force your AI to improvise, complete tools let it **execute precise operations across all components**.\n\n| Capability | dav-mcp | Most MCPs |\n|------------|---------|-----------|\n| **Calendar Management** | Full CRUD (12 tools) | Create + list only (2-3 tools) |\n| **Contact Management** | Complete CardDAV (8 tools) | Often missing entirely |\n| **Task Management** | Full VTODO support (7 tools) | Rarely included |\n| **Field-Based Updates** | All RFC properties + custom fields | Rarely available |\n| **Free/Busy** | Works on every server (client-side) | Native REPORT, unsupported by most |\n| **Server-Side Filtering** | Efficient queries | Dumps all data |\n| **Multi-Provider** | Any CalDAV/CardDAV server | Limited provider support |\n| **Total Tools** | **27 tools** | **2-6 tools** |\n\n---\n\n## Available Tools (27 Total)\n\n### CalDAV Tools (12 tools)\n\n1. **list_calendars** - List all available calendars\n2. **list_events** - List ALL events (use calendar_query for filtered searches)\n3. **create_event** - Create a new calendar event\n4. **update_event** - PREFERRED: Update any event field (SUMMARY, LOCATION, STATUS, custom X-* properties); move or convert an event with start_date/end_date/all_day\n5. **update_event_raw** - Update event with raw iCal data (advanced)\n6. **delete_event** - Delete an event permanently\n7. **calendar_query** - PREFERRED: Search and filter events efficiently by text, date range, or location\n8. **make_calendar** - Create a new calendar collection\n9. **update_calendar** - Update calendar properties (display name, description, color, timezone)\n10. **delete_calendar** - Permanently delete a calendar and all its events\n11. **calendar_multi_get** - Batch fetch multiple specific events by URLs\n12. **freebusy_query** - Find free and busy time in a range (\"when am I free?\"), calculated client-side\n\n### CardDAV Tools (8 tools)\n\n12. **list_addressbooks** - List all available address books\n13. **list_contacts** - List ALL contacts (use addressbook_query for filtered searches)\n14. **create_contact** - Create a new contact (vCard)\n15. **update_contact** - PREFERRED: Update any contact field (FN, EMAIL, TEL, ORG, ADR, custom X-* properties)\n16. **update_contact_raw** - Update contact with raw vCard data (advanced)\n17. **delete_contact** - Delete a contact permanently\n18. **addressbook_query** - PREFERRED: Search and filter contacts efficiently by name, email, or organization\n19. **addressbook_multi_get** - Batch fetch multiple specific contacts by URLs\n\n### VTODO Tools (7 tools)\n\n20. **list_todos** - List ALL todos/tasks (use todo_query for filtered searches)\n21. **create_todo** - Create a new todo/task with optional due date, priority, status\n22. **update_todo** - PREFERRED: Update any todo field (SUMMARY, STATUS, PRIORITY, DUE, PERCENT-COMPLETE, custom X-* properties)\n23. **update_todo_raw** - Update todo with raw VTODO iCal data (advanced)\n24. **delete_todo** - Delete a todo/task permanently\n25. **todo_query** - PREFERRED: Search and filter todos efficiently by status/due date\n26. **todo_multi_get** - Batch fetch multiple specific todos by URLs\n\n---\n\n## Real-World Applications\n\n### n8n Automation Workflows\n- **Meeting Management**: \"Show me all Friday meetings\" → calendar_query with date filter returns only relevant events\n- **Contact Search**: \"Find everyone at Google\" → addressbook_query with org filter finds matches efficiently\n- **Task Reporting**: \"Show overdue high-priority tasks\" → todo_query with filters returns specific results\n- **Scheduled Cleanup**: Daily cron job deletes completed tasks using targeted queries\n\n### Claude Desktop Integration\n- **Quick Event Creation**: \"Create team meeting tomorrow 2 PM\" → create_event executes immediately\n- **Contact Lookup**: \"What's Sarah's email?\" → addressbook_query with name filter finds contact\n- **Calendar Overview**: \"What's on my calendar next week?\" → calendar_query with date range shows events\n- **Calendar Management**: \"Create a new calendar called Project Luna\" → make_calendar creates collection\n\n---\n\n## Works Across All Major Providers\n\nWorks with any CalDAV/CardDAV server that follows RFC 4791 and RFC 6352:\n\n- **Nextcloud** - Full support\n- **Baikal** - Full support\n- **Radicale** - Full support\n- **iCloud** - Works with app-specific password\n- **Any RFC-compliant server** - Standard protocol support\n\n---\n\n## Google Calendar (OAuth2)\n\nFor Google Calendar, use OAuth2 authentication:\n\n```json\n{\n  \"mcpServers\": {\n    \"dav-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"dav-mcp\"],\n      \"env\": {\n        \"AUTH_METHOD\": \"OAuth\",\n        \"GOOGLE_USER\": \"your@gmail.com\",\n        \"GOOGLE_CLIENT_ID\": \"your-client-id\",\n        \"GOOGLE_CLIENT_SECRET\": \"your-client-secret\",\n        \"GOOGLE_REFRESH_TOKEN\": \"your-refresh-token\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## Security\n\n- **Input Validation**: All inputs validated with Zod schemas before execution\n- **Rate Limiting**: 100 requests/minute per session (HTTP mode)\n- **Bearer Auth**: Token authentication for HTTP transport\n- **No Credential Storage**: Pass-through only, never logged or cached\n- **Structured Logging**: Audit trail with request IDs, no PII exposure\n- **CORS Protection**: Whitelist origins, block cross-site attacks\n\n---\n\n## Documentation\n\n- **[MCP Specification](https://modelcontextprotocol.io/specification/2025-03-26)** - Model Context Protocol docs\n- **[tsdav Docs](https://tsdav.vercel.app/docs/intro)** - CalDAV/CardDAV library reference\n- **[CalDAV RFC 4791](https://datatracker.ietf.org/doc/html/rfc4791)** - CalDAV protocol specification\n- **[CardDAV RFC 6352](https://datatracker.ietf.org/doc/html/rfc6352)** - CardDAV protocol specification\n\n---\n\n## Contributing\n\nPull requests are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details\n\n---\n\n## Acknowledgments\n\nBuilt with:\n- **[tsdav](https://github.com/natelindev/tsdav)** - Excellent TypeScript CalDAV/CardDAV library\n- **[tsdav-utils](https://github.com/PhilflowIO/tsdav-utils)** - Field-agnostic utility layer for RFC-compliant field updates\n- **[MCP SDK](https://modelcontextprotocol.io)** - Model Context Protocol by Anthropic\n- **[ical.js](https://github.com/kewisch/ical.js)** - RFC-compliant iCalendar parser\n\n---\n\n**Questions? Issues?** Create a [GitHub issue](https://github.com/PhilflowIO/dav-mcp/issues)\n\n---\n\n*Built for AI agents managing calendars, contacts, and tasks*\n",
  "bytes": 8261,
  "sha": "53da6a57635c91fb32567d1af0a5ae646a08eac62002fe46681d501b4e5070c1",
  "repo_slug": "philflowio/dav-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_philflowio_dav_mcp_97865586/readme"
}