
Caldav Mcp
io.github.dominik1001由 GitHub 账号 dominik1001 发布v0.9.0更新于 Oct 24, 2026
CalDAV calendar operations (list, create, update, delete events) as MCP tools.
概览
让助手通过工具读取和管理 CalDAV 日历、事件与任务,包括列出、创建、更新和删除。
- 可以做什么
- 连接 CalDAV 服务器,把日历操作暴露为 MCP 工具。可列出日历、按时间段列出事件,并按 UID 创建、更新或删除事件,支持全天事件和重复事件。也支持任务(VTODO):按状态、截止日期和分页条件列出,以及创建、更新、完成和删除任务。
- 适用场景
- 适合让助手操作已有的 CalDAV 日历,例如查看空闲时间、安排或调整会议,或跟踪和完成任务。适用于自建或基于标准的日历服务,而非专有日历服务。
- 运行要求
- 以 npm 包(caldav-mcp)通过 stdio 在本地运行,需要 Node.js 和 npx。需要环境变量 CALDAV_BASE_URL、CALDAV_USERNAME 和 CALDAV_PASSWORD,并能访问 CalDAV 服务器网络。仅支持桌面端。
安装
在 SourceWeft 中
- 打开 控制台中的 Caldav Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
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
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:
- Compile:
- Run:
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: stringend: 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 optionallydescriptionandlocation
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: stringdescription: 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: stringwholeDay: 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: stringdescription: 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: stringuid: 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: stringdue_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 }wheretotalis the count before pagination. Each todo hasuid,summary,status, and optionallydue,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: stringdescription: 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 omittedsummary: 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: stringdescription: 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: stringuid: 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: stringuid: string — Unique identifier of the todo to delete (from list-todos)
Returns:
- Confirmation message when the todo is successfully deleted
License
MIT
来源:README.md,提交 6bbb652
工具
0版本历史
1- v0.9.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分