apple-reminders-mcp-server
Provides comprehensive integration with Apple Reminders, enabling management of reminders, lists, accounts, and real-time access to the macOS Reminders app.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@apple-reminders-mcp-servercreate a reminder to buy groceries tomorrow at 5pm"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apple Reminders MCP Server
A Model Context Protocol (MCP) server that provides comprehensive integration with Apple Reminders. Built for use with Claude Desktop, Claude Code, and Claude.ai.
Features
✅ 18 Comprehensive Tools - Full CRUD operations for reminders and lists
🗣️ Natural Language Dates - Use "tomorrow at 3pm", "next Monday", "in 3 days"
🔍 Advanced Search - Filter by completion, priority, flags, text, and more
📊 Statistics & Insights - Get overdue reminders, today's tasks, and analytics
🎨 List Customization - Set colors and emblems for reminder lists
🔌 Dual Transport - Works with both stdio (local) and HTTP (remote) connections
⚡ Real-time - Direct integration with your macOS Reminders app
Related MCP server: MCP Apple Reminders
Installation
Prerequisites
macOS (Apple Reminders is macOS-only)
Node.js 18.0.0 or higher
npm or yarn
Quick Install
# Clone the repository
git clone https://github.com/yourusername/apple-reminders-mcp-server
cd apple-reminders-mcp-server
# Install dependencies
npm install
# Start the server
npm startThe server will start on http://localhost:3001 by default.
Configuration
For Claude Desktop/Code (stdio mode)
Add to your Claude Desktop or Claude Code configuration file:
Location: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"apple-reminders": {
"command": "npx",
"args": ["tsx", "/Users/yourusername/Projects/mcp/apple-reminders-mcp-server/src/index.ts"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}For Claude.ai (HTTP mode)
Start the server:
npm startIn Claude.ai settings, add a new MCP connector:
URL:
http://localhost:3001/mcpThe server includes a health check at
http://localhost:3001/health
Available Tools
Reminder Operations
Tool | Description |
| Create a new reminder with natural language dates |
| Get reminder details by ID |
| Update reminder properties |
| Delete a reminder |
| Mark reminder as complete/incomplete |
| Move reminder to a different list |
Search & Query
Tool | Description |
| List reminders with filters (completion, priority, etc.) |
| Search reminders by text |
| Get all overdue reminders |
| Get reminders due today |
List Management
Tool | Description |
| Get all reminder lists |
| Get specific list details |
| Create a new list with color/emblem |
| Update list properties |
| Delete a list |
Utility
Tool | Description |
| List all accounts (typically iCloud) |
| Get statistics and analytics |
| Open a reminder in the Reminders app |
Usage Examples
Creating Reminders
// Simple reminder
{
"name": "Call mom"
}
// With natural language due date
{
"name": "Submit report",
"dueDate": "tomorrow at 5pm",
"priority": "high",
"listName": "Work"
}
// With all details
{
"name": "Doctor appointment",
"body": "Annual checkup at Main Street clinic",
"dueDate": "next Monday at 2pm",
"remindMeDate": "Monday at 1:30pm",
"priority": "high",
"flagged": true,
"listName": "Personal"
}Searching Reminders
// Find all incomplete tasks
{
"completed": false
}
// Search for specific text
{
"query": "meeting",
"listName": "Work"
}
// Filter by priority
{
"priority": 1, // High priority
"flagged": true
}Managing Lists
// Create a new list with styling
{
"name": "Q1 Goals",
"color": "#30D33B",
"emblem": "education1"
}Natural Language Date Examples
The server supports natural language date parsing via chrono-node:
"tomorrow" → Tomorrow at 00:00
"tomorrow at 3pm" → Tomorrow at 15:00
"next Monday" → Next Monday at 00:00
"in 3 days" → 3 days from now
"January 15" → January 15 of current/next year
"2025-01-15" → ISO date format also supported
Known Limitations
Due to AppleScript API limitations, the following features are not supported:
❌ Subtasks - Nested/indented reminders are not accessible via AppleScript
❌ Tags - Hashtags/tags are not accessible via AppleScript
❌ Attachments - Images and file attachments are not accessible
❌ Nested Lists - All lists are flat (no folders)
Development
Running in Development Mode
npm run devWatch Mode (auto-reload on changes)
npm run watchEnvironment Variables
TRANSPORT- Set tostdioorhttp(default:http)PORT- HTTP server port (default:3001)DEBUG- Enable debug loggingVERBOSE- Enable verbose logging
Technical Details
Architecture
Language: TypeScript (run via tsx)
MCP SDK: @modelcontextprotocol/sdk v1.0.0
Date Parsing: chrono-node v2.7.0
Validation: Zod v3.25.0
HTTP Server: Express v4.18.2
Why tsx instead of compiled JavaScript?
This project uses tsx to run TypeScript directly rather than pre-compiling to JavaScript. This approach:
Avoids memory issues with complex Zod schema types during TypeScript compilation
Provides faster development iteration
Maintains full TypeScript type safety
Simplifies the build process
File Structure
apple-reminders-mcp-server/
├── src/
│ ├── index.ts # Server entry point
│ ├── types.ts # TypeScript interfaces
│ ├── services/
│ │ ├── applescript.ts # AppleScript execution
│ │ ├── dateUtils.ts # Date parsing utilities
│ │ └── reminders.ts # Reminders business logic
│ ├── schemas/
│ │ └── index.ts # Zod validation schemas
│ └── tools/
│ └── index.ts # MCP tool registrations
├── package.json
├── tsconfig.json
└── README.mdTroubleshooting
Server won't start
Ensure Node.js 18+ is installed:
node --versionCheck if port 3001 is available:
lsof -i :3001Verify dependencies are installed:
npm install
Reminders app not responding
Ensure Reminders app has necessary permissions in System Settings > Privacy & Security
Try manually opening Reminders app first
Check Console.app for AppleScript errors
Natural language dates not working
Ensure
chrono-nodeis installed:npm list chrono-nodeCheck the date format - some complex natural language may not parse
Fall back to ISO format if needed:
"2025-01-15T15:00:00"
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Author
Matthew Grimes
Acknowledgments
Built on the Model Context Protocol
Inspired by the Apple Mail MCP Server
Uses chrono-node for natural language date parsing
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP connector for Apple Reminders — search, create, complete, and edit via your own Mac.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Model Context Protocol server for todo.vu task management and time tracking.
Related MCP Servers
- FlicenseCqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Apple Reminders on macOS, allowing users to view lists, retrieve, create, complete, and delete reminders through natural language.536-
- AlicenseNot gradedqualityCmaintenanceA macOS-only MCP server that exposes Apple Reminders to AI clients, enabling create, read, update, delete, search, and organization of reminders and lists through natural language.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Apple Reminders, enabling management of reminders and lists via tools like add, edit, complete, and delete reminders.MIT
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server that integrates Apple Reminders with Claude Desktop, enabling comprehensive task management and reminders directly through conversations with Claude.89 npm4MIT