Skip to main content
Glama
README.md
# 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

A4/5.0

Scored across 10 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues