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.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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…
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
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.539-
- 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.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP 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.138 npm4MIT