io.github.dominik1001/caldav-mcp

Registre officiel Productivité

CalDAV calendar operations (list, create, update, delete events) as MCP tools.

Que pouvez-vous faire avec io.github.dominik1001/caldav-mcp ?

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

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package caldav-mcp
Claude Code
claude mcp add caldav-mcp -e 'CALDAV_BASE_URL=<CALDAV_BASE_URL>' -e 'CALDAV_USERNAME=<CALDAV_USERNAME>' -e 'CALDAV_PASSWORD=<your caldav_password>' -- npx -y caldav-mcp@0.9.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "caldav-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "caldav-mcp@0.9.0"
            ],
            "env": {
                "CALDAV_BASE_URL": "<CALDAV_BASE_URL>",
                "CALDAV_USERNAME": "<CALDAV_USERNAME>",
                "CALDAV_PASSWORD": "<your caldav_password>"
            }
        }
    }
}

Variables d'environnement

  • CALDAV_BASE_URL obligatoire Base URL of the CalDAV server (e.g. https://caldav.example.com)
  • CALDAV_USERNAME obligatoire Username for CalDAV authentication
  • CALDAV_PASSWORD obligatoire secret Password for CalDAV authentication

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. caldav-mcp
  2. ✨ Features
  3. Setup
  4. Development
  5. Available Tools
  6. License

caldav-mcp

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

✨ 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: bash npx tsc
  2. Run: bash node dist/index.js

Available Tools

list-calendars

List all calendars returning both name and absolute URL. Pass a calendar's url unchanged as calendarUrl to the other tools.

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:

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

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:

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

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:

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

Returns:

  • The unique ID of the updated event
delete-event

Deletes an event in the calendar specified by its URL

Parameters:

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

Returns:

  • Confirmation message when the event is successfully deleted
list-todos

List tasks (VTODOs) in the calendar specified by its URL. By default returns only open tasks (NEEDS-ACTION and IN-PROCESS), sorted by manual order then due date. Use status to include completed (COMPLETED) or all (ALL) tasks, and limit/offset to page through long lists.

Parameters:

  • calendarUrl: string
  • due_after: string (optional) — Only tasks with a due date at or after this (ISO 8601). Undated tasks are excluded when a due window is set.
  • due_before: string (optional) — Only tasks with a due date at or before this (ISO 8601). Undated tasks are excluded when a due window is set.
  • limit: number (optional) — Max tasks to return (default 50, max 500)
  • offset: number (optional) — Tasks to skip (default 0)
  • status: enum (OPEN | ALL | NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED) (optional) — Filter by status. OPEN (default) = NEEDS-ACTION + IN-PROCESS; ALL = everything; or an exact status (NEEDS-ACTION, COMPLETED, IN-PROCESS, CANCELLED).

Returns:

  • An object { todos, total, limit, offset } where total is the count before pagination. Each todo has uid, summary, status, and optionally due, start, completed, description, location.
create-todo

Creates a task (VTODO) in the calendar specified by its URL. Only summary is required; a task may have no dates. Use due for a deadline and start for when work should begin.

Parameters:

  • calendarUrl: string
  • description: string (optional)
  • due: string (optional) — Due datetime (ISO 8601)
  • location: string (optional)
  • start: string (optional) — Start datetime (ISO 8601)
  • status: enum (NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED) (optional) — Defaults to NEEDS-ACTION when omitted
  • summary: string

Returns:

  • The unique ID of the created todo
update-todo

Updates an existing task (VTODO) in the calendar specified by its URL. Only provided fields are changed. To mark a task done, prefer the complete-todo tool.

Parameters:

  • calendarUrl: string
  • description: string (optional)
  • due: string (optional)
  • location: string (optional)
  • start: string (optional)
  • status: enum (NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED) (optional)
  • summary: string (optional)
  • uid: string — Unique identifier of the todo to update (from list-todos)

Returns:

  • The unique ID of the updated todo
complete-todo

Marks a task (VTODO) as done. Sets its status to COMPLETED and records the completion time.

Parameters:

  • calendarUrl: string
  • uid: string — Unique identifier of the todo to complete (from list-todos)

Returns:

  • The unique ID of the completed todo
delete-todo

Deletes a task (VTODO) in the calendar specified by its URL

Parameters:

  • calendarUrl: string
  • uid: string — Unique identifier of the todo to delete (from list-todos)

Returns:

  • Confirmation message when the todo is successfully deleted

License

MIT

Questions fréquentes

Qu'est-ce que io.github.dominik1001/caldav-mcp ?

CalDAV calendar operations (list, create, update, delete events) as MCP tools.

Comment installer io.github.dominik1001/caldav-mcp ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add caldav-mcp -e 'CALDAV_BASE_URL=<CALDAV_BASE_URL>' -e 'CALDAV_USERNAME=<CALDAV_USERNAME>' -e 'CALDAV_PASSWORD=<your caldav_password>' -- npx -y caldav-mcp@0.9.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.dominik1001/caldav-mcp ?

Oui. Il attend CALDAV_BASE_URL, CALDAV_USERNAME, CALDAV_PASSWORD, à renseigner dans sa configuration.

io.github.dominik1001/caldav-mcp est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient io.github.dominik1001/caldav-mcp ?

Il est publié par dominik1001. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.