omnifocus-mcp
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This is an MCP server that allows AI agents and clients to interact with OmniFocus task management projects on macOS. It provides 21 tools to read, create, update, and delete tasks, projects, and tags.
Security Assessment
Overall Risk: Low. The automated code scan checked 12 files and found no dangerous patterns, hardcoded secrets, or requests for risky permissions. Because this tool integrates with OmniFocus, it inherently accesses your local task and project data. It relies on local automation (such as AppleScript/Shortcuts) rather than making external network requests to transmit your data. No dangerous execution vulnerabilities were detected.
Quality Assessment
The project demonstrates exceptionally high engineering standards for a relatively new tool. It includes strong documentation, a CI pipeline, and an impressive 93% code coverage backed by over 1,200 tests (unit, integration, and end-to-end). It is licensed under the permissive MIT license and was updated very recently. The only drawback is its low community visibility. With only 5 GitHub stars, it hasn't been broadly vetted by a large user base yet, though the developer's rigorous testing helps offset this concern.
Verdict
Safe to use.
MCP server for OmniFocus integration - enables Claude and other MCP clients to interact with OmniFocus projects
OmniFocus MCP Server
A comprehensive, fast, reliable, and agent-friendly MCP server for OmniFocus on macOS.
Why This Server
Comprehensive
21 tools covering projects, tasks, folders, tags, perspectives, and focus. Full CRUD with unified batch operations (Pydantic model inputs), 20+ filter types on task and project queries, and date management including recurrence (RRULE read/write).
Fast
Sub-second reads on filtered queries, even with hundreds of tasks in the database.
| Operation | Time | Items | Database |
|---|---|---|---|
| Get flagged tasks | 0.66s | 14 | 202 tasks |
| Get overdue tasks | 0.69s | 8 | 202 tasks |
| Get next tasks | 0.66s | 27 | 202 tasks |
| Get inbox tasks | 0.64s | 10 | 202 tasks |
| Search tasks by keyword | 1.07s | 37 | 202 tasks |
| Get all tasks (unfiltered) | 2.20s | 202 | 202 tasks |
| Get all projects | 0.57s | 35 | 35 projects |
| Create or update a task | 0.9s | — | — |
Full profiling data: PERFORMANCE_PROFILING.md
Reliable
93% code coverage from 1027 unit tests. 192 integration and E2E tests run against real OmniFocus, plus 5 protocol-level smoke tests verifying the full MCP JSON-RPC transport. Tests cover task, project, and tag lifecycles, filtering, hierarchy, dates, recurrence, and review workflows.
Agent-Friendly
73-scenario blind eval suite with frontier models scoring 100% and popular open-weight models scoring 90-94% (full results). Agents that have never seen OmniFocus can correctly use every tool from descriptions alone. Scenarios cover tool selection, parameter usage, multi-step workflows, date semantics, recurrence, tag behavior, task movement, text search, and safety-critical operations (drop vs delete, destructive action guardrails). Server instructions teach GTD concepts (task states, project types, sequential dependencies, review cycles) so agents make informed decisions, not just API calls.
Tools (21)
Projects (6)
- get_projects — filter by ID, query, status; includes dates, review info, task health, stalled detection
- create_project — with folder placement, dates, review interval, project type
- update_project — all properties: name, note, status, dates, folder, review settings
- update_projects — batch update (status, dates, folder, review settings)
- delete_projects — single or batch
- reorder_project — position relative to siblings within a folder (before/after)
Tasks (6)
- get_tasks — 14 filter types: by ID, project, parent, tags, status, dates, flags, text search, inbox
- create_task — with dates, tags, flags, estimated time, parent task, sequential
- update_task — all properties including recurrence (RRULE), tags (replace/add/remove), hierarchy
- update_tasks — batch update (dates, flags, tags, status, project)
- delete_tasks — single or batch
- reorder_task — position relative to siblings (before/after)
Folders (3)
- get_folders — hierarchy with paths
- create_folder — with optional parent
- update_folder — rename or move to different parent
Tags (4)
- get_tags — with status and mutual exclusivity info
- create_tag — with parent nesting and exclusivity
- update_tag — name, status, exclusivity
- delete_tags — single or batch
Perspectives (2)
- get_perspectives — list with type info
- switch_perspective — navigate to perspective
Navigation (2)
- set_focus — focus on projects/folders or clear
- get_focus — current focus state
Prerequisites
- macOS with OmniFocus installed
- Python 3.10+
- uv package manager
Installation
git clone https://github.com/s-morgan-jeffries/omnifocus-mcp.git
cd omnifocus-mcp
git checkout v0.13.2 # Latest stable release
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync --dev
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"omnifocus": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/omnifocus-mcp",
"run",
"omnifocus-mcp"
]
}
}
}
Other MCP Clients
python -m omnifocus_mcp.server_fastmcp
Communicates via stdin/stdout using the MCP protocol.
Permissions
macOS will prompt for:
- Accessibility access (to control OmniFocus via AppleScript)
- Automation permissions for OmniFocus
Contributing
Bug reports and feature requests are welcome via GitHub Issues.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found