OmniFocus MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_database_summaryA | Get a summary of the OmniFocus database including counts of inbox items, projects, tags, folders, available/due-soon/overdue/flagged tasks |
| searchB | Search across all OmniFocus items (tasks, projects, folders, tags) by name or note content |
| dump_databaseA | Dump the entire OmniFocus database including inbox, projects, folders, tags, and perspectives in a single call. Essential for getting full context. |
| save_databaseA | Explicitly save the OmniFocus database to disk |
| sync_databaseA | Trigger an OmniFocus sync to push local changes to OmniSync and pull updates from other devices. CALL THIS ONCE at the end of any session that mutated data — especially after batch_create_tasks, batch_complete_tasks, batch_delete_tasks, or any sequence of multiple create/update/delete/move operations. Do NOT call after every individual mutation; sync once at the end of the chain. Returns immediately while sync runs in the background. |
| list_tasksA | List tasks from OmniFocus with optional filters for status, flags, tags, projects, date ranges, and text search |
| get_taskA | Get detailed information about a specific task by its ID, optionally including subtask hierarchy |
| create_taskA | Create a new task in OmniFocus. By default creates in inbox; specify projectId or projectName to add to a project. |
| update_taskB | Update properties of an existing task |
| complete_taskB | Mark a task as completed |
| uncomplete_taskA | Mark a completed task as incomplete (re-open it) |
| drop_taskA | Mark a task as dropped (cancelled) |
| delete_taskA | Permanently delete a task from OmniFocus |
| move_tasksA | Move one or more tasks to a different project or parent task. Omit destination to move to inbox. |
| duplicate_tasksA | Duplicate one or more tasks, optionally into a different project |
| set_task_tagsB | Set, add, or remove tags on a task |
| add_task_notificationC | Add a notification/reminder to a task |
| get_inbox_tasksA | Get all tasks currently in the OmniFocus inbox (not yet assigned to a project) |
| get_flagged_tasksC | Get all available flagged tasks |
| get_today_completed_tasksB | Get all tasks completed today |
| append_task_noteB | Append text to an existing task's note |
| batch_create_tasksB | Create multiple tasks at once, with support for subtask hierarchies. Much more efficient than creating tasks one by one. |
| list_task_notificationsB | List all notifications/reminders on a task |
| remove_task_notificationB | Remove a specific notification from a task |
| convert_task_to_projectB | Convert an existing task into a new project, preserving subtasks |
| batch_delete_tasksA | Delete multiple tasks at once. More efficient than deleting one by one. |
| batch_complete_tasksB | Complete multiple tasks at once. More efficient than completing one by one. |
| get_task_countA | Get count of tasks matching filters without fetching full data. Faster than list_tasks when you only need the count. |
| list_projectsB | List projects from OmniFocus with optional filters for status, folder, and text search |
| get_projectA | Get detailed information about a specific project by ID or name |
| create_projectB | Create a new project in OmniFocus |
| update_projectB | Update properties of an existing project |
| complete_projectC | Mark a project as completed (done) |
| drop_projectC | Mark a project as dropped (cancelled) |
| move_projectB | Move a project to a different folder |
| delete_projectB | Permanently delete a project from OmniFocus |
| get_review_queueA | Get projects that are due for review |
| mark_reviewedB | Mark a project as reviewed, advancing its next review date |
| get_project_tasksB | Get all tasks belonging to a specific project |
| list_foldersB | List all folders in OmniFocus |
| get_folderA | Get detailed information about a folder including its child folders and projects |
| create_folderB | Create a new folder in OmniFocus |
| update_folderB | Update a folder's properties |
| delete_folderB | Permanently delete a folder from OmniFocus |
| list_tagsA | List all tags in OmniFocus |
| get_tagB | Get detailed information about a tag including its child tags |
| create_tagB | Create a new tag in OmniFocus |
| update_tagB | Update a tag's properties |
| delete_tagB | Permanently delete a tag from OmniFocus |
| list_perspectivesA | List custom perspectives in OmniFocus. Built-in perspectives (Inbox, Projects, Tags, Forecast, Flagged, Review, Nearby) are not enumerable via the API — use dedicated tools instead (get_inbox_tasks, get_flagged_tasks, get_review_queue, list_projects, list_tags, or list_tasks with date filters for Forecast). |
| get_perspective_tasksA | Get tasks shown in a specific custom perspective. Built-in perspectives (Inbox, Forecast, etc.) are not supported — use dedicated tools instead. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| weekly-review | Guided weekly review of OmniFocus projects and tasks |
| inbox-processing | Process OmniFocus inbox using GTD methodology |
| daily-planning | Plan today's tasks using OmniFocus data |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| database-summary | OmniFocus database summary with counts |
| perspectives | List of all OmniFocus perspectives |
TDQS
Scored across 51 tools
Each tool targets a specific action on a specific entity (task, project, folder, tag, notification) with clear descriptions. Even related tools like 'complete_task' and 'batch_complete_tasks' are easily distinguished by scope and intent.
All tool names follow a consistent verb_noun pattern (e.g., create_task, delete_folder, sync_database) with no mixing of styles. The naming is predictable and clear.
With 51 tools, the set is extremely large. While the domain (OmniFocus) is complex, many tools are batch variants or duplicate operations (e.g., complete_task and batch_complete_tasks). This exceeds typical well-scoped tool sets and may overwhelm agents.
The tool set covers all major CRUD operations for tasks, projects, folders, and tags, plus batch operations, notifications, tags, search, sync, and review. There are no obvious gaps for managing an OmniFocus database.