← Back to directory
O

OmniFocus MCP Server

Community
Let AI assistants manage your OmniFocus tasks and projects in natural language
GitHub source repository ↗
★ 241 Stars Category · Other Very popular
66FMRS · C

This is a fairly mature third-party OmniFocus MCP server with broad coverage: 12 tools plus several resources, bulk operations, perspective and tag management, and natural-language repeat rules compiled into ICS rules. Its shared-daemon design solves AppleEvent timeouts when multiple clients run at once and includes a standalone fallback. The main constraints are that it is macOS-only and requires OmniFocus plus automation permission, and it is community-maintained rather than official. Users should understand the risks around removals and repeating-item history before use.

Reliability
11/20
Security and permissions
12/20
Maintenance
13/20
Documentation
16/20
Setup experience
14/20
Read the FMRS scoring method →

OmniFocus MCP Server is a Model Context Protocol server that connects an OmniFocus database to Claude and other MCP-compatible AI assistants. It is a third-party open-source project (MIT licensed), not an official Omni Group product. The server talks to OmniFocus through osascript using JXA and Omni Automation where appropriate, is built on the official MCP TypeScript SDK, and communicates with clients over stdio. It exposes 12 tools for querying, creating, editing, and removing tasks and projects, with support for bulk operations, perspectives, tags, and natural-language repeating rules that the server compiles into ICS recurrence rules. It also exposes resources such as omnifocus://inbox, omnifocus://today, omnifocus://flagged, and omnifocus://stats for clients to attach as context. On launch it uses a shared background daemon (a Unix domain socket in a 0700 directory) so that the cap on concurrent osascript calls is global. It requires macOS with OmniFocus installed and Node.js 20 or later.

Tools

query_omnifocus
Query tasks, projects, or folders with targeted filters — faster and lighter than dumping the whole database.
dump_database
Get the complete state of your database for comprehensive analysis.
add_omnifocus_task
Create a new task, optionally with a project, parent task, note, dates, tags, estimate, and repeat rule.
add_project
Create a new project, optionally with a folder, sequential setting, dates, tags, estimate, and repeat rule.
edit_item
Edit an existing task or project; also the way to move items into a project or the inbox.
remove_item
Remove a task or project.
batch_add_items
Create multiple tasks and projects in one operation, with temp IDs for nesting.
batch_remove_items
Remove multiple tasks or projects in one operation.
list_perspectives
List available perspectives, both built-in and custom.
get_perspective_view
Get the items visible in a named perspective.
list_tags
List all tags with their hierarchy, active status, and task counts.
create_tag
Create a tag, optionally nested under an existing parent.

Setup

  1. Make sure you are on macOS with OmniFocus installed and Node.js 20 or later available. 2. Add the server to ~/Library/Application Support/Claude/claude_desktop_config.json using an mcpServers entry with command "npx" and args ["-y", "omnifocus-mcp"]. 3. Restart Claude Desktop. For Claude Code, run: claude mcp add omnifocus -- npx -y omnifocus-mcp. Other MCP clients work the same way: launch npx -y omnifocus-mcp over stdio. 4. The first time the server talks to OmniFocus, macOS will ask you to allow automation access; grant it once.
claude_desktop_config.json
{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp"]
    }
  }
}

Fit and risk

Best for

  • macOS users with OmniFocus who want to drive their task database in natural language
  • OmniFocus users who need an AI assistant to bulk-organize and reorganize tasks
  • Users comfortable granting macOS automation access and troubleshooting AppleEvent timeouts

Not for

  • Windows or Linux users, since the server depends on OmniFocus on macOS
  • Users whose environment cannot grant macOS automation permissions
  • Users expecting official Omni Group support, as this is a third-party open-source project

Required permissions

  • Requires macOS Automation (AppleEvents) access to control OmniFocus
  • Reads and writes the local OmniFocus database through osascript
  • The shared daemon listens on a 0700-permission Unix domain socket under ~/.omnifocus-mcp/; access is enforced by the filesystem, with no network port and no token

Risks and side effects

  • Once automation access is granted, the server can read and modify the local OmniFocus database, including removing tasks and projects; removals may warrant care.
  • Editing or removing completed past occurrences of repeating items cascades through the live repeat chain and is refused by default unless explicitly allowed.
  • If the shared daemon crashes or is killed, attached clients can be affected; newer versions reconnect and replay the initialize handshake.
  • Right after an upgrade two daemons may briefly coexist, with clients attached to the old one receiving an in-band upgrade notice in tool results.
  • Too many concurrent osascript calls can cause AppleEvent timeouts.

Troubleshooting

  1. If you suspect the daemon, set OMNIFOCUS_MCP_NO_DAEMON=1 to skip it and run a dedicated server per client.
  2. If AppleEvent timeouts persist, lower OMNIFOCUS_MCP_MAX_CONCURRENT_OSASCRIPT (default 4).
  3. Use OMNIFOCUS_MCP_SOCKET to override the socket path, for example to run an isolated instance.
  4. The daemon exits after the idle window; adjust with OMNIFOCUS_MCP_IDLE_TIMEOUT_MINUTES (default 30, 0 disables).
  5. After an upgrade, if two daemons appear, the old one exits once its last client disconnects.
  6. If the daemon cannot be started (unusual sandbox, read-only home directory), the shim falls back to a standalone in-process server.
  7. If no automation prompt appears on first use, check macOS Automation permissions and revoke and re-grant if needed.

Use cases

Translate a syllabus PDF into a fully specified project with tasks, tags, defer dates, and due dates
Turn a meeting transcript into a list of action items in a chosen project
Audit and reorganize tags, projects, and folders conversationally
Query flagged tasks, tasks due this week, or next actions in a project
Create or remove dozens of items in a single batch operation
Read the inbox, today's agenda, flagged items, or a named perspective

Supported clients

Claude DesktopFull support
Claude CodeFull support