CalDAV calendars
Read and write CalDAV calendars: events, tasks and journal entries over the open standard
Connector by ni-c · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/ni-c-caldav-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 10 read · 5 write · 7 delete
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 22
Read from the source code; the running server may list different tools.
Read 10 · Look things up without changing anything.
get_eventget_free_busyget_journalget_server_infoget_tasklist_calendarslist_eventslist_journalslist_taskssearch_events
Write 5 · Create, change, send or run things.
complete_taskcreate_eventcreate_journalcreate_taskrespond_to_event
Delete 7 · Delete, drop, revoke or wipe things.
delete_eventdelete_journaldelete_taskmove_eventupdate_eventupdate_journalupdate_task
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
CALDAV_PASSWORDCALDAV_TOKEN
Other settings (environment variables or headers).
CALDAV_ALLOW_PLAINTEXTCALDAV_ALLOW_TOOLSCALDAV_CALENDARSCALDAV_DENY_TOOLSCALDAV_INSECURE_TLSCALDAV_MAX_EVENTSCALDAV_READ_ONLYCALDAV_TIMEZONECALDAV_URLCALDAV_USERNAMECALDAV_USER_EMAILELICITATION
Network hosts it talks to 6
apple.com· found in codecaldav-mcp.ni-c.de· found in codecalendarserver.org· found in codegithub.com· found in codeglama.ai· found in coderaw.githubusercontent.com· found in code
Tools (22)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
complete_taskMark a task done, or reopen itSets the task’s status. Marking it done records the completion time and sets it to 100 %; reopening clears both. The previous state is written down in the entry, so this is reversible — which is why it does not ask first.
create_eventCreate an eventAdds an event to a calendar. The UID and the file name are generated here, so an existing entry can never be overwritten by accident. Times without an offset are read in the timezone argument or in CALDAV_TIMEZONE.
create_journalCreate a journal entryAdds a dated note to a calendar that accepts journal entries. list_calendars reports which do.
create_taskCreate a taskAdds a task to a calendar that accepts them. list_calendars reports which do — a collection created for events only will refuse a task, and this server checks before writing rather than passing the server’s refusal back.
delete_eventDelete an eventcan change or delete dataRemoves an event. An occurrence id removes just that occurrence — which iCalendar does by adding an exception date to the series, so the rest of the series is untouched. A series id removes the whole entry. A CalDAV server keeps no history: this cannot be undone.
delete_journalDelete a journal entrycan change or delete dataRemoves a dated note. A CalDAV server keeps no history, and a note is somebody’s writing: this cannot be undone.
delete_taskDelete a taskcan change or delete dataRemoves a task. A CalDAV server keeps no history: this cannot be undone. To mark a task done instead, use complete_task.
get_eventRead one event in fullread-onlyThe complete event behind an id from a listing: the untruncated description, every reminder, every attendee, every attachment as metadata. An occurrence id answers with that one instance; a series id answers with the series and its rule.
get_free_busyWhen the calendar is busyread-onlyBusy periods in a time range — start and end only, no titles and no attendees. The datasparing way to ask "when am I free": nothing anybody else wrote comes back, so there is no untrusted content in the answer at all.
get_journalRead one journal entry in fullread-onlyThe complete note behind an id from list_journals, untruncated. This is the longest piece of somebody else’s prose this server hands over, so the text channel carries it inside an explicit untrusted fence.
get_server_infoWhat the connected CalDAV server can doread-onlyReports the DAV compliance tokens, which components each calendar accepts, and whether the optional features this server relies on actually work here. The first thing to run when something behaves differently than expected — CalDAV implementations differ more than the specification suggests.
get_taskRead one task in fullread-onlyThe complete task behind an id from list_tasks, with its untruncated description and every reminder.
list_calendarsList the calendarsread-onlyEvery calendar this server may use, with the id to pass to the other tools. Always asks the server rather than answering from a cache — being current is this tool’s whole job.
list_eventsList events in a time rangeread-onlyEvents between two points in time, from every calendar this server may see or from the ones named. Recurring events are expanded into their individual occurrences, so each one has its own id and can be changed on its own. Defaults to the next 30 days.
list_journalsList journal entriesread-onlyDated notes in a calendar, inside a time range. Most calendar clients hide these; a CalDAV server stores them alongside events and tasks, and some workflows use them as a diary.
Show 7 more tools
list_tasksList tasksread-onlyTasks with a start or due date inside a time range. Tasks with no date at all are not returned by a time-range query — the CalDAV specification defines the filter against the dates, and a task with none of them matches no window.
move_eventMove an event to another calendarcan change or delete dataCopies an event into another calendar and removes it from the first. The content survives, the address does not: every id that named this event stops working, and a listing is needed to get the new one. The destination may be a calendar other people can see.
respond_to_eventAccept or decline an invitationSets your own participation status on an event you were invited to. On a server with scheduling enabled this sends a reply to the organiser, which cannot be unsent — so it asks first. It changes only your own attendee line and never anybody else’s. This server cannot add or remove attendees at all.
search_eventsSearch events by textread-onlyFinds events whose summary, description or location contains a term. The search runs on the CalDAV server, one request per field and per calendar — the specification combines several field filters with AND, so asking for all three at once would only match entries carrying the term in every one of them.
update_eventChange an eventcan change or delete dataChanges the fields named and leaves everything else exactly as it was — including properties this server does not model, attendees, attachments and reminders it cannot write. Pass null to clear a field. Guarded by the entry’s ETag: if it changed since it was read, nothing is written and the answer says what it is now. Changing a whole recurring series asks first.
update_journalChange a journal entrycan change or delete dataReplaces the fields named. A CalDAV server keeps no version history, so the previous text of a note is gone once this succeeds — pass only the fields to change, and pass null to clear one. Guarded by the entry’s ETag, so a note changed elsewhere in the meantime is not silently overwritten.
update_taskChange a taskcan change or delete dataChanges the fields named and leaves everything else as it was. Pass null to clear a field. Guarded by the entry’s ETag. To mark a task done use complete_task, which records the completion time as well.
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 138
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 13, 2026 (15 days ago)
- Last package publish
- Oct 13, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.ni-c/caldav-mcp- Version
- 0.1.5
- Auth
- API key
- Packages
- npm @ni-c/caldav-mcpoci
ghcr.io/ni-c/caldav-mcp:0.1.5 - License
- MIT
- Repository
- github.com/ni-c/caldav-mcp
- Website
- caldav-mcp.ni-c.de
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from ni-c
- 0.638score
IMAP mailbox
ni-c
Read, search and organise any IMAP mailbox, with writes off by default
ConnectorAFreshness: ALocal★ 3↓ 211/wkClaude Code +5 - 0.630score
OpenStreetMap
ni-c
Geocoding, walking/driving/cycling distances, route optimization, isochrones and POI search on OSM
ConnectorAFreshness: ALocalRead-only★ 4Claude Code +5 - 0.625score
mcp-hub
ni-c
Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client
ConnectorAFreshness: ARemoteLocal★ 3↓ 67/wkClaude Code +5 - 0.618score

CardDAV address books
ni-c
Read and write CardDAV address books: contacts, groups and photos over the open standard
ConnectorAFreshness: ALocal↓ 200/wkClaude Code +5 - 0.615score
Wiki.js
ni-c
Search, read and edit Wiki.js pages, and manage its assets, users, groups and comments
ConnectorAFreshness: ALocal★ 3↓ 43/wkClaude Code +5 - 0.607score
Audiobookshelf
ni-c
Browse your Audiobookshelf libraries and keep listening progress, bookmarks and playlists in sync
ConnectorAFreshness: ALocal★ 1Claude Code +5
Cite this page
CalDAV calendars MCP server. Agent Mart. https://agentmart.dev/connectors/ni-c-caldav-mcp (last updated 2026-10-24)