A powerful OmniFocus integration for Claude Desktop that enables advanced task management using GTD (Getting Things Done) methodology.
- Add Tasks: Create tasks with notes, projects, due dates, defer dates, and flags
- Inbox Management: View and process tasks in your OmniFocus inbox
- Today's Tasks: See all tasks due today at a glance
- Complete Tasks: Mark tasks as complete by name
- Weekly Review: Get a comprehensive summary for your GTD weekly review
- Search Tasks: Search across all projects, contexts, and notes
- Edit Tasks: Modify any task property including defer dates and tags
- Batch Task Creation: Create multiple tasks with subtasks in one command
- Recurring Tasks: Create tasks with daily, weekly, monthly, or custom repeat patterns
- List Tags: View all tags with hierarchy
- Create Tags: Create tags, optionally nested under a parent
- Delete Tags: Remove tags from OmniFocus
- Tag Tasks: Add or remove tags on existing tasks
- Tags on Creation: Specify tags when adding tasks, batch-creating tasks, or editing tasks
- List Projects: View all active projects with task counts
- Deferred Tasks: See tasks that aren't available yet
- Flagged Tasks: Quick access to all flagged items
- Overdue Tasks: Track tasks past their due date
- macOS 10.15 (Catalina) or later
- OmniFocus 3 or later
- Claude Desktop app
- Node.js 14+ (for development only)
- Download the latest
omnifocus-gtd.mcpbfrom the Releases page - Open Claude Desktop
- Navigate to Extensions settings
- Drag and drop the
.mcpbfile onto the Claude Desktop window - Restart Claude Desktop
- The first time you use an OmniFocus tool, macOS will prompt you to grant
nodepermission to control OmniFocus - click Allow
# Clone the repository
git clone https://github.com/geoffdavis/omnifocus-claude-extension.git
cd omnifocus-claude-extension
# Install dependencies
npm install
# Build the extension
npm run build
# The extension will be created at dist/omnifocus-gtd.mcpb"Add task 'Review Q3 reports' due Friday to Work project, defer until Wednesday"
"Search for all tasks about 'budget'"
"Edit 'Team meeting' to be due tomorrow at 2pm"
"Complete the task about reviewing reports"
"Create project plan: Research phase|-Literature review|-Market analysis|Development|-Prototype|-Testing|Launch"
Note: Use | to separate tasks and - prefix for subtasks
"Create weekly recurring task 'Process inbox' due every Sunday"
"Add monthly recurring 'Review finances' on the 15th"
"List all my tags"
"Create a tag called 'Urgent'"
"Create a 'Home' tag under 'Locations'"
"Add tag 'Priority' to my 'Review reports' task"
"Remove tag 'Waiting' from 'Follow up with client'"
"Add task 'Fix login bug' with tags Priority, Computer"
"Edit 'Fix login bug' and set tags to Urgent, Computer"
"Show me my flagged tasks"
"List all overdue tasks"
"What tasks are deferred?"
"Show all projects with task counts"
"Give me a weekly review"
| Command | Description | Example |
|---|---|---|
add_task |
Add a task with full properties | "Add task to buy milk due tomorrow, defer until morning" |
search_tasks |
Search across all tasks | "Search for budget tasks" |
edit_task |
Modify existing task | "Change due date of 'Report' to Friday" |
batch_add_tasks |
Create multiple tasks | "Add tasks: Task1|Task2|-Subtask" |
create_recurring_task |
Set up repeating task | "Create daily task 'Review email'" |
list_inbox |
Show inbox tasks | "Show my inbox" |
today_tasks |
List due today | "What's due today?" |
list_projects |
Show all projects | "List projects with counts" |
list_deferred_tasks |
Show deferred items | "What tasks are deferred?" |
list_flagged_tasks |
Show flagged items | "Show flagged tasks" |
list_overdue_tasks |
Show overdue items | "What's overdue?" |
complete_task |
Mark as complete | "Complete budget review" |
weekly_review |
GTD weekly review | "Show weekly review" |
list_tags |
Show all tags with hierarchy | "List my tags" |
create_tag |
Create a new tag | "Create tag 'Urgent'" |
delete_tag |
Delete a tag | "Delete the 'Old' tag" |
add_tag_to_task |
Add a tag to a task | "Tag 'Report' with 'Priority'" |
remove_tag_from_task |
Remove a tag from a task | "Remove 'Waiting' tag from 'Report'" |
omnifocus-claude-extension/
├── src/
│ ├── server/
│ │ └── index.js # MCP server (JSON-RPC 2.0)
│ ├── scripts/
│ │ ├── enhanced/ # Advanced AppleScript implementations
│ │ │ ├── search_tasks.applescript
│ │ │ ├── edit_task.applescript
│ │ │ ├── batch_add_tasks.applescript
│ │ │ ├── create_recurring_task.applescript
│ │ │ ├── list_projects.applescript
│ │ │ ├── list_deferred_tasks.applescript
│ │ │ ├── list_flagged_tasks.applescript
│ │ │ ├── list_overdue_tasks.applescript
│ │ │ ├── list_tags.applescript
│ │ │ ├── create_tag.applescript
│ │ │ ├── delete_tag.applescript
│ │ │ ├── add_tag_to_task.applescript
│ │ │ └── remove_tag_from_task.applescript
│ │ ├── add_task.applescript
│ │ ├── complete_task.applescript
│ │ ├── list_inbox.applescript
│ │ ├── today_tasks.applescript
│ │ └── weekly_review.applescript
│ └── manifest-template.json # MCPB v0.3 manifest template
├── build.js # Build script
├── dist/
│ └── omnifocus-gtd.mcpb # Built extension
└── tests/
# Build the MCPB extension
npm run build
# Clean and rebuild
npm run rebuild
# Build and validate
npm run dev
# Run tests
npm test
# Validate the built extension
npm run validate- Create AppleScript in
src/scripts/enhanced/ - Add tool definition to
src/server/index.js - Implement handler in the server's tool execution logic
- Test with
node test-server.js - Rebuild and validate:
npm run dev
The extension uses a Model Context Protocol (MCP) server that:
- Receives commands from Claude Desktop via JSON-RPC 2.0 over stdio
- Routes to the appropriate AppleScript file
- Executes AppleScript via
osascriptwith proper parameter handling - Returns formatted results to Claude
This is the most common issue. Claude Desktop runs the extension via node, which needs macOS Automation permission for OmniFocus.
First install: macOS should show a permission dialog the first time you use an OmniFocus tool. Click Allow.
If the dialog doesn't appear or you accidentally denied it:
- Reset Apple Events permissions:
tccutil reset AppleEvents
- Restart Claude Desktop
- Use any OmniFocus tool - the permission dialog should appear
- Click Allow
You can verify the permission in System Settings > Privacy & Security > Automation - look for node with OmniFocus enabled.
- Check Claude Desktop logs:
~/Library/Logs/Claude/ - Ensure OmniFocus is installed and running
- Try reinstalling the extension
- Ensure OmniFocus default document is open
- Check that you're not in a filtered view
| Issue | Solution |
|---|---|
| "Not authorized" (-1743) | Run tccutil reset AppleEvents and restart Claude Desktop |
| "OmniFocus not found" | Ensure OmniFocus is in /Applications |
| "No tasks found" | Check search terms and task availability |
| "Multiple matches" | Be more specific in task names |
| "Cannot create recurring" | Ensure OmniFocus Pro features are available |
This extension:
- Only reads and writes to OmniFocus via AppleScript
- Does not store or transmit personal data
- Runs entirely locally on your machine
- Requires explicit user permission for automation
- Open source for full transparency
MIT License - see LICENSE file for details
- OmniFocus by The Omni Group
- Claude Desktop by Anthropic
- GTD methodology by David Allen