remi について
remi は macOS 向けの Apple リマインダー用コマンドラインツールであり、MCP サーバーでもあります。セクション機能と iCloud 同期に対応しています。構造化された JSON を返すため、ターミナルでリマインダーを管理する利用者や AI エージェントに適しています。
主な機能
- 01iCloud 同期対応のリマインダーセクション
- 02自然言語による日付と繰り返し設定
- 03リスト名のあいまい一致
- 04全コマンドの構造化 JSON 出力
- 05MCP サーバーモード
活用シーン
- 01ターミナルから今日・期限切れ・今後のリマインダーを確認
- 02コマンドラインで買い物項目を指定セクションに追加
- 03AI エージェントから Apple リマインダーを読み取り・更新
MCP 対応
remi --mcp で起動すると、remi_lists、remi_add、remi_complete、remi_move など 16 のツールを MCP サーバーとして公開します。あいまい一致と構造化されたレスポンスに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
remi
Apple がリマインダー向けに作るべきだった CLI。
ターミナルからリストを作成し、リマインダーを追加してセクションに整理すれば、すべての Apple デバイス間で同期できます。
remi を選ぶ理由
- iCloud 同期対応のセクション — Apple リマインダーのセクションに対応する唯一の CLI です。セクションを作成し、リマインダーを割り当てたり、セクション間で移動したりでき、すべて同期されます。
- 自然言語 —
--due "next tuesday"、--repeat "every 2 weeks on monday,friday" - あいまい検索 —
remi list "Groceries / Shopping List"の代わりにremi list shoppingと入力できます。 - エージェントを第一に設計 — 構造化された JSON 出力、Claude Code プラグイン、skills.sh スキルに対応し、OpenClaw と互換性があります。
- 高速 — Swift でコンパイルされたヘルパーを使用し、Electron も GUI もありません。
他のツールとの比較
| remi | remindctl | reminders-cli | |
|---|---|---|---|
| セクション | 対応 | 非対応 | 非対応 |
| セクション同期(iCloud) | 対応 | 該当なし | 該当なし |
| 繰り返し | 対応 | 対応 | 非対応 |
| 自然言語の日付 | 対応 | 対応 | 非対応 |
| JSON 出力 | 対応 | 対応 | 非対応 |
| AI エージェント連携 | 対応 | 一部対応 | 非対応 |
インストール
brew tap mattheworiordan/tap && brew install remi
または npm 経由でインストールします。
npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists
クイックスタート
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
使い方
期限が来ている項目を確認する
remi today # Due today
remi overdue # Past due
remi upcoming --days 7 # Coming up
remi search "dentist" # Search across all lists
リマインダーを管理する
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
日付:tomorrow、next tuesday、in 3 days、または YYYY-MM-DD
繰り返し:daily、weekly、monthly、every 2 weeks、every 3 months on monday,friday
セクションで整理する
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
セクションは CRDT ベクトルクロックを介して iCloud と同期されます。詳しくは仕組みをご覧ください。
JSON 出力
すべてのコマンドで --json を指定すると、機械可読形式で出力できます。
remi today --json
# {"success": true, "data": [...]}
AI エージェント連携
remi は AI エージェント向けに設計されています。MCP サーバー、Claude Code プラグイン、またはスキルとして使用できます。
MCP サーバー
{
"mcpServers": {
"remi": {
"command": "remi",
"args": ["--mcp"]
}
}
}
16 個のツールを利用できます。remi_lists、remi_add、remi_complete、remi_move、remi_today、remi_search などがあり、すべてあいまい検索と構造化されたレスポンスに対応しています。
その他の連携
# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi
# skills.sh
npx skills add mattheworiordan/remi
# OpenClaw
clawhub install remi
権限
初回起動時、macOS でリマインダーへのアクセス許可を求められます(「許可」をクリックしてください)。セクション機能を利用するには、ターミナルアプリへのフルディスクアクセスも必要です。
remi authorize # Guides you through both
remi doctor # Shows what's granted
必要条件
- macOS 13 以降(Ventura 以降)
- Node.js 18 以降
- Xcode Command Line Tools(
xcode-select --install)
仕組み
Apple が公開 API でセクションを提供していないため、remi は 3 つのレイヤーを使用します。
| レイヤー | 内容 | 理由 |
|---|---|---|
| EventKit | リマインダーの CRUD、クエリ、繰り返し | 安定した公開 API |
| ReminderKit | セクションの CRUD | プライベートフレームワーク — 同期されるセクションを作成する唯一の方法 |
| SQLite + Token Maps | セクションの所属情報 | iCloud 同期のための CRDT ベクトルクロックを使ったデータベースへの直接書き込み |
リバースエンジニアリングの全記録では、Apple の非公開の同期アーキテクチャについて判明した内容を説明しています。
コントリビュート
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)
ライセンス
MIT — Matthew O'Riordan
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。