Skip to main content
Glama

Apple Reminders MCP

一个本地 stdio MCP 服务器,可为模型提供对 macOS Reminders 的受控读写访问:列表、提醒、日期、重复、提前提醒、优先级、旗标、备注和 URL。

仅支持 macOS。基于 macOS 27 使用 Swift 6.4 构建。

安装

以扩展包形式安装(推荐)

npm install && npm run package:mcpb

那样会生成 apple-reminders-mcp.mcpb。打开它,或者像 apple-calendar-mcp.mcpbapple-mail-mcp.mcpb 那样,把它拖入 Claude Desktop 的扩展面板。

从源码安装

npm install && npm run build

然后向你的 MCP 客户端注册:

{
  "mcpServers": {
    "apple-reminders": {
      "command": "node",
      "args": ["/absolute/path/to/apple-reminders-mcp/dist/index.js"]
    }
  }
}

Swift 辅助程序特意使用自己的身份进行代码签名。ad-hoc 身份会使其成为独立的 TCC 主体,从而破坏 EventKit 访问继承(已验证:签名后 requestFullAccessToReminders 会返回 false)。不签名时,它会继承 MCP 客户端的权限。

首次使用你的 MCP 客户端需要:

  • Reminders 访问权限(系统设置 → 隐私与安全性 → Reminders)——所有功能都需要。

  • 自动化 → Reminders 访问权限——仅在使用旗标时需要。

Related MCP server: Apple Reminders MCP Server

工具

每个工具都有一个采用 Reminders 自身术语的显示名称,这就是客户端显示的名称,而不是原始的函数名。

显示为

工具

执行的操作

显示列表

list_lists

每个列表及其 id、名称、颜色、可写性以及是否是默认列表

新建列表

create_list

新建列表,可选十六进制颜色

编辑列表

update_list

重命名列表和/或更改其颜色

删除列表

delete_list

删除一个列表以及其中的每条提醒——需要 confirm: true

查找提醒

list_reminders

按列表、完成状态、到期时间范围、文字筛选;limit 并带 truncated 标志

打开提醒

get_reminder

查看一条提醒的完整详情

新建提醒

create_reminder

使用任意受支持的字段进行创建

编辑提醒

update_reminder

对任意字段进行补丁修改,包括通过 completed 勾选完成

移动列表

move_reminder

将提醒移到另一个列表

删除提醒

delete_reminder

删除一条提醒

另外还暴露了 reminders://listsreminders://capabilities 资源,以及一个 triage_reminders prompt。

字段映射

Reminders 应用的详情面板如何映射到此服务器:

Reminders 应用

字段

说明

标题

title

备注

notes

传入 "" 清除

URL

url

传入 "" 清除

日期 / 时间

due, allDay

YYYY-MM-DD → 全天;ISO 日期时间 → 有具体时间;传入 "" 清除

重复

recurrence

不带 RRULE: 前缀的 iCal RRULE

结束重复

recurrence

RRULE 的 UNTIL=COUNT=

提前提醒

earlyReminderMinutes

截止时间前多少分钟;传入 null 清除

列表

list / move_reminder

旗标

flagged

由 AppleScript 支撑,很慢——见下文

优先级

priority

none | low | medium | high

完成复选框

completed

标签

不支持,见下文

紧急

不支持,见下文

每个提醒都会同时返回 due(UTC,或全天时返回 YYYY-MM-DD)和 dueLocal. 告知用户某个事项的截止时间时,请使用 dueLocal

勾选一条重复提醒

勾选一条重复提醒会跳到下一次提醒,而不是标记完成——这与 Reminders 应用的做法相同。响应会返回 completed: false,且截止日期也更晚。若要结束重复序列,请先清除 recurrence,或删除该提醒。

哪些内容不受支持,以及原因

在 macOS 27 上,Reminders 界面中有两个字段背后没有对应的 API。这一结论经实测证实,并非猜测。

标签。EKReminderEKCalendarItem 不暴露任何标签属性(通过 Objective-C 运行时转储验证:class_copyPropertyList 不会返回任何类标签形状的成员,respondsToSelector:tagshashtags 都返回 false)。Reminders 的 AppleScript 词典中也没有 tags 术语——它的 reminder 类只暴露 name、id、container、创建/修改日期、body、title、complete、completion date、due date、allday due date、priority 和 flagged。把 #tag 写进标题并不能创建标签:一条通过 EventKit 创建、标题为 zzz mcp probe #zzmcpprobe 的提醒,在 Reminders 中只会原样渲染为纯文本,并没有附带任何标签。标签位于 Reminders group 容器中,这个容器受 TCC 保护,且直接对其进行不安全的写入(它是一个已启用的 Core 数据存储)。

urgent 紧急字段。 出现在 Reminders UI 中的“紧急”开关(Mark this reminder as urgent to set an alert)并不存在于 EventKit 或 AppleScript 词典中。在界面中切换它,不会产生此服务器可读取或写入的任何属性。

如果你需要其中任意一个字段,只能手动在 Reminders 应用中完成。

旗标很慢

flagged 是唯一的不能由 EventKit 访问的字段,所以它通过 Reminders.app 的 AppleScript 桥接来访问。这个桥接很慢,而且会随着列表变大而变慢——在本机界面上测得:小列表约 1 秒,按 id 全局查找约 15 秒,包含数百条提醒的列表约 30 秒。

因此旗标状态是可选的(opt-in)

  • 读出时除非你传 includeFlagged: true,否则忽略它;否则 flagged 的返回 null(表示“未读”,而不是“未标记”)。

  • 写入仅在真正发送 flagged 时才会花费成本。

如果你的列表非常大,可以在需要时调大 APPLE_REMINDERS_MCP_TIMEOUT_MS(默认 120000)。

安全

  • 拒绝写入只读列表。

  • APPLE_REMINDERS_MCP_ALLOW_LISTS——逗号分隔的列表名称或 id。若设置,写入被限制在这些列表内。

  • delete_list 需要 confirm: true,因为它会销毁列表中的每条提醒。

  • 破坏性工具的注解。

验证

npm run verify

那样会先构建、运行辅助程序的自我测试(RRULE 往返转换、优先级映射、日期组件、id 类型转换、输入拒绝),然后运行一个端到端冒烟测试:通过 stdio 驱动真实的 MCP 服务器,对临时列表进行读写。

冒烟测试覆盖全部 10 个工具,共 27 个断言,包括确保每个工具都声明了可用的 JSON 输入 schema。如果不想跑慢的旗标检查,可以设置 SMOKE_SKIP_FLAGS=1

目录结构

helper/EventKitReminders.swift   EventKit + AppleScript, JSON in on stdin, JSON out on stdout
src/helper.ts                    spawns the helper, one process per call
src/index.ts                     MCP tools, zod schemas, model-facing instructions
icon.png                         256x256 bundle icon
scripts/make-icon.swift          redraws icon.png; geometry and colours are
                                 measured from the Reminders app icon, drawn in
                                 CoreGraphics rather than copied as an asset
scripts/build-helper.sh          swiftc build (intentionally unsigned)
scripts/helper-self-test.mjs     pure-logic self-tests, touches no real data
scripts/smoke.mjs                end-to-end test over stdio JSON-RPC
scripts/package.mjs              builds apple-reminders-mcp.mcpb
scripts/package-check.mjs        asserts the bundle has the runtime files, an
                                 executable helper, and no dev artifacts
A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP connector for Apple Reminders — search, create, complete, and edit via your own Mac.

  • Manage your family's calendars and lists in Cozi. View, create, and update appointments; organize…

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/augustoFranke/apple-reminders-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server