reminders-mcp
# reminders-mcp
An MCP (Model Context Protocol) server for managing Apple Reminders via the [`remindctl`](https://github.com/steipete/remindctl) CLI on macOS. It is intended for **Claude Desktop** and **Claude CoWork**, which run sandboxed and cannot run remindctl directly; this server runs as a separate process and talks to remindctl for you.
## Prerequisites
- **macOS** (Apple Reminders framework required)
- **Node.js** >= 18
- **remindctl** — install via Homebrew:
```bash
brew install steipete/tap/remindctl
```
- On first run, grant Reminders access when macOS prompts. Check status with `remindctl status`, request access with `remindctl authorize`, or enable manually in **System Settings > Privacy & Security > Reminders**.
## Tools
| Tool | Description |
|---|---|
| `status` | Check Apple Reminders authorization status |
| `show-reminders` | View reminders by filter (today, tomorrow, week, overdue, upcoming, completed, all, or YYYY-MM-DD date) and optional list name |
| `list-lists` | List all reminder lists with counts |
| `create-list` | Create a new reminder list |
| `rename-list` | Rename an existing list |
| `delete-list` | Delete a list and all its reminders |
| `add-reminder` | Create a reminder with optional list, due date, notes, and priority |
| `edit-reminder` | Modify a reminder's title, list, due date, notes, priority, or completion status |
| `complete-reminders` | Mark one or more reminders as completed |
| `delete-reminders` | Delete one or more reminders |
## Installation
```bash
npm install -g reminders-mcp
```
## Configuration
Edit `claude_desktop_config.json` (macOS):
- **Path**: `~/Library/Application Support/Claude/claude_desktop_config.json`
Add the MCP server (macOS only; the app uses Apple Reminders):
```json
{
"mcpServers": {
"reminders-mcp": {
"command": "reminders-mcp",
"args": []
}
}
}
```
Restart Claude Desktop or CoWork. The reminders tools (e.g. `status`, `show-reminders`) should appear in the tool list.
## Development
```bash
git clone https://github.com/mikakoivisto/reminders-mcp.git
cd reminders-mcp
npm install
npm run build
```
Run in watch mode during development:
```bash
npm run dev
```
Test the server directly (newline-separated JSON-RPC messages):
```bash
printf '%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | node dist/index.js
```
## License
MIT
TDQS
Scored across 10 tools
Each tool targets a distinct resource+action: list management, reminder management, status check, and viewing. No two tools have overlapping purposes, as show-reminders is for reminders while list-lists is for lists, and edit-reminder vs complete-reminders serves singular vs bulk completion.
Most tools follow a consistent verb-noun hyphenated pattern (show-reminders, create-list, add-reminder, etc.), but 'status' is a single noun that does not fit the verb-noun convention. This is a minor deviation in an otherwise predictable naming scheme.
With 10 tools, the server is well-scoped for a reminders domain, covering both list and reminder operations without bloat. Each tool earns its place, and the count is within the ideal range for maintainability.
The tool set provides full lifecycle coverage: lists can be created, renamed, listed, and deleted; reminders can be added, shown, edited, completed, and deleted. The addition of a status check for authorization fills a practical need, leaving no obvious gaps.