Local Apple Calendar + Reminders tooling for macOS, with Codex plugin adapters and a shared MCP layer underneath.
- native Apple Calendar automation
- native Apple Reminders automation
- installable Codex plugins for both
- one shared local MCP server
- recurring events and recurring reminders
.icsexport and import- smoke tests for both CLI and MCP flows
flowchart TD
A["Codex User"] --> B["apple-calendar plugin"]
A --> C["apple-reminders plugin"]
B --> D["Shared MCP layer"]
C --> D
D --> E["Calendar EventKit backend"]
D --> F["Reminders EventKit backend"]
F --> G["AppleScript flag/unflag fallback"]
apple-productivity-mcp/
plugins/
apple-calendar/ # user-facing Codex plugin
apple-reminders/ # user-facing Codex plugin
mcp/
apple-productivity/ # shared MCP server layer
server/
scripts/
install_local_plugins.py
smoke_test_apple_cli.py
smoke_test_apple_mcp.py
.agents/plugins/marketplace.json
CHANGELOG.md
LICENSE
README.md
These are the things you install and use directly in Codex.
apple-calendarapple-reminders
They contain:
- plugin manifest
- skill docs
- CLI wrappers
- config
.mcp.jsonwiring to the shared MCP server
This is infrastructure, not the user-facing plugin layer.
mcp/apple-productivity/ contains the shared local stdio MCP server used by both plugins.
That separation keeps the repo cleaner:
- plugin UX stays in
plugins/ - shared transport/integration logic stays in
mcp/
| Mode | Best for |
|---|---|
| Codex plugin skill | Natural chat-like usage in Codex |
| CLI wrapper | Scriptable local automation |
| MCP tools | Reusable integration layer for Codex and other MCP-capable agents |
- Clone the repo anywhere on your Mac.
- Run:
/usr/bin/python3 scripts/install_local_plugins.py --repo-root "$(pwd)"-
Make sure macOS permissions are enabled for:
- Calendar
- Reminders
-
Open the repo in Codex.
-
Use:
plugins/apple-calendarplugins/apple-reminders
The shared MCP layer will be wired automatically.
CLI:
/usr/bin/python3 scripts/smoke_test_apple_cli.pyMCP:
/usr/bin/python3 scripts/smoke_test_apple_mcp.pyBoth tests create temporary artifacts and clean them up afterward.
- agenda and free-window lookup
- search by title + day
- create, update, delete
- reminder management
- recurring events
.icsexport and import
- due, overdue, and alarm-today views
- add, update, done, reopen, delete
- move between lists
- recurring reminders
- flag and unflag
- This repo is for macOS.
- Calendar and Reminders require system permission for the app running Codex.
- The shared MCP layer is the right foundation if you later want another MCP-capable agent or a future app layer.
| Path | Purpose |
|---|---|
plugins/apple-calendar |
Calendar plugin layer |
plugins/apple-reminders |
Reminders plugin layer |
mcp/apple-productivity |
shared MCP server layer |
scripts/install_local_plugins.py |
local path rewrite/install helper |
scripts/smoke_test_apple_cli.py |
CLI smoke test |
scripts/smoke_test_apple_mcp.py |
MCP smoke test |