Enables comprehensive management of Apple Reminders with full CRUD operations, recurring reminders, location-based triggers, multiple alarms, search functionality, and date-based queries through native EventKit integration on macOS.
Apple Reminders MCP Server v0.2.0
A comprehensive Model Context Protocol (MCP) server for Apple Reminders on macOS, enabling AI assistants like Claude and Cursor AI to manage reminders using natural language.
š What's New in v0.2.0
ā Full CRUD operations (create, read, update, delete)
ā Recurring reminders (daily, weekly, monthly, yearly patterns)
ā Location-based reminders (geofence triggers for arriving/leaving)
ā Multiple alarms per reminder (absolute & relative)
ā Search functionality (text search in title and notes)
ā Date-based queries (today, overdue, completed)
ā 12 MCP tools (up from 3 in v0.1.0)
Features
⨠Comprehensive Integration
Full CRUD on reminders (create, read, update, delete, complete)
Search and filter reminders
Date-based queries (today, overdue, completed)
~70% feature coverage of Apple Reminders
š Powered by EventKit + Swift
Native EventKit integration for best performance
ā Recurring reminders (daily, weekly, monthly, custom)
ā Location-based reminders (arrive/depart triggers)
ā Multiple alarms per reminder
ā Tag workarounds (encoded in notes)
š Privacy First
All operations happen locally on your Mac
No cloud services or external APIs
Respects macOS permission system
Prerequisites
macOS 13.0+ (Ventura or later)
Node.js 18+
Swift 5.9+ (Xcode Command Line Tools)
Quick Start
1. Install & Build
2. Request Permissions
Grant permission in System Settings > Privacy & Security > Reminders.
3. Configure Your AI Assistant
For Claude Desktop
Edit ~/.config/claude/claude_desktop_config.json:
For Cursor AI
Edit your Cursor MCP settings to add this server with the same configuration.
4. Restart Your AI Assistant
Restart Claude Desktop or Cursor to load the MCP server.
Available Tools (12 Total)
Reminder Management (6 tools)
create_reminder- Create reminders with comprehensive attributesBasic: title, notes, due date, priority, tags, URL
Advanced: recurring patterns, location triggers, multiple alarms
update_reminder- Update existing remindersdelete_reminder- Permanently delete reminderscomplete_reminder- Mark reminder as completeuncomplete_reminder- Mark reminder as incompleteget_reminders- List all reminders (filter by completion)
List Management (1 tool)
get_all_lists- Get all reminder lists
Search & Query (5 tools)
search_reminders- Search by text in title/notesget_todays_reminders- Get reminders due todayget_overdue_reminders- Get past-due remindersget_completed_reminders- Get completed reminders (optional date range)
Usage Examples
Basic Reminders
Recurring Reminders
Location-Based Reminders
Search & Filters
Advanced Features
Architecture
Why EventKit + Swift?
This project uses Apple's EventKit framework via a Swift CLI, rather than the simpler JXA (JavaScript for Automation) approach. Here's why:
JXA Limitations (POC tested and documented):
ā No support for recurring reminders (daily, weekly, monthly patterns)
ā No support for location-based reminders (geofencing)
ā No access to tags (would require text workarounds)
ā No support for subtasks (not exposed in API)
ā Multiple alarms not accessible
ā JXA is essentially abandoned by Apple (no updates since 2014)
EventKit Advantages:
ā Full access to 70%+ of Reminders features via official Apple API
ā Native support for recurring reminders with complex rules
ā Native support for location triggers (arrive/depart)
ā Native support for multiple alarms per reminder
ā Actively maintained by Apple with new macOS releases
ā Better performance and reliability
Trade-off: EventKit requires Swift compilation, but the benefits far outweigh the minimal additional setup complexity. The Swift CLI is built once during installation and provides access to nearly all Reminders features that are publicly available.
Feature Coverage (~70%)
ā Fully Supported
Core Operations: Create, read, update, delete, complete
Recurring Reminders: Daily, weekly, monthly, yearly with custom rules
Location Reminders: Geofence triggers (arriving/leaving)
Multiple Alarms: Absolute (specific time) and relative (before due date)
Search: Text search in title and notes
Date Queries: Today, overdue, completed with date ranges
Lists: Get all lists, specify list for reminders
Priority: 0=none, 1=urgent (!!!), 5=medium, 9=low
Flagged Status: Mark reminders as important (flag icon)
Notes & URLs: Rich text notes, associated URLs
ā ļø Workarounds
Tags: Encoded as
[#tag]in notes field (searchable)Subtasks: Use structured notes or linked reminders
ā ļø API Limitations (Not Yet Available in EventKit)
Urgent Alarms (macOS 26.2+): The new "Urgent" alarm feature is NOT exposed in EventKit API
Workaround: Use
priority: 1+flagged: true+ regular alarmsSee
URGENT_FEATURE_STATUS.mdfor details
Apple has not announced when/if EventKit will support this feature
ā Not Supported (Private Apple APIs)
Native tags feature
Subtasks feature
Smart lists
Development
Project Structure
Development Commands
Building from Source
Testing
Test Swift CLI Directly
Test with MCP Inspector
Advanced Features
Recurring Reminders
Create reminders that repeat on a schedule:
Location-Based Reminders
Trigger reminders based on location:
Multiple Alarms
Add multiple notifications to a reminder:
Troubleshooting
Permission Denied
Run
./swift-cli/.build/release/reminders-cli request-accessGrant permission in System Settings > Privacy & Security > Reminders
Restart your AI assistant
Swift CLI Not Found
Build the Swift CLI:
npm run build:swiftVerify:
ls swift-cli/.build/release/reminders-cli
Tool Not Working
Check Swift CLI directly with test JSON
Check MCP server logs in your AI assistant
Use MCP Inspector for isolated debugging
Roadmap
ā Completed
Full CRUD operations
Search and filters
Date-based queries
Recurring reminders
Location-based reminders
Multiple alarms
š Future Enhancements
List management (create, update, delete lists)
Batch operations
Rich error messages with suggestions
Performance optimization
Pre-compiled binaries for distribution
npm package publication
Contributing
This is a learning project. Contributions, issues, and feature requests are welcome!
License
MIT
References
Built with ā¤ļø for the MCP ecosystem
Version 0.2.0 | Updated January 2026