steveardis avatar

OmniFocus

steveardis/omnifocus-mcp

Gives Claude full access to OmniFocus through Omni Automation's JavaScript API instead of the more limited AppleScript dictionary. Every operation runs OmniJS snippets inside OmniFocus via osascript, so you get recurrence rules, planned dates, review intervals, and proper stable IDs for addressing. Ships with 22 tools covering tasks, projects, folders, and tags: create, edit, complete, drop, delete, move. All arguments are JSON serialized to avoid the injection issues that plague string interpolation approaches. The resolve_name tool returns all candidates with paths rather than silently picking one, forcing explicit disambiguation. Requires OmniFocus running locally on macOS. If you're building workflows that need reliable two way sync with OmniFocus task data, this is the complete option.

GitHub stars
2
tools
27
transport
STDIO
last updated
Aug 29, 2026

Tools

27 tools

Public tool metadata for what this MCP can expose to an agent.

list_projectsProjects with optional filtering by status, folderId, flagged. Default excludes done/dropped. Limit (default 100).

Projects with optional filtering by status, folderId, flagged. Default excludes done/dropped. Limit (default 100).

No parameter schema in public metadata yet.

get_projectFull project detail by stable ID

Full project detail by stable ID

No parameter schema in public metadata yet.

list_tasksTasks scoped by projectId, folderId, inbox: true, or all: true with optional status/tag/due/flagged filters. Limit (default 200).

Tasks scoped by projectId, folderId, inbox: true, or all: true with optional status/tag/due/flagged filters. Limit (default 200).

No parameter schema in public metadata yet.

get_taskFull task detail by stable ID — includes defer/planned/due dates, tags, repetition rule, parentTaskId

Full task detail by stable ID — includes defer/planned/due dates, tags, repetition rule, parentTaskId

No parameter schema in public metadata yet.

list_foldersFolders with optional status filter. Limit (default 200).

Folders with optional status filter. Limit (default 200).

No parameter schema in public metadata yet.

get_folderFull folder detail by stable ID, including child folder and project IDs

Full folder detail by stable ID, including child folder and project IDs

No parameter schema in public metadata yet.

list_tagsTags with optional status filter. Limit (default 200).

Tags with optional status filter. Limit (default 200).

No parameter schema in public metadata yet.

get_tagFull tag detail by stable ID, including child tag IDs

Full tag detail by stable ID, including child tag IDs

No parameter schema in public metadata yet.

resolve_nameResolve a name to stable ID candidates — never silently disambiguates; returns all matches

Resolve a name to stable ID candidates — never silently disambiguates; returns all matches

No parameter schema in public metadata yet.

create_taskCreate a task in inbox, project, or as subtask. Supports defer/planned/due dates, tags, flagged, estimated minutes, and repetition rules.

Create a task in inbox, project, or as subtask. Supports defer/planned/due dates, tags, flagged, estimated minutes, and repetition rules.

No parameter schema in public metadata yet.

edit_taskEdit any task field. Pass null to clear dates or repetition. Omitted fields are unchanged.

Edit any task field. Pass null to clear dates or repetition. Omitted fields are unchanged.

No parameter schema in public metadata yet.

complete_taskMark a task complete

Mark a task complete

No parameter schema in public metadata yet.

drop_taskMark a task dropped

Mark a task dropped

No parameter schema in public metadata yet.

delete_taskPermanently delete a task and all subtasks

Permanently delete a task and all subtasks

No parameter schema in public metadata yet.

create_projectCreate a project, optionally in a folder. Supports type, status, review interval, tags.

Create a project, optionally in a folder. Supports type, status, review interval, tags.

No parameter schema in public metadata yet.

edit_projectEdit project fields

Edit project fields

No parameter schema in public metadata yet.

complete_projectMark a project complete

Mark a project complete

No parameter schema in public metadata yet.

drop_projectMark a project dropped

Mark a project dropped

No parameter schema in public metadata yet.

delete_projectPermanently delete a project and all its tasks

Permanently delete a project and all its tasks

No parameter schema in public metadata yet.

create_folderCreate a folder, optionally nested

Create a folder, optionally nested

No parameter schema in public metadata yet.

edit_folderRename a folder

Rename a folder

No parameter schema in public metadata yet.

delete_folderPermanently delete a folder and entire subtree

Permanently delete a folder and entire subtree

No parameter schema in public metadata yet.

create_tagCreate a tag, optionally nested

Create a tag, optionally nested

No parameter schema in public metadata yet.

edit_tagEdit tag name or status

Edit tag name or status

No parameter schema in public metadata yet.

delete_tagPermanently delete a tag and child tags

Permanently delete a tag and child tags

No parameter schema in public metadata yet.

move_taskMove a task to a project or make it a subtask of another task

Move a task to a project or make it a subtask of another task

No parameter schema in public metadata yet.

move_projectMove a project to a folder or to top level

Move a project to a folder or to top level

No parameter schema in public metadata yet.

Sponsors

Readme

omnifocus-mcp

An MCP server for OmniFocus that exposes the full Omni Automation JavaScript API to LLM callers.

macOS only. Requires OmniFocus running on the same machine. The entire implementation runs OmniJS snippets inside OmniFocus via osascript -l JavaScript — no AppleScript string generation, no scripting dictionary limitations.

Prerequisites

  • macOS (Omni Automation is macOS-only; the server will not start on other platforms)
  • OmniFocus installed and running
  • Node.js ≥ 20

Install

The package is published to npm as @scardis/omnifocus-mcp.

Via npx (no install required)

Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "@scardis/omnifocus-mcp"]
    }
  }
}

From source

git clone https://github.com/steveardis/omnifocus-mcp.git
cd omnifocus-mcp
npm install
npm run build

Then configure your MCP client:


View the full README on GitHub

Details

Repository
github.com/steveardis/omnifocus-mcp
Category
Automation & Workflows
Package
@scardis/omnifocus-mcp
Transport
STDIO
Registry
MCP registry, active

Related Automation & Workflows MCP servers

View all
1jarmstrong158 avatarSkillmatch Mcpjarmstrong158/skillmatch-mcpJob search and ranking pipeline via MCP for Claude Desktop.2stars
2nikulk2992-jpg avatarPrismHR MCPnikulk2992-jpg/prismhr-mcpOpen-source MCP server for PrismHR. PEO workflow tools + Microsoft 365 connectors.2stars
3solnk-dev avatarSolnksolnk-dev/solnk-mcpLet AI agents draft, schedule and publish social posts to 9 platforms, reviewed before going live.2stars
4arcededev avatarAIR SDKarcededev/air-sdkCollective intelligence for browser automation agents. Site capabilities, selectors, and extraction.1stars
5asattelmaier avatarGNOME UI MCPasattelmaier/gnome-ui-mcpGNOME Wayland desktop automation via AT-SPI discovery and Mutter input.1stars
6scope-bid avatarScope (Legal)scope-bid/scope-mcpDispatch litigation work to legal-services professionals from any MCP-compatible AI workflow.1stars