Skip to main content

MCP server exposing OmniFocus as structured task infrastructure for AI agents

Project description

๐ŸŽฏ OmniFocus Operator

The last OmniFocus MCP Server you'll ever need.

Python 3.12+ Tests 2086 Coverage 97% macOS only

Production-grade MCP server exposing OmniFocus as structured task infrastructure for AI agents. Agent-first design, SQLite-cached performance, 2,086 tests.

โ†’ See the full landing page โ€” features, architecture, benchmarks, and comparison


๐Ÿš€ Quick Start

Prerequisites: macOS, OmniFocus 4, Python 3.12+

Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "omnifocus-operator": {
      "command": "uvx",
      "args": ["omnifocus-operator"]
    }
  }
}

That's it. No install step โ€” uvx downloads, isolates, and runs the server automatically.

Or just ask your agent:

Set up the OmniFocus Operator MCP server for me โ€” uvx omnifocus-operator

Development install (contributors)
git clone https://github.com/HelloThisIsFlo/omnifocus-operator.git
cd omnifocus-operator
uv sync

See CONTRIBUTING.md for dev workflow details.


โœจ Features

  • โšก 46ms reads โ€” SQLite caching gives 30โ€“60x faster reads than bridge-only servers
  • ๐Ÿ› ๏ธ 11 MCP tools โ€” lookups, filtered lists, task creation & editing
  • ๐Ÿค– Agent-first design โ€” warnings that teach, errors that educate, guidance in every response
  • ๐Ÿงช 2,086 tests, 97% coverage โ€” strict mypy, no corners cut
  • ๐Ÿ›ก๏ธ Graceful degradation โ€” server stays alive no matter what, always recoverable
  • ๐Ÿ”„ Automatic fallback โ€” SQLite โ†’ OmniJS bridge when needed

See the full documentation for architecture details, examples, and deep dives.


๐Ÿ› ๏ธ Available Tools

Lookups

Tool Description
get_all Full OmniFocus database as structured data (last-resort debugging)
get_task Single task by ID โ€” urgency, availability, dates, tags, parent, project
get_project Single project by ID โ€” status, review interval, next task
get_tag Single tag by ID โ€” availability, parent hierarchy

List & Filter

Tool Description
list_tasks Filter by date, availability, flags, tags, project, search โ€” with pagination and field selection
list_projects Filter by status, folder, review schedule, flags
list_tags List tags with parent hierarchy
list_folders List folders with parent hierarchy
list_perspectives List custom perspectives

Write

Tool Description
add_tasks Create tasks with full field control โ€” parent, tags, dates, flags, notes, repetition rules
edit_tasks Patch semantics โ€” update fields, move tasks, complete/drop, manage tags and repetition rules

All read tools are idempotent. Write tools reference projects and tags by name or ID.


๐Ÿ” Tool Examples

Filter tasks (list_tasks):

{
  "query": {
    "flagged": true,
    "due": "soon",
    "availability": "remaining",
    "include": ["notes"],
    "limit": 10
  }
}

Create a task (add_tasks):

{
  "items": [{
    "name": "Review Q3 roadmap",
    "parent": {"project": {"name": "Work Projects"}},
    "tags": ["Planning"],
    "dueDate": "2026-03-15T17:00:00",
    "flagged": true,
    "estimatedMinutes": 30,
    "note": "Focus on v1.3-v1.5 milestones"
  }]
}

Edit with patch semantics (edit_tasks):

{
  "items": [{
    "id": "oRx3bL_UYq7",
    "addTags": ["Urgent"],
    "dueDate": null,
    "moveTo": {"ending": {"project": {"name": "Work Projects"}}}
  }]
}

Patch semantics cheat sheet:

Input Meaning
Field omitted No change
Field set to null Clear the value
Field set to a value Update

๐Ÿ—บ๏ธ Roadmap

Version Focus
v1.0 Foundation โ€” read tools, three-layer arch, test suite โœ…
v1.1 Performance โ€” SQLite caching, 30โ€“60x speedup โœ…
v1.2 Writes & Lookups โ€” add/edit tasks, get-by-ID โœ…
v1.2.1 Architectural Cleanup โ€” contracts, service refactor, golden master tests โœ…
v1.2.2 FastMCP v3 Migration โœ…
v1.2.3 Repetition Rule Write Support โœ…
v1.3 Read Tools โ€” SQL filtering, list/count, 5 new tools โœ…
v1.3.1 First-Class References โ€” name resolution, $inbox, rich refs โœ…
v1.3.2 Date Filtering โ€” 7 dimensions, shortcuts, calendar math โœ…
v1.3.3 Task Ordering โ€” dotted notation, outline order โœ…
v1.4 Response Shaping & Batch Processing ๐Ÿ”ง
v1.5 UI & Perspectives โ€” perspective switching, deep links
v1.6 Production Hardening โ€” retry, crash recovery, serial execution

๐Ÿ”— Links


๐Ÿ“„ License

Proprietary โ€” all rights reserved. Free to use, not to redistribute. License under review.

๐Ÿค Contributing

See CONTRIBUTING.md for guidelines. In short: fork, branch, test, PR.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnifocus_operator-1.4.tar.gz (199.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnifocus_operator-1.4-py3-none-any.whl (150.6 kB view details)

Uploaded Python 3

File details

Details for the file omnifocus_operator-1.4.tar.gz.

File metadata

  • Download URL: omnifocus_operator-1.4.tar.gz
  • Upload date:
  • Size: 199.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnifocus_operator-1.4.tar.gz
Algorithm Hash digest
SHA256 893290325ddeb378405433eae688e4e1c1f744a4feae5cfc757db3f8896c569c
MD5 4f5de088ced5ff5f49fe8fa671f76aab
BLAKE2b-256 848215852a8adb7b77e25472415a2617fa345b6121fc92c00c118b711262c4b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnifocus_operator-1.4.tar.gz:

Publisher: publish.yml on HelloThisIsFlo/omnifocus-operator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnifocus_operator-1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for omnifocus_operator-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 edf6caaaad1229bbd6f1d44069b2f22721103d39997eb0ec7f509e0b6b69347b
MD5 720fb19d8228894d8f4785011d54a3ae
BLAKE2b-256 5a98b4054931c043c6a1fe9971f490e89ffac35d8ada78a46b17fe11ba3d065a

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnifocus_operator-1.4-py3-none-any.whl:

Publisher: publish.yml on HelloThisIsFlo/omnifocus-operator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page