MCP

caldav-mcp: Connect CalDAV Calendars to Your AI Assistant

Best for people who already have a CalDAV server account and want an AI assistant to view and manage their calendars; the server URL, username, and password are required, and creating, updating, and deleting write directly to the live calendar, so confirm before each action.

Official source · caldav-mcp

Install

"command": "npx",
      "args": [
        "caldav-mcp"
      ],

Who it's for

  • People who already have a CalDAV server account (self-hosted or provided by a service) and want an AI assistant to view and manage their calendars directly. The official positioning is to “expose calendar operations as tools for AI assistants”.
  • The covered operations include: connecting to a CalDAV server, showing calendars, showing calendar events within a timeframe, creating events, updating events, and deleting events by UID.
  • The prerequisites are clear: you must provide the CalDAV server URL, username, and password through the three environment variables CALDAV_BASE_URL, CALDAV_USERNAME, and CALDAV_PASSWORD; all three are required.
  • Not a fit for: people without a CalDAV server, or those unwilling to hand their account credentials to a local process. The official documentation does not say which specific CalDAV server implementations it works with, nor whether a read-only mode exists; both points are unconfirmed.

Your first attempt in 3 minutes

Recommended main path: launch it with npx in the mcpServers configuration of your MCP client; npx automatically fetches and runs the caldav-mcp package. Add this snippet to the configuration:

"command": "npx",
      "args": [
        "caldav-mcp"
      ],

and provide the credentials through environment variables in the same configuration:

"CALDAV_BASE_URL": "<CalDAV server URL>",
        "CALDAV_USERNAME": "<CalDAV username>",
        "CALDAV_PASSWORD": "<CalDAV password>"

After saving and restarting the client, start with one read-only call: ask the AI assistant to “list my calendars”, which corresponds to List calendars in the official capability list. The visible success signal is the assistant returning the list of calendars under that account. This step only reads the calendar structure and creates or modifies no events, but it does connect to the CalDAV server with your credentials.

A necessary warning: this server's create, update, and delete operations are all remote writes that directly modify the live calendar. Before any write action, have the assistant restate the operation to be performed, the target event, and the fields, and execute only after your confirmation.

The project also offers a development-oriented way to run it: run the TypeScript code directly in watch mode, with environment variables automatically loaded from .env; that suits debugging code, while everyday use should stay on the npx main path above.

Use cases

Case 1: Verify connectivity and permissions (List calendars). Scenario: you just set up the credentials and are unsure whether the URL or password is correct. Approach: ask the assistant to “list my calendars” — the lowest-cost read action for validating credentials. Expected result: the list of calendars under that CalDAV account; if it fails, check the values of the three environment variables and retry.

Case 2: Change only the fields you need with update-event. Scenario: a meeting moved to a new time while the title, location, and everything else stay the same. Approach: have the assistant locate the target event and then call update-event, providing only the fields to change; the official description reads “Updates an existing calendar event. Only provided fields are changed.”. Expected result: only the fields you provide are updated, and everything else stays unchanged. Confirmation point: this is a remote write that lands directly on the CalDAV server, so be sure to verify the target event and the fields to change before executing.

Boundaries

  • Read/write nature: the capabilities include both reading (showing calendars, showing events within a timeframe) and writing (creating, updating, deleting events by UID), and the tools act directly on the live calendar. Deletion is by UID, and the official documentation does not say whether deleted events can be recovered or offers any undo path, so be extra strict at the confirmation step.
  • Credential requirements: the server URL, username, and password must be provided via environment variables; the official documentation does not say whether alternative authentication such as OAuth or app-specific passwords is supported — unconfirmed.
  • Side effects and confirmation points: write operations really do modify the calendar on the server; update-event changes only the provided fields, and fields not mentioned are unaffected.
  • Other unconfirmed items: the list of supported CalDAV server software and any rate or concurrency limits are both unstated by the official documentation. “Unstated” only reflects the scope of the documentation and does not constitute any safety conclusion.