mcpField
C
calendar-ics-reader-events-freebusy-conflicts

calendar-ics-reader-events-freebusy-conflicts

远程服务
mcp.zovo.one生产力21 天前更新

关于 calendar-ics-reader-events-freebusy-conflicts

本地优先的 MCP 服务,可读取导出的 .ics 日历,查看事件、空闲时间和冲突。它会展开重复事件,并可导出选定事件而不修改源日历。

主要功能

  1. 01导入 .ics 文件或日历订阅
  2. 02列出和搜索事件
  3. 03查看工作时间内的空档
  4. 04查找重叠事件
  5. 05将所选事件导出为 .ics
  6. 06将会议转换为工时记录

适用场景

  1. 01查看多个日历中的一周安排
  2. 02寻找工作时间内的空档
  3. 03发现工作与个人日程冲突
  4. 04整理待导出或计费的会议

MCP 相关

向 MCP 客户端提供日历导入、事件、空闲时间、冲突和导出工具,并提供今日安排资源及日程规划提示词。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.zovo.one/mcp/calendar
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.zovo.one/mcp/calendar需要授权
安装包
mcpbcalendar.mcpb0.22.5

工具

12

此工具无需参数。

详细介绍

mcp-calendar

你的日历应用可以告诉你下周二有什么安排,却无法告诉你这一周的时间究竟花在了哪里、你同时答应了哪两件事,或者上个月的会议值多少可计费工时。此服务读取日历已导出的 .ics 文件,并回答这些问题:查询任意时间段内的事件并正确展开重复系列;合并忙碌时段,并找出工作时间内真正空闲的间隙;一次检查工作日历和个人日历中的所有时间冲突;生成只包含你选定事件的精简 .ics 文件;以及给出一场你本应计费的会议对应的准确时间条目。无需连接任何账号,也不会同步任何内容,日历文件会以纯文本形式保留在你的设备上。

由 theluckystrike 构建。

已收录于 官方 MCP Registry(io.github.theluckystrike/calendar-ics-reader-events-freebusy-conflicts)。

已收录于 AI Product Index - 提供实时远程端点 mcp.zovo.one/s/calendar,有免费套餐,无需注册。

日历演示

导入日历导出的 .ics 文件,然后询问有哪些安排、什么时候有空、哪些安排有冲突。零配置,全部在本地运行。

60 秒安装

@theluckystrike/mcp-calendar 尚待发布到 npm。在此之前,可使用 .mcpb 一键安装包,或克隆并构建;以下两种方式均已验证。

一键安装(.mcpb):从最新版本下载 calendar.mcpb,然后在 Claude Desktop 中双击: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "calendar": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-calendar"]
    }
  }
}

Claude Code:

claude mcp add calendar -- npx -y @theluckystrike/mcp-calendar

(.cursor/mcp.json):

{
  "mcpServers": {
    "calendar": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-calendar"]
    }
  }
}

上面的 npx 方式会在软件包发布后立即生效。在此之前,请使用上面的 .mcpb 安装包,或严格按以下四条命令从源代码构建:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/timezone -w servers/calendar

然后将客户端的 command 指向 node,并传入一个参数:servers/calendar/dist/index.js 的绝对路径。

要以 Pro 模式运行,请在同一配置块中设置 MCP_LICENSE_KEY,或使用你的密钥调用一次 license_activate。

从日历中导出 .ics 文件

应用位置
Google CalendarSettings -> Import & export -> Export。你会得到一个 zip 文件;导入其中的 .ics 文件。
Apple CalendarFile -> Export -> Export...
Outlook(桌面版)File -> Save Calendar,格式选择 iCalendar (.ics)
Outlook / Microsoft 365(网页版)Settings -> Calendar -> Shared calendars -> Publish,然后使用 ICS 链接(Pro)
其他应用任何以 .ics 结尾的已发布订阅源 URL,或 webcal://(Pro)

然后:ics_import {path: "~/Downloads/[email protected]", name: "work"}

工具

工具功能
ics_import读取 .ics 文件(path)、粘贴的内容(text)或公开订阅源(url,Pro),并以指定名称保存在本地。再次导入同名日历会替换原日历。
calendars_list列出所有已导入的日历:名称、来源、事件数量、大小和导入时间。
events_list列出两个日期之间的所有事件,将重复系列展开为实际发生的事件,按时间排序,并使用你自己的时区。每一行都包含一个 ID。
events_search搜索标题、描述、地点、组织者或参与者中包含指定短语的事件。
free_busy按天合并显示忙碌时段,以及工作时间内的空闲时段。标记为“空闲/透明”的事件不计为忙碌。
conflicts列出所有重叠的事件对及重叠分钟数,并检查所有日历,因此与客户通话和接送孩子时间冲突的情况也能被发现。较长的时间范围会缩短至可查询的 31 天,并返回结果,不会拒绝请求。
next_event显示下一项尚未开始的日程,以及距离开始还有多久。
event_export将选定的事件(按 ID 指定,或指定整个时间范围)写入新的 .ics 文件,供你发送。时间使用 UTC,因此在任何客户端上都能正确显示。
event_to_time_entry将一次会议转换为时间追踪器 entry_add 所需的准确参数,无需重新输入即可将通话记录为可计费时间。
ics_forget移除一个日历及其本地副本。
license_status / license_activate查看许可证等级;离线激活 Pro 密钥。

资源 calendar://today 一次即可提供今天的日程。提示词 plan_my_day 会引导你完成整个流程:查看日程、检查冲突、查找空闲时段,以及确定哪些已结束的会议需要计费。

解析器支持的内容

解析器依据真实导出文件编写,而不仅仅是规范:折叠行(CRLF、裸 LF 和裸 CR,以及 Exchange 在多字节字符中间折叠的行;这类行会先按字节重新拼接,再解码)、\n \, \; \\ 转义、结束时间为排他值 DTEND 的全天事件、用 DURATION 代替 DTEND、TZID 和 UTC 时间、浮动时间、RRULE 中的 HOURLY、DAILY、WEEKLY、MONTHLY 和 YEARLY,以及 COUNT、UNTIL(含边界)、INTERVAL、BYDAY(包括序数,如 2MO、-1FR)、BYMONTHDAY、BYMONTH 和 BYSETPOS、EXDATE、RDATE、RECURRENCE-ID 覆盖项(移动后的实例会替代原实例,而不是重复显示)、STATUS:CANCELLED、TRANSP:TRANSPARENT,以及事件内的 VALARM 块。无法读取的事件会被跳过并计数,不会因此丢弃文件中的其余内容。

我们有意不展开 FREQ=MINUTELY 和 FREQ=SECONDLY:这类规则会让任意时间范围内都充满数千个事件,掩盖一周内的其他日程。这些事件会列在首次发生时间处,并明确说明原因。没有 COUNT 和 UNTIL 的规则只会展开到你请求的时间范围。

此服务写出的导出文件会将全天事件保留为 DATE 值,因此节假日会保持原来的日期,不会因设备时区而变成前一天的定时事件。

我们有意忽略 VTIMEZONE。文件内嵌的 DST 规则是否最新,取决于生成文件的应用;我们会保留 TZID,并改用 Node 构建中的 ICU 数据计算所有时区偏移。这样可以确保每周在华沙当地时间 10:00 举行的会议,在 3 月时钟调整后仍保持当地时间 10:00。

免费版与 Pro 版

免费版Pro(一次性支付 $19)
保留的日历数量2无限
每次查询的时间范围最长 31 天任意范围
超过较长时间范围的 conflicts返回前 31 天的结果,并注明上限任意范围
每次导出的事件数量50无限
从 URL 或 webcal 订阅源导入--支持
其他所有功能完整完整

获取 Pro,也可支付 $39 一次性购买套件中的所有服务,终身使用。

隐私

所有内容都在本地处理。导入的日历文件会复制到 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/calendar/,并从该目录读取;删除该目录即可重置服务。 整个服务中只有一次网络调用,且仅在你自行传入 url 时发生:服务会获取该地址一次,超时时间为 12 秒,文件大小上限为 5 MB,并拒绝访问回环、私有和云元数据地址。不会上传任何内容,不会关联任何账户,许可证密钥也会离线验证。

搭配使用

  • mcp-timezone,本服务会从中读取时区和 .ics 引擎:转换会议时间、查找跨国家/地区的空档、编写邀请。
  • mcp-time-tracker,event_to_time_entry 会将已完成的会议交给它;它会跟踪并报告时长。
  • mcp-invoice,将跟踪的时长转换为带编号的发票。
  • office-suite,一次安装即可使用多个服务,只需一项配置。

常见问题

不会。没有 OAuth、没有令牌,也不会同步。你可以导出文件(或在 Pro 版中粘贴公开订阅源 URL),然后在本地读取。这也意味着导入的内容是一个快照:日历有更新后,请重新导入。

是的,这也是大部分代码所处理的内容。每周重复的系列会按墙上时钟时间展开,因此华沙时间 10:00 的会议在夏令时切换后仍是 10:00,而不会漂移到 11:00。每月 31 日的事件在 2 月会跳过,而不会顺延到 3 月;UNTIL 会包含恰好落在该日期的事件;单个已移动的实例会替换原事件。

不会:RFC 5545 规定,全天事件的 DTEND 是排他的,因此 6 月 1 日至 3 日表示 1 日和 2 日。本服务遵循该规范,你的日历应用也是如此。

它会通过 event_export 写入 .ics 文件,你可以在任何地方导入这些文件。它绝不会修改读取过的日历。

5 MB,可容纳数千个事件。如果完整历史记录超过此大小,请导出较窄的日期范围。

将这些文档用作 MCP 服务

任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此代码库的文档,无需安装:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。