← Back to directory
O

OmniFocus MCP Server

Community
Let AI assistants manage your OmniFocus tasks and projects in natural language
Category
Other #30 of 230
Stars
★ 252 Very popular
Transport
stdio (local process)
Runtime
Node.js 20+ · Prebuilt binary
Credentials
No credential needed
License
MIT
Last commit
Tools
12
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.

Strongest · Documentation 16/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
12/20
Maintenance
13/20
Documentation
16/20
Setup experience
14/20
Why each score
Reliability 11/20
Static-only review; the sole evidence is the README. It claims CI runs type checking, unit tests and a build, and documents npm test / npm run build / npm run test:integration, implying test infrastructure exists, but no CI workflow file or test source is provided, so coverage of key paths (osascript invocation, query filters, batch ops, repeating-item safety) cannot be verified. Tool behavior is described in unusual detail for a README (12 tools; edit_item refuses a no-op call; unknown argument keys are rejected with the key named; past repeating occurrences are protected unless allowPastOccurrence is passed), which suggests deliberate error handling, but it remains self-reported. The runtime surface is large: macOS + OmniFocus + Node 20 + a one-time AppleEvents automation grant. The shared daemon is described as handling reconnects, initialize-handshake replay and a standalone fallback, but again only in prose. Under the static calibration rule, reliability must not exceed 12 without verifiable execution evidence, so 11.
Security and permissions 12/20
No red line is triggered: there is no evidence of malware, credential theft, covert exfiltration, or default irreversible delete/deploy actions. The data surface is the local OmniFocus database, driven via osascript/JXA/OmniJS, with no network port; the daemon uses a Unix domain socket inside a 0700 directory and relies on filesystem permissions rather than a token, which is defensible for a single-machine tool. However, the confirmation gap is real: remove_item, batch_remove_items and the bulk-editing path of edit_item are documented with no described confirmation, dry-run, or impact preview before destructive changes. The only refusal described concerns edits to past occurrences of repeating items, which protects the repeat chain, not user data loss in general. The macOS automation grant is broad and granted once. Credential handling is a non-issue (no credentials), and no tokens or secrets appear in the examples. Scored 12.
Maintenance 13/20
Not archived, 241 stars, 8 open issues, MIT license, CI badge and an issues link, indicating an active project with an issue channel. The README describes recent, specific behaviors around daemon version bumping, simultaneous old/new daemons, in-band upgrade notices, idle exit, and reconnect semantics, which suggests ongoing iteration. Against that: no visible release cadence, no versioning or dependency-update policy, no security-response channel, and no clearly stated ownership or governance. This matches the anchor for 'active but with governance/versioning gaps', hence 13.
Documentation 16/20
Documentation is the strongest dimension here. The README is layered: installation for Claude Desktop, Claude Code and generic stdio clients; parameter tables for all 12 tools; the full filter enumeration for query_omnifocus; the repeat object schema with an explicit warning about choosing method correctly; the resource URI catalog with template listing/autocompletion; daemon failure semantics; an environment-variable table with defaults; a Roadmap that discloses unsupported repeat cases (positional monthly rules, specific month days, COUNT/UNTIL); and commands for unit and integration testing. Limitations are disclosed and examples are checkable. Deductions: the fuller query reference and worked examples are external links (QUERY_TOOL_REFERENCE.md, QUERY_TOOL_EXAMPLES.md) whose content is not in this material; troubleshooting for the daemon amounts to a single hint (OMNIFOCUS_MCP_NO_DAEMON); no cost/resource-usage guidance; no auth section (there is no auth, which is correct locally but undocumented as such). Scored 16.
Setup experience 14/20
The install path is clear. Prerequisites are stated (macOS with OmniFocus, Node 20+), Claude Desktop gets a complete claude_desktop_config.json snippet, Claude Code gets a one-line `claude mcp add omnifocus -- npx -y omnifocus-mcp`, and other clients are told to launch `npx -y omnifocus-mcp` over stdio. A single one-time macOS automation prompt is the only interactive step. Deductions: hard platform lock to macOS with a mandatory local OmniFocus install and no alternative path; the npm package publishing is asserted only by a badge and cannot be verified statically; the shared daemon and socket path add environmental assumptions (writable HOME, non-restrictive sandbox) even though OMNIFOCUS_MCP_NO_DAEMON exists as a manual fallback, so troubleshooting stays manual. Capped at 15 by the static calibration rule; scored 14.

Static review · not runListed 2026-09-18

Read the FMRS scoring method →

Fit and risk

What it can accessConnects to a database

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.

Setup

Before you start

Runtime:Node.js 20+ · Prebuilt binary

Other optional settings (4)
OMNIFOCUS_MCP_NO_DAEMON optional Set to 1 to skip the shared daemon and run a dedicated server per client; first thing to try if the daemon seems faulty.
OMNIFOCUS_MCP_SOCKET optional Overrides the daemon socket path (default ~/.omnifocus-mcp/daemon-<version>.sock), e.g. to run an isolated instance.
OMNIFOCUS_MCP_IDLE_TIMEOUT_MINUTES optional Minutes of no client traffic before the daemon exits; default 30, 0 disables the timeout.
OMNIFOCUS_MCP_MAX_CONCURRENT_OSASCRIPT optional Cap on concurrent osascript calls; default 4. Lower it if you see AppleEvent timeouts.
  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"]
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "omnifocus": {
      "command": "npx",
      "args": [
        "-y",
        "omnifocus-mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add omnifocus -- npx -y omnifocus-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After adding the server to claude_desktop_config. and restarting, the client's tool list should include query_omnifocus and the other 11 tools; asking "What's in my Inbox?" should return live OmniFocus data.

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.

Things to try

Once connected, you can ask your AI assistant things like:

  • Show me all my flagged tasks due this week
  • Count how many tasks are in each project
  • I'm pasting in today's meeting transcript. Create tasks in OmniFocus for any action items assigned to me, in my 'Product Development' project.
  • Add a recurring task to my activism project that reminds me to call my representative weekly, and include a summary of this conversation in the notes.

Tools 12

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

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 Desktop
Claude Code

Listed from the project's documentation, not tested by this site.

Overview

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.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 670 · Tools 11 Compare with this →

Source revision f6988cd65531 Data synced 2026-11-02 Read the FMRS scoring method