日历数据服务

通过EventKit助手应用提供Apple日历数据的本地MCP服务器。

  • by atfinke
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 atfinke/calendar-mcp

使用说明

日历mcp

本地MCP服务器,通过 EventKit 助手应用程序。

完全由OpenAI GPT-5.4通过Codex构建。

安装

git clone https://github.com/<your-account>/calendar-mcp.git
cd calendar-mcp
./bootstrap.sh

跑

npm run start

权限

跑 calendar_permissions 曾经与 prompt: true 和 access: "full".

助手应用程序旨在使用项目的正常代码签名构建,以便macOS可以将日历访问归因于稳定的应用程序身份。

如果Codex内部没有出现提示,请直接启动助手应用程序一次:

open CalendarMCPHelperApp/build/Build/Products/Release/CalendarMCPHelperApp.app

直接打开时,应用程序将请求日历访问并显示状态警报。在初始授权之后,MCP工具可以正常读写事件。

删除安全是有意缩小的:每个 calendar_delete_event 调用只能删除一个已解析的目标。重复删除支持一次或一个完整系列,但不支持 futureEvents 或任何批量删除形状。

calendar_update_event 就地更新事件,而不是强制删除并重新创建流。省略的字段保持不变。要清除可空字段,请传递以下命令之一 clearLocation, clearNotes, clearUrl,或 clearTimeZone.

日期输入

所有工具日期输入都接受以下线格式:

  • 2026-04-02 当地日历日
  • 2026-04-02T09:30 或 2026-04-02T09:30:00 当地挂钟时间
  • 2026-04-02T09:30:00-05:00 或 2026-04-02T14:30:00Z 就在一瞬间

仅本地日期和本地日期时间输入在助手应用程序的当前macOS时区中进行解释。返回的事件有效载荷总是使用带有时区偏移的ISO-8601时间戳。

calendar_list_events 款待 start 和 end 作为解析这些输入后的确切时间窗口。

occurrenceDate 对于重复事件,也接受查找 YYYY-MM-DD在这种情况下,助手将按当地日历日匹配事件。当你已经有了 occurrenceDate 从之前的工具响应中获取时间戳,更喜欢传递回确切的时间戳。

MCP配置

{
  "mcpServers": {
    "calendar": {
      "command": "node",
      "args": ["/absolute/path/to/calendar-mcp/dist/index.js"],
      "env": {
        "CALENDAR_MCP_HELPER_APP_PATH": "/absolute/path/to/calendar-mcp/CalendarMCPHelperApp/build/Build/Products/Release/CalendarMCPHelperApp.app"
      }
    }
  }
}

验证

npm run verify