# Show HN: Apple Reminders MCP – native read/write via ReminderKit

> Source: <https://github.com/xiaofeng-han/apple-reminders-mcp>
> Published: 2026-10-20 19:18:32+00:00

I wanted coding agents (Claude Code, Codex, etc.) to manage my Reminders, but the existing MCP servers go through AppleScript or EventKit. Neither exposes tags, subtasks, sections, smart lists, Urgent, list groups or shared-list assignment, so tools either skip them or store "#tags" and subtasks as text in the notes field, which doesn't show up as such on your iPhone.

This server writes through ReminderKit, the private framework Reminders.app itself uses. Everything is native and syncs via iCloud through remindd as usual. It covers tags, subtasks, sections, groups, colors/icons, pinning, grocery lists, templates, smart lists (create/edit filters), Urgent, location and getting-in/out-of-car alerts, "when messaging a person", and assignment in shared lists.

A few implementation details that might be interesting:

- Permissions: macOS attributes a child process's TCC permissions to its "responsible process". Claude Code/Desktop have no Reminders usage description, so anything they spawn is silently denied. The binary disclaims responsibility at startup and relaunches itself under its own identity, piping stdin/stdout through, so Reminders permission is granted once to the app regardless of the host.

- Version-checked writes: updates and deletes must pass a `version` (a hash of visible fields) from the last read. If you edited the reminder on your phone in between, the write is refused instead of clobbering it.

- Recently Deleted: ReminderKit can restore by id but can't list deleted items or tell you the original list, so the server keeps a 31-day local record on delete. With optional Full Disk Access it reads the Reminders DB read-only to list everything in Recently Deleted.

Limits: it uses a private framework, so a macOS update could break it; requires macOS 26+, Apple silicon builds only, and the pkg isn't Developer ID-signed. It can't invite people to shared lists, can't read a reminder's manual order, and passes through smart-list conditions it doesn't understand without editing them. Subtasks are one level deep. No third-party dependencies; 121 end-to-end checks run against throwaway lists.

Comments URL: [https://news.ycombinator.com/item?id=50171321](https://news.ycombinator.com/item?id=50171321)

Points: 1

# Comments: 0
