
OmniFocus
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 toolsPublic 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:
Details
- Repository
- github.com/steveardis/omnifocus-mcp
- Category
- Automation & Workflows
- Package
@scardis/omnifocus-mcp- Transport
- STDIO
- Registry
- MCP registry, active