An MCP server for interacting with Apple Reminders on macOS
This document details the implementation and usage of a Model Context Protocol (MCP) server designed for native integration with Apple Reminders on macOS. This server empowers Large Language Models (LLMs) to interact directly with your reminders, enabling AI-driven task management and workflow automation.
This MCP server provides a comprehensive suite of features for managing Apple Reminders:
To successfully deploy and utilize this MCP server, ensure the following prerequisites are met:
The following steps outline the installation and configuration process:
Global Installation: Install the server globally using npm:
npm install -g mcp-server-apple-reminders
This section provides detailed instructions for configuring various LLM platforms to utilize the Apple Reminders MCP server.
Access Settings: Open Cursor and navigate to the settings menu.
Locate MCP Settings: Find the "MCP" section in the sidebar.
Add New Server: Click "Add new global MCP server."
Server Configuration: Input the following JSON configuration:
{ "mcpServers": { "apple-reminders": { "command": "mcp-server-apple-reminders", "args": [] } } }
Open Settings: Launch ChatWise and access the settings panel.
Navigate to Tools: Go to the "Tools" section.
Add New Tool: Click the "+" button to add a new tool.
Tool Configuration: Configure the tool with the following parameters:
stdio
apple-reminders
mcp-server-apple-reminders
Configuration for Claude Desktop can be achieved through the UI or direct file access.
claude_desktop_config.json
.macOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
code %APPDATA%\Claude\claude_desktop_config.json
Add Server Configuration: Add the following JSON configuration to your claude_desktop_config.json
:
{ "mcpServers": { "apple-reminders": { "command": "mcp-server-apple-reminders", "args": [] } } }
Restart Claude Desktop: Completely quit and restart Claude Desktop for the changes to take effect. Verify the connection by checking for the tool icon.
Once configured, you can leverage natural language prompts to interact with Apple Reminders through your chosen LLM.
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.
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 intelligently processes these requests, interacts with the native Apple Reminders application, and returns formatted results to the LLM, ensuring seamless integration and a native macOS experience.
This server exposes the following MCP tools for interacting with Apple Reminders:
create_reminder
Creates a new reminder with the specified parameters.
Parameters:
title
(string, required): The title of the reminder.dueDate
(string, optional): The due date in 'YYYY-MM-DD HH:mm:ss' format (e.g., '2025-03-12 10:00:00').list
(string, optional): The name of the reminders list to add the reminder to.note
(string, optional): A note to attach to the reminder.Example Response:
{ "content": [ { "type": "text", "text": "Successfully created reminder: Buy groceries with notes" } ], "isError": false }
list_reminders
Lists reminders based on specified criteria.
Parameters:
list
(string, optional): The name of the reminders list to show.showCompleted
(boolean, optional): Whether to show completed reminders (default: false).Example Response:
{ "reminders": [ { "title": "Buy groceries", "list": "Shopping", "isCompleted": false, "dueDate": "2024-03-25 18:00:00", "notes": "Don't forget milk" } ], "total": 1, "filter": { "list": "Shopping", "showCompleted": false } }
list_reminder_lists
Retrieves a list of all available reminder lists.
Example Response:
{ "lists": [ { "id": 1, "title": "Shopping" }, { "id": 2, "title": "Work" } ], "total": 2 }
This section provides instructions for setting up a development environment and contributing to the project.
Install Dependencies:
npm install
Build Swift Binary:
npm run build:swift
Build TypeScript Code:
npm run build:ts
.
├── src/ # Source code directory
│ ├── index.ts # Main entry point
│ ├── server/ # MCP server implementation
│ ├── swift/ # Native Swift integration code
│ │ ├── bin/ # Compiled Swift binaries
│ │ └── src/ # Swift source files
│ ├── tools/ # CLI tools and utilities
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Helper functions and utilities
├── dist/ # Compiled JavaScript output
├── node_modules/ # Node.js dependencies
└── tests/ # Test files and test utilities
npm run build:ts
: Build TypeScript code.npm run build:swift
: Build Swift binary.npm run dev
: Run TypeScript compiler in watch mode.npm run start
: Start the MCP server.npm test
: Run tests.📇 🏠 🍎 Allows to read notes and tags for the Bear Note taking app, through a direct integration with Bear's sqlitedb.
📇 An MCP server for basic local taskwarrior usage (add, update, remove tasks)
📇 🏠 An MCP server to list and launch applications on MacOS
🐍 ☁️ A Model Context Protocol (MCP) server that integrates with Notion's API to manage personal todo lists efficiently.