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.
Tools & capabilities
Tools this server exposes to the agent.
remi_lists— List all reminder listsremi_list— View a specific list with fuzzy matchingremi_add— Add a reminder with optional due date, priority, recurrence, and sectionremi_complete— Mark a reminder as completeremi_update— Update a reminder's detailsremi_delete— Delete a reminderremi_today— Show reminders due todayremi_overdue— Show past-due remindersremi_upcoming— Show reminders due within a specified number of daysremi_search— Search for reminders across all listsremi_sections— List sections in a reminder listremi_create_section— Create a new section in a listremi_move— Move a reminder to a different sectionremi_authorize— Grant Reminders and Full Disk Access permissionsremi_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
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.
Yes, remi is open-source under the MIT license.
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.
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.
Yes—remi is the only CLI that supports Apple Reminders sections with iCloud sync, using CRDT vector clocks to keep sections consistent across devices.
macOS 13+ (Ventura or later), Node.js 18+, and Xcode Command Line Tools.
README (reference)
Source of truth, from the repository.
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 shoppinginstead ofremi 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
| remi | remindctl | reminders-cli | |
|---|---|---|---|
| Sections | Yes | No | No |
| Section sync (iCloud) | Yes | N/A | N/A |
| Recurrence | Yes | Yes | No |
| Natural language dates | Yes | Yes | No |
| JSON output | Yes | Yes | No |
| AI agent integration | Yes | Partial | No |
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:
| Layer | What | Why |
|---|---|---|
| EventKit | Reminder CRUD, queries, recurrence | Stable public API |
| ReminderKit | Section CRUD | Private framework — only way to create sections that sync |
| SQLite + Token Maps | Section membership | Direct 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 →
Sovereign Gateway
Gating proxy for MCP servers: policy, verification and one audit trail across upstreams.

io.github.mattlong-plux/hostaway
Hostaway PMS: reservations, listings, calendars, financials, and guest messaging.
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.

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