关于 Apple Calendar
Apple Calendar MCP 通过 EventKit 将 macOS 日历中的日程连接到 Claude 和其他 MCP 客户端。工具涵盖搜索、排程、提醒事项及可撤销的更改;删除和修改共享日程前会请求确认。
主要功能
- 01跨日历搜索和查看日程
- 02查找空闲时间与冲突
- 03创建日程并批量更新
- 04更改前确认并支持撤销
- 05可选提醒事项工具与日历技能
适用场景
- 01跨账户寻找会议空档
- 02规划一周的专注时段
- 03检查或清理重复日程
- 04同时管理提醒事项与日程
MCP 相关
MCP 服务提供日历及可选提醒事项工具、作为提示词提供的技能,以及 today/upcoming 资源。它支持 stdio 和 HTTP 模式,供 MCP 客户端连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Apple Calendar MCP
让 Claude 读取、搜索和安排你的 Apple Calendar:快速、本地运行,未经你同意,不会删除任何内容,也不会向他人发送任何内容。
Apple Calendar MCP 是一款用于 Mac 上 Calendar 应用的 MCP 服务,并配有一款小巧的菜单栏应用。Claude(Claude Code、Claude 应用或任何 MCP 客户端)可以查看你的一天、搜索多年的日程、在所有日历中查找空闲时间、规划专注时段、准备会议,以及添加或移动日程;只有在你点击确定后,它才能删除日程,或更改邀请了其他人的日程。
它是 Apple Mail MCP 的配套项目,构建方式相同。



适用于任何日历账户,随时供 AI 使用
Apple Calendar MCP 适用于所有可以添加到 Calendar 的日历:iCloud、Google、Microsoft 365 和 Exchange、Yahoo、Fastmail、任何 CalDAV 服务、订阅日历(节假日、体育赛事、团队日程)、生日, 以及仅存储在 Mac 上的日历。
你的服务提供商不需要 API、开发者账户,也不需要支持 MCP。像平常一样在 Calendar › 设置 › 账户中添加账户;Calendar 同步完成后,每个工具都能与它配合使用,也可与其他日历并行使用。你的密码由 macOS 保管:此应用不会查看密码,也不会连接到你的服务提供商。
为什么还要开发另一款日历服务?
大多数日历服务通过 AppleScript 操作 Calendar。Calendar 随后会逐个遍历事件,因此搜索日程繁忙的一年需要几秒钟,甚至会超时;重复事件也会返回错误,而 Calendar 在此期间无法处理其他事情。
Apple Calendar MCP 使用 EventKit,也就是 Calendar 本身所基于的框架。读取操作通过数据库查询完成,几毫秒内即可返回;重复事件的展开方式与 Calendar 中显示的完全一致,而且 Calendar 无需运行。
- 快速:几毫秒内即可从所有账户同时获取一天、一周或一年的事件。
- 了解你一周安排的空闲时间:工作时间、会议间隔缓冲、全天事件和已拒绝的事件,均按 Calendar 的显示方式处理。
- 默认安全:删除前会先询问;修改他人受邀参加的事件前也会先询问;每项更改都可以撤销;每个日历都由你设置:Claude 可以修改、只能读取,或完全不可见。
- 多项更改,一次确认:一周的专注时段或一个下午的重新排期,只需一次调用、一次确认和一次撤销。
- 也支持提醒事项:获得 Reminders 访问权限后,Claude 可以列出、添加和勾选完成提醒事项,日程也会显示即将到期的事项。
- 一项权限(启用 Reminders 时为两项):只需向菜单栏应用授权一次。无需完全磁盘访问权限,也无需自动化权限。
- 无需密码,不上云:所有内容都保留在你的 Mac 上。
安装
Homebrew:
brew install --cask mp-consulting/tap/apple-calendar-mcp
或者下载应用或 Claude 扩展,前往最新版本:
| 文件 | 用途 |
|---|---|
AppleCalendarMCP-x.y.z.dmg | 内置服务的菜单栏应用:可访问 Calendar、审批、活动记录、技能和一键设置。必需。 |
AppleCalendarMCP-x.y.z.mcpb | 仅适用于 Claude 应用:双击即可将服务安装为 Claude 扩展。访问 Calendar 仍需使用上方的应用。 |
两者均经过公证并使用 Developer ID 签名,可在 Apple 芯片和 Intel Mac(macOS 14+)上运行。该服务也已列入 MCP registry,名称为 io.github.mp-consulting/apple-calendar-mcp。
然后:
- 打开 Apple Calendar MCP:菜单栏中会出现日历图标。
- 点击 Allow Calendar Access,并在 macOS 提示中选择 Allow Full Access。
- 打开 Claude 标签页,点击 Claude Code 和/或 Claude 应用旁的 Connect。
权限
macOS 会将日历访问权限授予启动进程的应用。Claude、终端或编辑器会启动服务,但无法代替服务获得 Calendar 访问权限。因此,菜单栏应用持有 Calendars 权限,服务通过它经由你专属的支持文件夹中的套接字访问日历。双方都会检查对方的代码签名:应用只响应本项目的服务,服务也只与本项目的应用通信。如果应用尚未运行,服务会在后台将其打开。
| 权限 | 用途 | 位置 |
|---|---|---|
| Apple Calendar MCP 的 Calendars › Full Access | 读取和更改事件 | 应用仅询问一次;System Settings › Privacy & Security › Calendars |
| Reminders › Full Access(可选) | 读取、添加和完成提醒事项 | 在应用的 Settings 标签页启用 Reminders 时询问;System Settings › Privacy & Security › Reminders |
claude.ai 和你的手机
iPhone、Android 和网页上的 Claude 应用可通过自定义连接器访问 Mac 上的 Calendar。菜单栏应用通过 HTTP 和 OAuth 提供 MCP 服务;隧道(例如 cloudflared)会将其发布到你自己的 HTTPS 地址。 在 More settings… › Remote access 中开启:

- 输入隧道发布的公共地址,例如
https://mcp.example.com/me/calendar。多个 服务可以共用一个主机名,各自使用不同路径(例如 Apple Mail MCP 使用/me/mail)。 - 在隧道中将该路径路由到相应端口(默认为 8591)。路由还必须包含发现文档,
OAuth 会将这些文档放在根路径下,并附加该路径;设置中会显示确切的路径模式,例如
^/(\.well-known/[^/]+/)?me/calendar(/.*)?$。 - 设置一个通行码,以批准来自任何位置的连接;或者在菜单栏应用中批准连接。
- 在 claude.ai 中,前往 Settings › Connectors › Add custom connector,并输入连接器 URL(无需客户端 ID 或密钥)。 点击 Connect 会打开登录页面:


连接可以执行 Claude 在 Mac 上可以执行的操作,也可以仅具备读取权限;删除和更改共享事件仍需在菜单栏应用中由你确认。已连接的应用会列出每个应用,点击断开连接后,该连接会在下次请求时结束。 令牌有效期为一小时,并可在 90 天的使用期内刷新;服务只保存令牌的哈希值。详情、隧道设置 和安全模型:docs/remote.md。
Claude 能做什么
| 工具 | 功能 |
|---|---|
agenda | 一次调用查看今天(或接下来几天)的安排:现在和接下来的事项、冲突、剩余空闲时间、待处理邀请和到期提醒 |
list_events | 查看某个时间段内的事件,可选择所有日历或部分日历,并展开重复事件 |
search_events | 按文本、人员、地点、日历、日期、视频通话或状态搜索;也可使用 group_by 按日历、月份、星期或人员统计数量 |
get_event | 查看单个事件的完整信息:备注、参与者及其回复、闹钟、重复规则和视频链接 |
find_free_time | 在所有计入的日历中,查找工作时间内符合指定时长的时段,并考虑缓冲时间;也可按他人所在时区的工作时间查找,或生成可粘贴到消息中的文本 |
find_conflicts | 查找相互重叠且都占用时间的事件 |
find_duplicates | 查找重复录入的事件、应保留的副本,以及可安全删除的副本 |
pending_invitations | 查看尚未回复的邀请 |
respond_to_invitation | 接受、拒绝或回复“暂定”以回应邀请;Calendar 会将回复发送给组织者 |
calendar_statistics | 查看时间都花在了哪里:按日历、星期、小时和人员统计,以及会议负荷和连续会议情况 |
list_calendars | 查看日历及其账户、颜色和是否可修改 |
create_event、update_event、delete_event | 添加、更改、移动或删除事件,可操作单次事件或整个系列,并设置闹钟和重复规则 |
create_events、update_events | 一次调用处理多个事件;任何更改前都会先检查,只需一次确认即可完成全部操作,并可一次撤销全部操作 |
list_reminders、create_reminder、update_reminder、delete_reminders | 管理提醒:查看未完成或已逾期的提醒、添加带截止日期或时间的提醒、勾选完成,或将提醒移至其他列表 |
undo_change | 列出最近的更改并撤销其中一项 |
import_ics、export_events | 从 .ics 文件(从 Mail 保存的邀请)添加事件,或将事件导出为 .ics、CSV 或 JSON:仅包含忙闲信息,或生成可附在邮件中的邀请 |
open_in_calendar | 在 Calendar 中显示某个事件或某一天 |
事件 ID 由 EventKit 生成;重复事件的单次实例 ID 格式为 <id>#<start in Unix seconds>。
EventKit 无法通过 Calendar 邀请他人。请在 Calendar 中邀请,或通过电子邮件邀请:export_events 配合 invite
会生成标准邀请,收件人可接受或拒绝;calendar-invite-by-mail 技能会将其附加到 Mail 中的
草稿里(需搭配 Apple Mail MCP)。你收到的邀请可通过
respond_to_invitation 回复;它使用与 Calendar 相同的(未公开)EventKit 调用。账户会将回复发送给组织者,
并且应用会先征求你的确认。
由你掌控

当 Claude 想要删除事件,或更改其他受邀者也参加的事件时,会弹出一个小窗口,显示将要进行的更改;只有点击 OK 后才会执行操作。
- 删除策略(设置):先询问我(默认)、立即删除或从不删除。
- 共享事件:默认情况下,更改有其他参加者的事件时会先询问,因为他们的日历服务可能会通知他们。
- 撤销:每项更改都可以通过
undo_change还原;整批更改可通过一个 ID 还原。已删除的事件会恢复,但不包含参加者(EventKit 无法再次邀请他们)。 - 每个日历和提醒事项列表(设置):读取和更改、只读(Claude 不会在其中添加、移动、更改或删除任何内容)或隐藏(永不读取、列出或更改)。
- 批量限制:默认情况下,每次更改最多处理 50 个事件。
- 只读模式:
apple-calendar-mcp --read-only仅提供读取工具。 - 活动记录:菜单栏应用会列出每次工具调用(绝不显示事件详情)。
技能
在面板的 Claude 选项卡中选择技能:每个技能都会说明其功能以及是否已安装。
| 技能 | 或者直接询问…… |
|---|---|
/calendar-daily-brief | “我今天的安排是什么?” |
/calendar-scheduler | “下周找一个没有会议的小时,用来进行预算审查。” |
/calendar-focus-time | “这周安排六小时的专注时间,如果可以的话,安排在上午。” |
/calendar-meeting-prep | “帮我准备明天的会议。” |
/calendar-weekly-review | “我这周过得怎么样?下周又有什么安排?” |
/calendar-time-audit | “我这个月的时间都花在哪儿了?” |
/calendar-cleanup | “找出日历中的重复项和冲突并清理它们。” |
/calendar-invite-import | “把这份航班确认信息添加到我的日历。” |
/calendar-invite-by-mail | “邀请 Sam 和 Priya 参加周四的规划会议。” |
这些技能也会作为 MCP 提示词提供(在 Claude Code 中:/mcp__apple-calendar__calendar-daily-brief 等),还有两个资源 calendar://today 和 calendar://upcoming,会在日期变更时通知已订阅的客户端。
命令行
apple-calendar-mcp [--read-only] serve MCP over stdio
apple-calendar-mcp remote [--port N] [--listen ADDR] [--address URL] serve MCP over HTTP with OAuth (claude.ai)
apple-calendar-mcp doctor check the app, the permission and the bridge
apple-calendar-mcp install | uninstall [claude-code | claude-desktop] register with Claude
apple-calendar-mcp skills [list | install | uninstall | export DIR] manage the Claude skills
apple-calendar-mcp call <tool> '{"json": "arguments"}' run one tool
工作原理
claude.ai ──HTTPS──▶ tunnel ──HTTP──▶ apple-calendar-mcp remote (OAuth, run by the app) ──▶ EventKit; approvals over the socket
Claude ──MCP (stdio)──▶ apple-calendar-mcp ──socket (signatures checked)──▶ Apple Calendar MCP.app ──▶ EventKit ──▶ your accounts
menu bar: approvals · activity · settings · Claude setup · updates
- CalendarStore:事件模型、EventKit、桥接层、重复规则、空闲时间、冲突、统计信息和 iCalendar 文件。
- CalendarMCPKit:工具、策略、审批、撤销和技能;CalendarMCPBar 是 SwiftUI 菜单栏应用(macOS 26 上采用 Liquid Glass)。
开发
git clone https://github.com/mp-consulting/apple-calendar-mcp && cd apple-calendar-mcp
# Files under ~/Documents carry Finder metadata that codesign rejects: build outside the repo.
swift test --scratch-path ~/Library/Caches/apple-calendar-mcp-build # tests run on in-memory calendars
Scripts/build-app.sh --install # build, sign, install, launch the app
apple-calendar-mcp --demo 会在内存中提供一个虚构的一周日程,让你可以在不触碰日历的情况下试用工具。截图由应用通过 --demo --approval 3 --snapshot DIR 生成。
测试绝不会触碰你的日历:它们在 MemoryBackend 上运行,该后端遵循 EventKit 对重复事件和只读日历的规则。应用需要 Xcode 26(Swift 6.2);服务可使用 Swift 6.1 构建。
许可证
MIT © 2026 Mickael Palma。与 Apple 无关。Apple Calendar 是 Apple Inc. 的商标。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。