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+ PyPI Tests 2558 Coverage 97% macOS only

Production-grade MCP server exposing OmniFocus as structured task infrastructure for AI agents. Agent-first design, SQLite-cached performance, 2,558 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,558 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, parent subtree, search โ€” with pagination, field selection, and presence-flag derivation
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, parallel/sequential, completes-with-children
edit_tasks Patch semantics โ€” update fields, move tasks, complete/drop, manage tags, repetition rules, and hierarchy properties

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": "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",
    "dueDate": null,
    "actions": {
      "tags": {"add": ["Urgent"]},
      "move": {"ending": "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.4.1 Task Properties & Subtree โ€” presence flags, auto-complete, parallel/sequential, parent filter โœ…
v1.4.2 UNTIL Format Hotfix โ€” parser accepts RFC 5545 DATE form; builder aligns with OmniFocus UI โœ…
v1.5 Project Writes โ€” add/edit projects, review marking
v1.6 UI & Perspectives โ€” perspective switching, deep links
v1.7 Smart Perspective Content โ€” perspective-aware response shapes
v1.8 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.2.tar.gz (219.5 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.2-py3-none-any.whl (170.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: omnifocus_operator-1.4.2.tar.gz
  • Upload date:
  • Size: 219.5 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.2.tar.gz
Algorithm Hash digest
SHA256 3e10cc7b725f23c676ccadfba650d2a1011c08e07e817981856eaddc33177ab6
MD5 89bc69333c50f48bfe459bfc0de28231
BLAKE2b-256 b9e3fb9f9a57fddda17c09b8ea7dc121c54abb41e381a7fe98048b1e8be4c5b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnifocus_operator-1.4.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for omnifocus_operator-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b4a2de4190e01f41908bdee79f28ff6a6ca4e00ded1ff78af3e71c6839c7f733
MD5 6f529dffe26c3705ec3bb673191b2926
BLAKE2b-256 8b22cf2c89497d569e3c0bf52bbf7ea1e01570b847fd5c3eae4713173614634c

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnifocus_operator-1.4.2-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