PluginBench
MCP Server
Maintained
MIT

io.github.mattheworiordan/remi MCP Server

io.github.mattheworiordan/remi

Terminal access to Apple Reminders with section support and iCloud sync—the CLI Apple should have built.

What is the io.github.mattheworiordan/remi MCP server?

The remi MCP server is a command-line interface and Model Context Protocol server for Apple Reminders that adds section organization, natural-language date parsing, and iCloud sync. It exposes 16 tools for creating lists, adding reminders, managing sections, and querying due items, designed for AI agents and terminal automation on macOS.

remi lets you manage Apple Reminders from the terminal and AI agents with full section support—the only CLI that syncs sections across iCloud. Create lists, add reminders with natural-language dates and recurrence rules, organize into sections, and query what's due today or overdue. It's built for speed (compiled Swift helpers) and agent integration (JSON output, MCP server, Claude Code plugin).

How to install io.github.mattheworiordan/remi

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "remi": {
      "command": "npx",
      "args": [
        "-y",
        "@mattheworiordan/remi"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • remi_lists — List all reminder lists
  • remi_list — View a specific list with fuzzy matching
  • remi_add — Add a reminder with optional due date, priority, recurrence, and section
  • remi_complete — Mark a reminder as complete
  • remi_update — Update a reminder's details
  • remi_delete — Delete a reminder
  • remi_today — Show reminders due today
  • remi_overdue — Show past-due reminders
  • remi_upcoming — Show reminders due within a specified number of days
  • remi_search — Search for reminders across all lists
  • remi_sections — List sections in a reminder list
  • remi_create_section — Create a new section in a list
  • remi_move — Move a reminder to a different section
  • remi_authorize — Grant Reminders and Full Disk Access permissions
  • remi_doctor — Check what permissions are granted

Use cases

  • Query what's due today or overdue and get structured JSON for AI processing
  • Add reminders with natural-language dates ('next tuesday') and recurrence rules ('every 2 weeks on monday,friday')
  • Organize reminders into sections and move them between sections with iCloud sync
  • Search across all reminder lists and fuzzy-match list and reminder names
  • Automate reminder management from scripts or AI agents via MCP server integration

io.github.mattheworiordan/remi MCP server FAQ

What is remi?

remi is a CLI and MCP server for Apple Reminders that adds section support, natural-language dates, and iCloud sync—features Apple's official tools don't expose.

Is remi free?

Yes, remi is open-source under the MIT license.

How do I install remi in Cursor or Claude?

Install via npm (`npm install -g @mattheworiordan/remi`) or Homebrew, then configure as an MCP server in your client's settings with `command: remi` and `args: ["--mcp"]`. It's also available as a Claude Code plugin.

What permissions does remi need?

macOS will prompt for Reminders access on first run. Section features also require Full Disk Access for your terminal app; run `remi authorize` to set both up.

Does remi sync sections to iCloud?

Yes—remi is the only CLI that supports Apple Reminders sections with iCloud sync, using CRDT vector clocks to keep sections consistent across devices.

What are the system requirements?

macOS 13+ (Ventura or later), Node.js 18+, and Xcode Command Line Tools.

README (reference)

Source of truth, from the repository.

<p align="center"> <img src="docs/logo.svg" alt="remi" width="80"> </p> <h1 align="center">remi</h1> <p align="center"><strong>The CLI that Apple should have built for Reminders.</strong></p>

Create lists, add reminders, organize them into sections, and have everything sync across all your Apple devices — from the terminal.

<p align="center"> <img src="docs/demo.gif" alt="remi demo" width="500"> </p>

Why remi?

  • Sections with iCloud sync — the only CLI that supports Apple Reminders sections. Create them, assign reminders, move between them, and it all syncs.
  • Natural language — --due "next tuesday", --repeat "every 2 weeks on monday,friday"
  • Fuzzy matching — type remi list shopping instead of remi list "Groceries / Shopping List"
  • Agent-first — structured JSON output, Claude Code plugin, skills.sh skill, OpenClaw compatible
  • Fast — compiled Swift helpers, no Electron, no GUI

vs other tools

remiremindctlreminders-cli
SectionsYesNoNo
Section sync (iCloud)YesN/AN/A
RecurrenceYesYesNo
Natural language datesYesYesNo
JSON outputYesYesNo
AI agent integrationYesPartialNo

Install

brew tap mattheworiordan/tap && brew install remi

Or via npm:

npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists

Quick start

remi lists                                              # See all lists
remi list "Groceries"                                   # View a list (fuzzy: remi list groceries)
remi add "Groceries" "Buy milk" --section "Dairy"       # Add to a section
remi today                                              # What's due today?
remi complete "Groceries" "milk"                        # Fuzzy complete

Usage

Check what's due

remi today                    # Due today
remi overdue                  # Past due
remi upcoming --days 7        # Coming up
remi search "dentist"         # Search across all lists

Manage reminders

remi add "Work" "Review PR" --due "next friday" --priority high
remi add "Work" "Standup" --due tomorrow --repeat daily
remi complete "Work" "standup"
remi update "Work" "Review PR" --due "in 3 days"
remi delete "Work" "Review PR" --confirm

Dates: tomorrow, next tuesday, in 3 days, or YYYY-MM-DD Recurrence: daily, weekly, monthly, every 2 weeks, every 3 months on monday,friday

Organize with sections

remi sections "Groceries"                                # List sections
remi create-section "Groceries" "Produce"                # Create a section
remi add "Groceries" "Bananas" --section "Produce"       # Add to a section
remi move "Groceries" "Bananas" --to-section "Dairy"     # Move between sections

Sections sync to iCloud via CRDT vector clocks. See how it works.

JSON output

Every command supports --json for machine-readable output:

remi today --json
# {"success": true, "data": [...]}

AI agent integration

remi is designed for AI agents. Use it as an MCP server, Claude Code plugin, or skill:

MCP server

{
  "mcpServers": {
    "remi": {
      "command": "remi",
      "args": ["--mcp"]
    }
  }
}

16 tools: remi_lists, remi_add, remi_complete, remi_move, remi_today, remi_search, and more — all with fuzzy matching and structured responses.

Other integrations

# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi

# skills.sh
npx skills add mattheworiordan/remi

# OpenClaw
clawhub install remi

Permissions

On first run, macOS will ask you to grant Reminders access (click Allow). Section features also need Full Disk Access for your terminal app.

remi authorize    # Guides you through both
remi doctor       # Shows what's granted

Requirements

  • macOS 13+ (Ventura or later)
  • Node.js 18+
  • Xcode Command Line Tools (xcode-select --install)

How it works

remi uses three layers because Apple never exposed sections in their public API:

LayerWhatWhy
EventKitReminder CRUD, queries, recurrenceStable public API
ReminderKitSection CRUDPrivate framework — only way to create sections that sync
SQLite + Token MapsSection membershipDirect database writes with CRDT vector clocks for iCloud sync

The full reverse-engineering story explains what we discovered about Apple's undocumented sync architecture.

Contributing

git clone https://github.com/mattheworiordan/remi.git && cd remi
npm install && npm run build:swift && npm run build
npm test                        # Unit tests
npm run test:integration        # Integration tests (needs Reminders access)

License

MIT — Matthew O'Riordan

Related MCP servers

Save selected AI-generated answers as private Nugs in your personal NugIt library.

View repository →
SOSovereign Gateway logo

Gating proxy for MCP servers: policy, verification and one audit trail across upstreams.

0
Python
View repository →

Hostaway PMS: reservations, listings, calendars, financials, and guest messaging.

0
TypeScript
View repository →

Research 7,400+ US doctors: search, semantic search, profiles, reviews & procedure pricing.

View repository →

Read-only search over Tesoro High School's public documents. Unofficial, unaffiliated.

STEP file inspection for AI. Measure walls, draft angles, clearances. Returns facts, not guesses.

3
TypeScript
MIT
View repository →