
Research
/Security News
Popular npm Packages in the keyv and Cacheable Namespaces Compromised in Active Supply Chain Attack
Popular npm packages keyv and cacheable compromised.
caldav-mcp
Advanced tools
A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.
🗓️ A CalDAV Model Context Protocol (MCP) server to expose calendar operations as tools for AI assistants.
{
"mcpServers": {
...,
"calendar": {
"command": "npx",
"args": [
"caldav-mcp"
],
"env": {
"CALDAV_BASE_URL": "<CalDAV server URL>",
"CALDAV_USERNAME": "<CalDAV username>",
"CALDAV_PASSWORD": "<CalDAV password>"
}
}
}
}
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.
Alternatively, you can compile TypeScript to JavaScript and run it:
npx tsc
node dist/index.js
List all calendars returning both name and URL
Parameters: none
Returns:
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: stringReturns:
uid, summary, start, end, and optionally description and locationCreates 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: stringstart: string — Start datetime (ISO 8601)end: string — End datetime (ISO 8601)wholeDay: boolean (optional) — Create as a whole-day eventcalendarUrl: stringdescription: 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:
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: stringsummary: string (optional)start: string (optional)end: string (optional)wholeDay: boolean (optional) — Update whether this is a whole-day eventdescription: 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:
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: stringReturns:
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: stringstatus: 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).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.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.limit: number (optional) — Max tasks to return (default 50, max 500)offset: number (optional) — Tasks to skip (default 0)Returns:
{ todos, total, limit, offset } where total is the count before pagination. Each todo has uid, summary, status, and optionally due, start, completed, description, location.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:
summary: stringcalendarUrl: stringdue: string (optional) — Due datetime (ISO 8601)start: string (optional) — Start datetime (ISO 8601)description: string (optional)location: string (optional)status: enum (NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED) (optional) — Defaults to NEEDS-ACTION when omittedReturns:
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:
uid: string — Unique identifier of the todo to update (from list-todos)calendarUrl: stringsummary: string (optional)due: string (optional)start: string (optional)description: string (optional)location: string (optional)status: enum (NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED) (optional)Returns:
Marks a task (VTODO) as done. Sets its status to COMPLETED and records the completion time.
Parameters:
uid: string — Unique identifier of the todo to complete (from list-todos)calendarUrl: stringReturns:
Deletes a task (VTODO) in the calendar specified by its URL
Parameters:
uid: string — Unique identifier of the todo to delete (from list-todos)calendarUrl: stringReturns:
MIT
FAQs
A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.
The npm package caldav-mcp receives a total of 326 weekly downloads. As such, caldav-mcp popularity was classified as not popular.
We found that caldav-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.

Security News
/Company News
Socket has joined the new Composer and Packagist sponsorship program as a launch sponsor, supporting the team that keeps PHP's package ecosystem secure.