dav-mcp logo

dav-mcp

Community
PhilflowIO

Transform AI agents into orchestrating assistants managing calendars, contacts, and tasks

PublisherPhilflowIO
Repositorydav-mcp
LanguageJavaScript
Forks
7
Stars
19
Available tools
20
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    dav-mcp exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 20 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    19 stars and 7 forks from the linked repository.

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.

License: MIT npm version


Quick Start

Claude Desktop / Cursor (Local)

Add to your MCP config file:

json
{
  "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:

bash
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:

  1. Add AI Agent node
  2. Add MCP Client Tool node and connect to AI Agent
  3. Configure:
    • MCP Endpoint: http://localhost:3000/mcp
    • Authentication: Bearer
    • Token: your-secret-token

Custom port:

bash
npx dav-mcp --http --port=8080

Docker

bash
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.

Capabilitydav-mcpMost MCPs
Calendar ManagementFull CRUD (11 tools)Create + list only (2-3 tools)
Contact ManagementComplete CardDAV (8 tools)Often missing entirely
Task ManagementFull VTODO support (7 tools)Rarely included
Field-Based UpdatesAll RFC properties + custom fieldsRarely available
Server-Side FilteringEfficient queriesDumps all data
Multi-ProviderAny CalDAV/CardDAV serverLimited provider support
Total Tools26 tools2-6 tools

Available Tools (26 Total)

CalDAV Tools (11 tools)

  1. list_calendars - List all available calendars
  2. list_events - List ALL events (use calendar_query for filtered searches)
  3. create_event - Create a new calendar event
  4. update_event - PREFERRED: Update any event field (SUMMARY, LOCATION, DTSTART, STATUS, custom X-* properties)
  5. update_event_raw - Update event with raw iCal data (advanced)
  6. delete_event - Delete an event permanently
  7. calendar_query - PREFERRED: Search and filter events efficiently by text, date range, or location
  8. make_calendar - Create a new calendar collection
  9. update_calendar - Update calendar properties (display name, description, color, timezone)
  10. delete_calendar - Permanently delete a calendar and all its events
  11. calendar_multi_get - Batch fetch multiple specific events by URLs

CardDAV Tools (8 tools)

  1. list_addressbooks - List all available address books
  2. list_contacts - List ALL contacts (use addressbook_query for filtered searches)
  3. create_contact - Create a new contact (vCard)
  4. update_contact - PREFERRED: Update any contact field (FN, EMAIL, TEL, ORG, ADR, custom X-* properties)
  5. update_contact_raw - Update contact with raw vCard data (advanced)
  6. delete_contact - Delete a contact permanently
  7. addressbook_query - PREFERRED: Search and filter contacts efficiently by name, email, or organization
  8. addressbook_multi_get - Batch fetch multiple specific contacts by URLs

VTODO Tools (7 tools)

  1. list_todos - List ALL todos/tasks (use todo_query for filtered searches)
  2. create_todo - Create a new todo/task with optional due date, priority, status
  3. update_todo - PREFERRED: Update any todo field (SUMMARY, STATUS, PRIORITY, DUE, PERCENT-COMPLETE, custom X-* properties)
  4. update_todo_raw - Update todo with raw VTODO iCal data (advanced)
  5. delete_todo - Delete a todo/task permanently
  6. todo_query - PREFERRED: Search and filter todos efficiently by status/due date
  7. 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:

json
{
  "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


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

Installation

TypingMind
Prerequisites:

Node.js 18+

{
  "mcpServers": {
    "dav-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "dav-mcp"
      ],
      "env": {
        "CALDAV_SERVER_URL": "<YOUR_CALDAV_SERVER_URL>",
        "CALDAV_USERNAME": "<YOUR_USERNAME>",
        "CALDAV_PASSWORD": "<YOUR_PASSWORD>"
      }
    }
  }
}

Available Tools

  • list_calendars

    List all available calendars

  • list_events

    List all events in calendars

  • create_event

    Create a new calendar event

  • update_event

    Update any event field (summary, location, date, status, custom properties)

  • delete_event

    Delete an event permanently

  • calendar_query

    Search and filter events by text, date range, or location

  • make_calendar

    Create a new calendar collection

  • update_calendar

    Update calendar properties (name, description, color, timezone)

  • delete_calendar

    Permanently delete a calendar and all its events

  • list_addressbooks

    List all available address books

  • list_contacts

    List all contacts in address books

  • create_contact

    Create a new contact (vCard)

  • update_contact

    Update any contact field (name, email, phone, organization, address)

  • delete_contact

    Delete a contact permanently

  • addressbook_query

    Search and filter contacts by name, email, or organization

  • list_todos

    List all todos/tasks

  • create_todo

    Create a new todo/task with optional due date and priority

  • update_todo

    Update any todo field (summary, status, priority, due date, completion)

  • delete_todo

    Delete a todo/task permanently

  • todo_query

    Search and filter todos by status and due date

Use dav-mcp MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once dav-mcp is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add dav-mcp as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the dav-mcp MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "dav-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "dav-mcp"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the dav-mcp MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the dav-mcp MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use dav-mcp to help me with this task?
dav-mcp
Sure. I read it.
Here is what I found using dav-mcp.

Frequently asked questions

What is the dav-mcp MCP server used for?

dav-mcp is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use dav-mcp MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use dav-mcp with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use dav-mcp MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With dav-mcp connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect dav-mcp MCP to TypingMind?

dav-mcp runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does dav-mcp MCP provide in TypingMind?

dav-mcp exposes 20 MCP tools that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use dav-mcp MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If dav-mcp requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇