# dav-mcp

Connects AI assistants to CalDAV, CardDAV, and VTODO servers. Provides 27 dedicated tools to manage calendars, address books, and task lists.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 40
- Author: PhilflowIO
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/PhilflowIO/dav-mcp
- Updated: 2026-10-10
- HTML: https://affpapa.org/en/nevibecode/mcp/dav-mcp

## What it does

This server bridges AI agents with personal information servers over standard WebDAV extensions. Inside are 27 specialized tools: 12 for CalDAV events, 8 for CardDAV address books, and 7 for VTODO tasks. It runs targeted queries like `calendar_query` and `todo_query` instead of pulling entire databases.

Agents can modify individual attributes, update custom `X-*` metadata, or submit raw iCal and vCard payloads when needed. The server also checks client-side schedule availability through `freebusy_query`. Batch fetching is available via multi-get actions.

Floating events without an explicit timezone inherit the calendar zone, or fall back to the host `TZ` variable. You can run the process via `npx`, launch a Docker container, or host an HTTP endpoint protected by a Bearer token.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `CALDAV_SERVER_URL`, `CALDAV_USERNAME`, `CALDAV_PASSWORD`, `AUTH_METHOD`, `GOOGLE_SERVER_URL`, `GOOGLE_USER`, `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REFRESH_TOKEN`, `GOOGLE_TOKEN_URL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add dav-mcp -e CALDAV_SERVER_URL=<CALDAV_SERVER_URL> -e CALDAV_USERNAME=<CALDAV_USERNAME> -e CALDAV_PASSWORD=<CALDAV_PASSWORD> -e GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> -e GOOGLE_REFRESH_TOKEN=<GOOGLE_REFRESH_TOKEN> -- npx -y dav-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add dav-mcp --env CALDAV_SERVER_URL=<CALDAV_SERVER_URL> --env CALDAV_USERNAME=<CALDAV_USERNAME> --env CALDAV_PASSWORD=<CALDAV_PASSWORD> --env AUTH_METHOD=<AUTH_METHOD> --env GOOGLE_SERVER_URL=<GOOGLE_SERVER_URL> -- npx -y dav-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "dav-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "dav-mcp"
            ],
            "env": {
                "CALDAV_SERVER_URL": "<CALDAV_SERVER_URL>",
                "CALDAV_USERNAME": "<CALDAV_USERNAME>",
                "CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
                "AUTH_METHOD": "<AUTH_METHOD>",
                "GOOGLE_SERVER_URL": "<GOOGLE_SERVER_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "dav-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "dav-mcp"
            ],
            "env": {
                "CALDAV_SERVER_URL": "<CALDAV_SERVER_URL>",
                "CALDAV_USERNAME": "<CALDAV_USERNAME>",
                "CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
                "AUTH_METHOD": "<AUTH_METHOD>",
                "GOOGLE_SERVER_URL": "<GOOGLE_SERVER_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e CALDAV_SERVER_URL=<CALDAV_SERVER_URL> -e CALDAV_USERNAME=<CALDAV_USERNAME> -e CALDAV_PASSWORD=<CALDAV_PASSWORD> -e AUTH_METHOD=<AUTH_METHOD> -e GOOGLE_SERVER_URL=<GOOGLE_SERVER_URL> dav-mcp npx -y dav-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- query calendar events by date, text, or location without dumping all data
- manage vCard contacts with phone numbers, emails, and custom properties
- track VTODO items by status, due dates, and priority levels
- inspect free and busy time intervals before scheduling meetings

## Example prompts
- List all calendar events scheduled for this Friday and check my free time.
- Create a new VTODO task named 'Review release notes' due tomorrow.
- Update the organization and email address for contact John Doe.

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44874
- [screenpipe](https://affpapa.org/en/nevibecode/mcp/screenpipe.md) — MCP server · ★ 22053
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12791
- [kaneo](https://affpapa.org/en/nevibecode/mcp/kaneo.md) — MCP server · ★ 9602
- [Mindwtr](https://affpapa.org/en/nevibecode/mcp/mindwtr.md) — MCP server · ★ 2318
- [Azure DevOps (ADO)](https://affpapa.org/en/nevibecode/mcp/azure-devops-ado.md) — MCP server · ★ 2067

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
