A side-by-side look at the CalendarMCP and Dav MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose CalendarMCP for workplace & productivity work as a local process; choose Dav MCP for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
list_events, get_event, create_event.CALDAV_SERVER_URL, CALDAV_USERNAME, CALDAV_PASSWORD.list_calendars, list_events, create_event.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 48/100 · Fair | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | CALDAV_SERVER_URLCALDAV_USERNAMECALDAV_PASSWORD |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 40 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 10 | 27 |
| Full listing | View CalendarMCP | View Dav MCP |
list_eventsList events across one or all connected calendars in a time range. Auto-paginates up to 2500 results.get_eventFull details of one event.create_eventCreate an event. Supports attendees, location, reminders, recurrence, all-day.update_eventPartial update of an existing event.delete_eventDelete an event.quick_add_eventCreate from natural language ("Lunch with Sam Friday 1pm").list_calendarsList every calendar the API key can see, with per-calendar R/W permissions.find_free_timeFree/busy query across one or more calendars. The right thing to call before `create_event` to prevent double-booking.manage_attendeesAdd or remove attendees from an event.batch_update_eventsUpdate up to 50 events in one concurrent call.list_calendarsList all available calendarslist_eventsList ALL events (use calendar_query for filtered searches)create_eventCreate a new calendar eventupdate_eventPREFERRED: Update any event field (SUMMARY, LOCATION, STATUS, custom X-* properties); move or convert an event with start_date/end_date/all_dayupdate_event_rawUpdate event with raw iCal data (advanced)delete_eventDelete an event permanentlycalendar_queryPREFERRED: Search and filter events efficiently by text, date range, or locationmake_calendarCreate a new calendar collection, optionally with a time zone (an IANA name such as `Europe/Berlin`, sent as a VTIMEZONE)update_calendarUpdate calendar properties (display name, description, color, time zone)delete_calendarDelete a calendar and all its eventscalendar_multi_getBatch fetch multiple specific events by URLsfreebusy_queryFind free and busy time in a range ("when am I free?"), calculated client-sidePaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"calendarmcp": {
"command": "npx",
"args": [
"@modelcontextprotocol/server-fetch"
]
}
}
}
{
"mcpServers": {
"dav-mcp": {
"command": "npx",
"args": [
"-y",
"needs"
],
"env": {
"CALDAV_SERVER_URL": "YOUR_CALDAV_SERVER_URL_HERE",
"CALDAV_USERNAME": "YOUR_CALDAV_USERNAME_HERE",
"CALDAV_PASSWORD": "YOUR_CALDAV_PASSWORD_HERE"
}
}
}
}