Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
dominik1001 avatar

Caldav MCP

  • 97 repo stars
  • Updated August 10, 2026
  • dominik1001/caldav-mcp

CalDAV MCP is a MCP server that performs CalDAV calendar list, create, update, and delete operations as MCP tools.

About

CalDAV MCP is a Model Context Protocol server that exposes calendar operations—listing, creating, updating, and deleting events—against any CalDAV-compatible backend. developers who already keep deadlines in Fastmail, Nextcloud, Baikal, or similar CalDAV endpoints can register caldav-mcp (npm, version 0.9.0, stdio) so Claude Code or Cursor can reason about their real schedule while scoping features, booking launch tasks, or juggling support windows. Configuration is explicit: base URL plus username and password supplied as environment variables, with the password treated as a secret in the MCP schema. This is agent-driven calendar I/O, not a replacement for your calendar UI or mobile notifications. Use it when you want programmatic, conversational calendar edits from the same toolchain that writes your code; skip it if you only need Google Calendar OAuth widgets without a CalDAV endpoint.

  • MCP tools for CalDAV: list, create, update, and delete calendar events
  • npm package caldav-mcp v0.9.0 with stdio transport
  • Requires CALDAV_BASE_URL, CALDAV_USERNAME, and CALDAV_PASSWORD env configuration
  • Works with standard CalDAV servers (self-hosted or provider endpoints that expose CalDAV)
  • Enables agents to draft or adjust events from natural language during planning sessions

Caldav MCP by the numbers

  • Data as of Aug 10, 2026 (Skillselion catalog sync)
terminal
claude mcp add --env CALDAV_BASE_URL=YOUR_CALDAV_BASE_URL --env CALDAV_USERNAME=YOUR_CALDAV_USERNAME --env CALDAV_PASSWORD=YOUR_CALDAV_PASSWORD caldav-mcp -- npx -y caldav-mcp

Add your badge

Show developers this MCP server is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars97
Packagecaldav-mcp
TransportSTDIO
AuthRequired
Last updatedAugust 10, 2026
Repositorydominik1001/caldav-mcp

What it does

Let your coding agent list and manage CalDAV calendar events for scheduling around solo-developer ship and launch milestones.

Who is it for?

Best when you're on CalDAV-backed calendars and want hands-free event CRUD from coding agents during integration setup.

Skip if: Skip if you're on calendars with no CalDAV API, or anyone and refuses to provide CalDAV credentials to a local MCP process.

What you get

Once caldav-mcp is configured, your agent can query and mutate CalDAV events through MCP instead of inventing a fictional schedule.

  • Agent-callable CalDAV event list and CRUD results
  • Calendar-aware planning without leaving the coding agent

By the numbers

  • Version 0.9.0 on npm (identifier caldav-mcp)
  • Four operation classes: list, create, update, delete events
  • Three required environment variables for CalDAV auth
README.md

caldav-mcp

🗓️ A CalDAV Model Context Protocol (MCP) server to expose calendar operations as tools for AI assistants.

Release npm version MIT License code style: prettier MCP Compatible semantic-release: angular

✨ Features

  • Connect to CalDAV servers
  • List calendars
  • List calendar events within a specific timeframe
  • Create calendar events
  • Update calendar events
  • Delete calendar events by UID

Setup

{
  "mcpServers": {
    ...,
    "calendar": {
      "command": "npx",
      "args": [
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_BASE_URL": "<CalDAV server URL>",
        "CALDAV_USERNAME": "<CalDAV username>",
        "CALDAV_PASSWORD": "<CalDAV password>"
      }
    }
  }
}

Development

Quick Start

Run the MCP server in development mode with auto-reload:

npm run dev

This will run the TypeScript code directly with watch mode and automatically load environment variables from .env.

Manual Build

Alternatively, you can compile TypeScript to JavaScript and run it:

  1. Compile:
npx tsc
  1. Run:
node dist/index.js

Available Tools

list-calendars

List all calendars returning both name and URL

Parameters: none

Returns:

  • List of all available calendars

list-events

List all events between start and end date in the calendar specified by its URL

Parameters:

  • start: string — Start date (ISO 8601)
  • end: string — End date (ISO 8601)
  • calendarUrl: string

Returns:

  • A list of events that fall within the given timeframe, each containing uid, summary, start, end, and optionally description and location

create-event

Creates an event in the calendar specified by its URL. For all-day events, set wholeDay to true. For a single-day all-day event, use start and end datetimes on the same calendar date; they do not need to be identical timestamps.

Parameters:

  • summary: string
  • start: string — Start datetime (ISO 8601)
  • end: string — End datetime (ISO 8601)
  • wholeDay: boolean (optional) — Create as a whole-day event
  • calendarUrl: string
  • description: string (optional)
  • location: string (optional)
  • recurrenceRule: object (optional)
    • freq: enum (DAILY | WEEKLY | MONTHLY | YEARLY) (optional)
    • interval: number (optional)
    • count: number (optional)
    • until: string (optional)
    • byday: array of string (optional)
    • bymonthday: array of number (optional)
    • bymonth: array of number (optional)

Returns:

  • The unique ID of the created event

update-event

Updates an existing event in the calendar specified by its URL. Only provided fields are changed. For a one-day full-day event, set wholeDay to true and set start and end to the same calendar day.

Parameters:

  • uid: string — Unique identifier of the event to update (obtained from list-events)
  • calendarUrl: string
  • summary: string (optional)
  • start: string (optional)
  • end: string (optional)
  • wholeDay: boolean (optional) — Update whether this is a whole-day event
  • description: string (optional)
  • location: string (optional)
  • recurrenceRule: object (optional)
    • freq: enum (DAILY | WEEKLY | MONTHLY | YEARLY) (optional)
    • interval: number (optional)
    • count: number (optional)
    • until: string (optional)
    • byday: array of string (optional)
    • bymonthday: array of number (optional)
    • bymonth: array of number (optional)

Returns:

  • The unique ID of the updated event

delete-event

Deletes an event in the calendar specified by its URL

Parameters:

  • uid: string — Unique identifier of the event to delete (obtained from list-events)
  • calendarUrl: string

Returns:

  • Confirmation message when the event is successfully deleted

License

MIT

Recommended MCP Servers

How it compares

CalDAV integration MCP, not a standalone calendar app or Google-only OAuth skill.

FAQ

Who is CalDAV MCP for?

Developers and small teams using CalDAV calendars who want MCP agents to read and maintain events alongside development work.

When should I use CalDAV MCP?

Use it while building agent automations for scheduling—sprint planning, launch checklists, or support rotations—against your live CalDAV account.

How do I add CalDAV MCP to my agent?

Install caldav-mcp from npm, set CALDAV_BASE_URL, CALDAV_USERNAME, and CALDAV_PASSWORD in the MCP server env block, add stdio transport in your host, then enable the list/create/update/delete tools.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.