LabscoMCP early access ↗
mdoelMCP SERVER

OmniFocus MCP Server

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

by mdoel ↗Project & Task ManagementCommunity

LABSCO 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

Build from source — git clone https://github.com/mdoel/omnifocus-mcp