
Apple Reminders
STDIOMCP server for native integration with Apple Reminders on macOS
MCP server for native integration with Apple Reminders on macOS
English | 简体中文
A Model Context Protocol (MCP) server that provides native integration with Apple Reminders on macOS. This server allows you to interact with Apple Reminders through a standardized interface with comprehensive management capabilities.
Install globally via npm:
npm install -g mcp-server-apple-reminders
{ "mcpServers": { "apple-reminders": { "command": "mcp-server-apple-reminders", "args": [] } } }
stdio
apple-reminders
mcp-server-apple-reminders
You need to configure Claude Desktop to recognize the Apple Reminders MCP server. There are two ways to access the configuration:
claude_desktop_config.json
For macOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
For Windows:
code %APPDATA%\Claude\claude_desktop_config.json
Add the following configuration to your claude_desktop_config.json
:
{ "mcpServers": { "apple-reminders": { "command": "mcp-server-apple-reminders", "args": [] } } }
For the changes to take effect:
Once configured, you can ask Claude to interact with your Apple Reminders. Here are some example prompts:
Create a reminder to "Buy groceries" for tomorrow at 5 PM.
Add a reminder to "Call mom" with a note "Ask about weekend plans".
Create a reminder in my "Work" list to "Submit report" due next Friday.
Update the reminder "Buy groceries" with a new title "Buy organic groceries".
Update "Call mom" reminder to be due today at 6 PM.
Update the reminder "Submit report" and mark it as completed.
Change the notes on "Buy groceries" to "Don't forget milk and eggs".
Show me all my reminders.
List all reminders in my "Shopping" list.
Show my completed reminders.
Show all my reminder lists.
Show reminders from my "Work" list.
The server will:
This server provides two unified MCP tools for comprehensive Apple Reminders management:
Tool Name: reminders
A comprehensive tool for managing Apple Reminders with action-based operations. Supports all reminder operations through a single unified interface.
Actions: list
, create
, update
, delete
, move
, organize
List Action (action: "list"
):
list
(optional): Name of the reminder list to showshowCompleted
(optional): Include completed reminders (default: false)search
(optional): Search term to filter reminders by title or contentdueWithin
(optional): Filter by due date range ("today", "tomorrow", "this-week", "overdue", "no-date")Create Action (action: "create"
):
title
(required): Title of the reminderdueDate
(optional): Due date in format 'YYYY-MM-DD' or 'YYYY-MM-DD HH:mm:ss'list
(optional): Name of the reminders list to add tonote
(optional): Note text to attach to the reminderurl
(optional): URL to associate with the reminderUpdate Action (action: "update"
):
title
(required): Current title of the reminder to updatenewTitle
(optional): New title for the reminderdueDate
(optional): New due date in format 'YYYY-MM-DD' or 'YYYY-MM-DD HH:mm:ss'note
(optional): New note textcompleted
(optional): Mark reminder as completed/uncompletedlist
(optional): Name of the list containing the reminderurl
(optional): New URL to attach to the reminderDelete Action (action: "delete"
):
title
(required): Title of the reminder to deletelist
(optional): Name of the list containing the reminderMove Action (action: "move"
):
title
(required): Title of the reminder to movefromList
(optional): Source list nametoList
(required): Destination list nameOrganize Action (action: "organize"
):
strategy
(required): Organization strategy ("priority", "due_date", "category", "completion_status")sourceList
(optional): Source list to organize fromcreateLists
(optional): Create new lists automatically (default: true){ "action": "create", "title": "Buy groceries", "dueDate": "2024-03-25 18:00:00", "list": "Shopping", "note": "Don't forget milk and eggs", "url": "https://example.com/shopping-list" }
{ "action": "list", "list": "Work", "showCompleted": false, "dueWithin": "today" }
{ "action": "organize", "strategy": "category", "sourceList": "Inbox", "createLists": true }
Tool Name: lists
Manage reminder lists - view existing lists or create new ones for organizing reminders.
Actions: list
, create
List Action (action: "list"
):
Create Action (action: "create"
):
name
(required): Name for new reminder list{ "action": "create", "name": "Project Alpha" }
Success Response:
{ "content": [ { "type": "text", "text": "Successfully created reminder: Buy groceries" } ], "isError": false }
List Response:
{ "reminders": [ { "title": "Buy groceries", "list": "Shopping", "isCompleted": false, "dueDate": "2024-03-25 18:00:00", "notes": "Don't forget milk", "url": null } ], "total": 1, "filter": { "list": "Shopping", "showCompleted": false } }
The server provides intelligent reminder organization capabilities through four built-in strategies:
Automatically categorizes reminders based on priority keywords:
Organizes reminders based on their due dates:
Intelligently categorizes reminders by content analysis:
Simple binary organization:
Organize all reminders by priority:
Organize my reminders by priority
Categorize work-related reminders:
Organize reminders from Work list by category
Sort overdue items:
Organize overdue reminders by due date
MIT
Contributions welcome! Please read the contributing guidelines first.
npm install
npm run build
.
├── src/ # Source code directory
│ ├── index.ts # Main entry point
│ ├── server/ # MCP server implementation
│ │ ├── server.ts # Server configuration and lifecycle
│ │ ├── handlers.ts # Request handlers and routing
│ │ └── *.test.ts # Server tests
│ ├── swift/ # Native Swift integration code
│ │ ├── bin/ # Compiled Swift binaries
│ │ ├── GetReminders.swift # Swift source file
│ │ └── build.sh # Swift build script
│ ├── tools/ # MCP tool definitions and handlers
│ │ ├── definitions.ts # Tool schemas and validation
│ │ ├── handlers.ts # Tool implementation logic
│ │ ├── index.ts # Tool registration
│ │ └── *.test.ts # Tool tests
│ ├── types/ # TypeScript type definitions
│ │ └── index.ts # Core type definitions
│ ├── utils/ # Helper functions and utilities
│ │ ├── __mocks__/ # Test mocks
│ │ ├── *.ts # Utility modules
│ │ └── *.test.ts # Utility tests
│ ├── validation/ # Schema validation utilities
│ │ └── schemas.ts # Zod validation schemas
│ └── test-setup.ts # Test environment setup
├── dist/ # Compiled JavaScript output
│ ├── index.js # Main compiled entry point
│ ├── swift/bin/ # Compiled Swift binaries
│ ├── server/ # Server compiled files
│ ├── tools/ # Tools compiled files
│ ├── types/ # Types compiled files
│ ├── utils/ # Utils compiled files
│ └── validation/ # Validation compiled files
├── node_modules/ # Node.js dependencies
├── package.json # Package configuration
├── tsconfig.json # TypeScript configuration
├── jest.config.mjs # Jest test configuration
├── pnpm-lock.yaml # pnpm lock file
└── *.md # Documentation files
npm run build
- Build both TypeScript and Swift components (REQUIRED before starting server)npm run build:ts
- Build TypeScript code onlynpm run build:swift
- Build Swift binary onlynpm run dev
- TypeScript development mode with file watchingnpm run start
- Start the MCP servernpm run test
- Run comprehensive test suitenpm run clean
- Clean build artifactsRuntime Dependencies:
@modelcontextprotocol/sdk ^1.5.0
- MCP protocol implementationmoment ^2.30.1
- Date/time handling utilitieszod ^3.24.2
- Runtime type validationDevelopment Dependencies:
typescript ^5.8.2
- TypeScript compiler@types/node ^20.0.0
- Node.js type definitions@types/jest ^29.5.12
- Jest type definitionsjest ^29.7.0
- Testing frameworkts-jest ^29.1.2
- Jest TypeScript supportBuild Tools: