A side-by-side look at the Dav MCP and MustDo MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Dav MCP for workplace & productivity work as a local process; choose MustDo for workplace & productivity. You can also run both side by side in one mcpServers block.
CALDAV_SERVER_URL, CALDAV_USERNAME, CALDAV_PASSWORD.list_calendars, list_events, create_event.MUSTDO_CK_API_TOKEN, MUSTDO_CK_ENV, MUSTDO_CK_CONTAINER, MUSTDO_CK_ZONE, MUSTDO_CALLBACK_PORT, MUSTDO_HOME, MUSTDO_LOG_LEVEL.sign_in, get_me, list_todos.Rows where the two servers differ are marked.
| Spec | M MustDo | |
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 60/100 · Good | 45/100 · Fair |
| Install command | Confirmed | Not confirmed yet |
| Transport | Local subprocess (stdio) | — |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Free |
| Required env vars | CALDAV_SERVER_URLCALDAV_USERNAMECALDAV_PASSWORD | MUSTDO_CK_API_TOKENMUSTDO_CK_ENV |
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. A timezone is accepted but not applied yet ([#78](https://github.com/PhilflowIO/dav-mcp/issues/78))update_calendarUpdate calendar properties (display name, description, color, timezone). The timezone is sent as a bare timezone ID today, which not every server accepts ([#78](https://github.com/PhilflowIO/dav-mcp/issues/78))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-sidesign_inLocal only.** Opens Apple's sign-in page and stores `ckWebAuthToken`. Not present on the relay.Paste 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": {
"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"
}
}
}
}
No confirmed install command for MustDo yet — follow the setup steps linked from its listing page rather than a guessed package name.
MUSTDO_CK_CONTAINERMUSTDO_CK_ZONEMUSTDO_CALLBACK_PORTMUSTDO_HOMEMUSTDO_LOG_LEVEL| Verified owner | Community listing | Community listing |
|---|
| GitHub stars | 40 | 0 |
|---|
| Directory activity | 1 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
|---|
| Tools | 27 | 8 |
|---|
| Full listing | View Dav MCP | View MustDo |
|---|
get_melist_todosLists To-Dos. Deleted ones are excluded. Repeating To-Dos are returned as **templates** under `repeating` (not expanded) with any per-day `occurrences` in range.add_todoCreates a To-Do with `source = "mcp"`. **If `due` is omitted, it is tomorrow at the default time.update_todoChanges only the fields you pass. `repeat` replaces the whole rule; `null` or `{ "kind": "none" }` removes it.complete_todoOne-off: `status = done`. Repeating: marks that day's occurrence done (default: today).snooze_todoSnoozes until `until`. Repeating: only that day's occurrence.delete_todoSoft delete (`deletedAt`). The app purges it after 14 days.