Nothing here writes, so it cannot reorganise your system by accident — it is for asking questions about what is on your plate. The active-task filter is the part worth having: a raw task dump from a real OmniFocus database is mostly noise, and this one drops the template and system entries before the model sees them.
A read-only MCP server for OmniFocus on macOS, driven through the official Omni Automation JavaScript API. Its useful trick is the active-task filter: OmniFocus databases accumulate template entries and system items, and the filtered view keeps them out of what the assistant sees.
- All tasks retrieved with filtering options — `includeCompleted` (default false) and `limit` (default 100) — `omnifocus:get_all_tasks`
- Only active, uncompleted tasks, with tasks from "Templates" folders, tasks containing the placeholder characters `«` and `»`, and tasks marked with the synced-preferences `⚙️` marker filtered out — `omnifocus:get_active_tasks`
- All active projects — `omnifocus:get_projects`
macOS with OmniFocus installed, Node.js 23.10.0 or higher, and Claude Desktop. Clone, `npm install`, `npm run build`, then point the Claude Desktop config at `run-server.sh` in the project directory. On first run macOS prompts for automation permission for OmniFocus — click Allow; if the prompt does not appear, the README explains temporarily uncommenting the `osascript` lines in `run-server.sh` to trigger it. Package `omnifocus-mcp` 1.0.0.
One command — npx -y omnifocus-mcp
