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 "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mggrim/apple-reminders-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server