caldav-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
🗓️ 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
Development
Quick Start
Run the MCP server in development mode with auto-reload:
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:
2. Run:
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
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.