SuperAPI AI 工具集

dav-mcp

dav-mcp 是一个基于 MCP(Model Context Protocol)的服务器,让 AI 智能体能够管理日历、联系人和任务。它构建在 27 个生产级工具之上,覆盖 CalDAV、CardDAV 和 VTODO 协议,支持字段级更新、服务端查询和空闲/忙碌查询,通过 stdio 或 HTTP 运行。兼容 Nextcloud、Baikal、Radicale、iCloud 等任何符合 RFC 4791 和 RFC 6352 的 CalDAV/CardDAV 服务器。

访问官网

工具介绍

用途

dav-mcp 旨在将 AI 智能体转变为能够编排日历、联系人和任务的助手。它通过 MCP(Model Context Protocol)协议,让 AI 助手可以精确操作 CalDAV/CardDAV 服务器上的事件、vCard 联系人和 VTODO 任务。

主要能力

dav-mcp 提供 27 个工具,分为三类:

CalDAV 工具(12 个):

  • list_calendars:列出所有可用日历
  • list_events:列出所有事件(过滤搜索请用 calendar_query)
  • create_event:创建新日历事件
  • update_event:更新任意事件字段(SUMMARY、LOCATION、STATUS、自定义 X-* 属性),可通过 start_date/end_date/all_day 移动或转换事件
  • update_event_raw:使用原始 iCal 数据更新事件(高级)
  • delete_event:永久删除事件
  • calendar_query:按文本、日期范围或位置高效搜索和过滤事件
  • make_calendar:创建新日历集合,可选时区(IANA 名称,如 Europe/Berlin,以 VTIMEZONE 发送)
  • update_calendar:更新日历属性(显示名称、描述、颜色、时区)
  • delete_calendar:删除日历及其所有事件
  • calendar_multi_get:按 URL 批量获取多个指定事件
  • freebusy_query:查找某时间段内的空闲和忙碌时间(“我什么时候有空?”),客户端计算

CardDAV 工具(8 个):

  • list_addressbooks:列出所有可用地址簿
  • list_contacts:列出所有联系人(过滤搜索请用 addressbook_query)
  • create_contact:创建新联系人(vCard)
  • update_contact:更新任意联系人字段(FN、EMAIL、TEL、ORG、ADR、自定义 X-* 属性)
  • update_contact_raw:使用原始 vCard 数据更新联系人(高级)
  • delete_contact:永久删除联系人
  • addressbook_query:按姓名、邮箱或组织高效搜索和过滤联系人
  • addressbook_multi_get:按 URL 批量获取多个指定联系人

VTODO 工具(7 个):

  • list_todos:列出所有待办/任务(过滤搜索请用 todo_query)
  • create_todo:创建新待办/任务,可选截止日期、优先级、状态
  • update_todo:更新任意待办字段(SUMMARY、STATUS、PRIORITY、DUE、PERCENT-COMPLETE、自定义 X-* 属性)
  • update_todo_raw:使用原始 VTODO iCal 数据更新待办(高级)
  • delete_todo:永久删除待办/任务
  • todo_query:按状态/截止日期高效搜索和过滤待办
  • todo_multi_get:按 URL 批量获取多个指定待办

使用方式

一键安装(Claude Desktop): 从最新 release 下载 dav-mcp-<version>.mcpb(4.1.2 起提供),用 Claude Desktop 打开,输入服务器 URL、用户名和密码(密码存储为 secret),认证方式保持 Basic 除非服务器需要 Digest。.mcpb 是 MCP Bundle,包含服务器及其依赖,无需安装 Node.js 或 npx。

Claude Desktop / Cursor(本地): 在 MCP 配置文件中添加配置。配置文件位置: macOS:~/Library/Application Support/Claude/claude_desktop_config.json Windows:%APPDATA%\Claude\claude_desktop_config.json Linux:~/.config/Claude/claude_desktop_config.json 添加后重启 Claude Desktop。

n8n(远程 HTTP): 启动 HTTP 服务器,添加 AI Agent 节点,添加 MCP Client Tool 节点并连接到 AI Agent,配置 MCP Endpoint 为 http://localhost:3000/mcp,认证为 Bearer Token。

也可拉取已发布镜像(distroless,非 root 运行,无 shell),标签有 latest、精确版本(5.0.0)和次要版本线(5.0)。设置 PORT 可更改端口,健康检查会跟随。或从源码构建。

适用场景

  • n8n 自动化工作流:会议管理、联系人搜索、任务报告、定时清理
  • Claude Desktop 集成:快速创建事件、联系人查找、日历概览、日历管理
  • 兼容所有主流提供商:Nextcloud、Baikal、Radicale、iCloud(需应用专用密码)以及任何符合 RFC 的服务器

限制

  • 需要 Node.js 22 或更高版本
  • 配置错误(未知 AUTH_METHOD 值或缺少所选方法的凭据)会在启动时停止服务器,而不是回退到 Basic
  • HTTP 模式有速率限制:每客户端地址每 15 分钟 100 次请求(在检查 bearer token 之前计数);回环或私有网络(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)的客户端为 10,000 次。限制:dav-mcp 看到的是连接它的地址。在 Docker 端口映射或反向代理后面,那是桥接网关或代理,因此所有外部客户端共享该地址、其计数器和提高的限制。如果暴露 HTTP 传输,请在代理处按客户端限速
  • 工具调用日志默认关闭,可通过 LOG_TOOL_CALLS=true 开启,记录到 ~/.local/state/dav-mcp/tool-calls.jsonl(或 $XDG_STATE_HOME、Windows 上的 %LOCALAPPDATA%,或 TOOL_CALL_LOG_FILE),仅自己可读。TOOL_CALL_LOG_MODE=console 发送到 stderr
  • 无遥测,不与维护者或第三方共享数据。工具结果发送给调用工具的 AI 助手。凭据和日历数据不由 dav-mcp 存储;可选工具调用日志默认关闭
  • 时区处理:未指定时区的事件或待办(浮动时间或全天日期)按其日历的时区读取(RFC 4791 §9.9),即 make_calendar/update_calendar 设置的时区,list_calendars 会显示。没有时区的日历按 dav-mcp 运行所在时区读取:TZ 环境变量(如 Docker 或 HTTP 部署中的 TZ=Europe/Berlin),否则系统时区。创建和更新工具未给定时区的时间同样读取,移动时未存储时区的事件保持无时区。freebusy_query 按日历时区打印其时间段并命名该时区

安全

  • 输入验证:所有输入在执行前用 Zod schema 验证
  • Bearer 认证:HTTP 传输的令牌认证
  • 无凭据存储:仅传递,从不记录或缓存
  • 结构化日志:带请求 ID 的审计跟踪,无 PII 暴露
  • CORS 保护:白名单来源,阻止跨站攻击

技术栈

基于 tsdav(TypeScript CalDAV/CardDAV 库)、tsdav-utils(字段无关的 RFC 合规字段更新工具层)、MCP SDK(Anthropic 的 Model Context Protocol)、ical.js(RFC 合规的 iCalendar 解析器)。

许可

MIT License。