日历事件管理工具

通过原生EventKit API提供对Apple日历的全面支持,特别优化了重复事件的处理。

  • by EgorKurito
  • Swift
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 EgorKurito/apple-calendar-mcp

使用说明

苹果日历mcp

通过本地EventKit API为Apple Calendar提供MCP服务器,并提供适当的重复事件支持。

为什么存在

基于AppleScript的日历集成无法正确展开重复事件——它们返回的是主事件,而不是单个事件。该项目使用苹果的原生EventKit框架 predicateForEvents,它正确地将重复事件扩展为日期范围内的单个事件。

建筑

Claude Code ──stdio JSON-RPC──▶ TypeScript MCP Server ──execa──▶ Swift CLI (apple-bridge) ──EventKit──▶ macOS Calendar
  • TypeScript层 --配备6个工具的MCP服务器、Zod验证、基于stdio的JSON-RPC
  • Swift层 --使用EventKit的CLI二进制文件,返回JSON信封 {status, data, error}

先决条件

  • macOS 13+(Ventura或更高版本)
  • Swift 5.9+(Xcode 15+附带)
  • Node.js 20+

安装

选项1:npm(推荐)

claude mcp add --scope user apple-calendar -- npx apple-calendar-mcp

这将自动下载包,编译Swift桥,并注册MCP服务器。需要安装了Xcode或Swift工具链的macOS。

安装后,授予日历访问权限:

npx apple-calendar-mcp doctor

授予 完全访问权限 当提示时。如果之前拒绝访问:

tccutil reset Calendar
npx apple-calendar-mcp doctor

选项2:来源

git clone https://github.com/EgorKurito/apple-calendar-mcp.git
cd apple-calendar-mcp
./scripts/build.sh

授予日历访问权限:

swift/.build/release/apple-bridge doctor

使用以下方法之一连接到Claude Code:

项目级别 .mcp.json

复制 .mcp.json.example 到 .mcp.json 在您的项目和更新路径中:

{
  "mcpServers": {
    "apple-calendar": {
      "command": "node",
      "args": ["/path/to/apple-calendar-mcp/build/index.js"],
      "env": {
        "APPLE_BRIDGE_BIN": "/path/to/apple-calendar-mcp/swift/.build/release/apple-bridge"
      }
    }
  }
}

用户级CLI注册

claude mcp add --scope user apple-calendar \
  node /path/to/apple-calendar-mcp/build/index.js \
  -e APPLE_BRIDGE_BIN=/path/to/apple-calendar-mcp/swift/.build/release/apple-bridge

MCP工具

工具 说明
get_calendars 列出所有日历及其ID和颜色
get_events 获取日期范围内的事件(正确展开重复事件)
get_today_events 获取今天的所有活动
search_events 按标题、位置或注释搜索事件
create_event 创建新的日历事件
delete_event 删除事件(单个事件或所有未来事件)

验证

# Check system diagnostics
swift/.build/release/apple-bridge doctor

# List calendars
swift/.build/release/apple-bridge calendars

# Today's events
swift/.build/release/apple-bridge today

# Events in a date range (recurring events expanded)
swift/.build/release/apple-bridge events --start "2026-02-01T00:00:00Z" --end "2026-02-28T23:59:59Z"

故障排除

日历访问被拒绝 重置TCC权限并重新运行:

tccutil reset Calendar
swift/.build/release/apple-bridge doctor

重复发生的事件没有扩大 这正是该项目所要解决的问题。确保您正在使用MCP工具(使用 predicateForEvents)而不是基于AppleScript的替代方案。

ISO 8601解析错误 Swift二进制文件需要格式为的日期 2026-02-07T10:00:00Z 或 2026-02-07T10:00:00.000Z.

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 跑 ./scripts/build.sh 验证构建
  5. 提交拉取请求

许可证

麻省理工学院