Labsco
MCP SERVER

OmniFocus MCP Server

by mdoel

Read OmniFocus tasks and projects into Claude Desktop, with a filter that strips template folders, placeholder markers and synced-preference noise.

Project & Task Management
Summary
Three read tools, and one of them earns its place.

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.

What it is

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.

What you get
  • 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`
Requirements

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.

Setup effort

One command — npx -y omnifocus-mcp