← Discover MCPs and Agents
o
MCPAI & MLGitHub

omnifocus-mcp

MCP for Omnifocus

Links

README

From the repo.

omnifocus-mcp

MCP server for OmniFocus — enables AI assistants to manage tasks, projects, tags, and run GTD weekly reviews via the Model Context Protocol.

Requirements

  • macOS with OmniFocus installed
  • Node.js 18+

Setup

npm install
npm run build

Add to .mcp.json (project or ~/.claude/settings.json):

{
  "mcpServers": {
    "omnifocus": {
      "command": "node",
      "args": ["/path/to/omnifocus-mcp/dist/index.js"]
    }
  }
}

Tools (36 total)

Inbox

  • get_inbox_tasks — List tasks from system, private, or work inbox (paginated, excludes completed by default)
  • process_inbox_task — Move task to project, assign tags/dates/flags
  • quick_entry — Create a new task in inbox or directly in a project

Tasks

  • get_task — Fetch a single task by ID
  • complete_task — Mark task as completed
  • uncomplete_task — Reopen a completed task
  • delete_task — Delete a task
  • update_task — Modify name, note, tags, dates, flagged, completed status
  • create_subtasks — Break a task into subtasks
  • search_tasks — Search incomplete tasks by name

Projects

  • get_projects — List projects filtered by status, optionally scoped to a folder
  • get_project_by_name — Look up a project ID by name
  • get_project_tasks — List tasks within a project (paginated)
  • create_project — Create project with optional folder, tags, review interval, and initial tasks
  • update_project — Change status, review interval, name, note
  • convert_task_to_project — Promote a task to a project, preserving name/note/tags

Folders

  • get_folders — List folders (areas of responsibility) with active project counts and parent IDs
  • create_folder — Create a folder, optionally nested inside a parent
  • update_folder — Rename a folder
  • move_project — Move a project into a different folder
  • delete_folder — Delete a folder (refuses if it contains projects)

Tags

  • get_tags — List tags (with limit)
  • create_tag — Create tag (supports nesting via parent tag ID)
  • update_tag — Rename a tag and/or reparent it (pass empty parentTagId to move to document root)
  • delete_tag — Delete a tag by ID (refuses if it has child tags; tasks are untagged, not deleted)

Review

  • get_projects_due_for_review — Projects past their review date
  • get_review_digest — One row per project with stall / next-action (Planned) / deadline / last-activity signals; scope=due or all-active, optional folderId, onlyStalled, pagination — the engine for weekly review and the one-time backlog pass
  • mark_project_reviewed — Reset review timer
  • batch_mark_reviewed — Reset review timers for many projects in one call
  • get_stale_tasks — Tasks in a project not modified for N days
  • get_overdue_tasks — Tasks past due date
  • get_forecast — Tasks due in the next N days
  • get_completed_tasks — Tasks completed since a given date
  • get_flagged_tasks — List all flagged incomplete tasks (your "hot list")
  • get_available_tasks — List actionable tasks in a project (not blocked, not deferred)
  • get_tasks_by_tag — List incomplete tasks matching any of the given tags (e.g., @waiting_for, @errands); sortByAge/minAgeDays surface aging commitments with a daysWaiting field; folderId (optional) restricts to tasks whose project lives in a specific folder (area of responsibility), keeping work and personal commitment reviews separate — mirrors get_review_digest's folderId

Response shape

Tool responses are returned as single-line JSON with unset/empty fields omitted to reduce token usage. Specifically: null, undefined, "", [], and empty objects are stripped from response payloads. false and 0 are preserved (they carry real values). Consumers should treat absent keys as unset — for example, a task with no due date will have no dueDate key at all rather than dueDate: null.

Development

npm run dev       # watch mode
npm test          # run tests
npm run build     # compile TypeScript

Collected info

  • ★ 1 stars
  • Language: TypeScript
  • Source updated: 6/2/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.