MCP OmniFocus
# mcp-omnifocus
A Model Context Protocol (MCP) server for controlling [OmniFocus](https://www.omnigroup.com/omnifocus) from VS Code, the command line, or any MCP-compatible client. This tool enables automation and management of your OmniFocus tasks, projects, and tags using natural language and programmable interfaces.
## Features
- List all tasks, projects, tags, and perspectives in OmniFocus
- Create, update, complete, drop, and activate tasks
- Assign tasks to projects and tags
- Process and organize your GTD inbox
- Integrate with VS Code and other MCP clients
## Requirements
- macOS with [OmniFocus](https://www.omnigroup.com/omnifocus) installed
- Python 3.12+
- [uv](https://github.com/astral-sh/uv) for fast Python package management
## Installation
Clone the repository and install dependencies using `uv`:
```sh
git clone https://github.com/YOUR_USERNAME/mcp-omnifocus.git
cd mcp-omnifocus
uv venv
uv pip install -e .
```
## Usage
Add the following to your mcp configuration:
```json
{
"servers": {
"mcp-omnifocus": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/somposer/mcp-omnifocus",
"mcp-omnifocus",
]
}
}
}
```
## Capabilities
The MCP OmniFocus server exposes the following tools, prompts, and resources:
- `list_perspectives`: List all perspectives
- `list_projects`: List all projects
- `list_tags`: List all tags
- `list_tasks`: List all tasks (with full hierarchy)
- `list_inbox`: List all tasks in the Inbox
- `create_task`: Create a new task
- `update_task`: Update a task (name, project, tags, note, defer/due date, flagged)
- `complete_task`: Mark a task as complete
- `drop_task`: Drop a task
- `activate_task`: Reactivate a dropped or completed task
- `process_inbox`: A reusable prompt for processing your GTD inbox
## Development
For development change your mcp.json to the following:
```json
{
"servers": {
"mcp-omnifocus": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--project",
"${workspaceFolder}/",
"python",
"-m",
"mcp_omnifocus",
],
"dev": {
"watch": "src/**/*.py",
"debug": {
"type": "python"
}
}
}
}
}
```
## License
MIT
TDQS
Scored across 12 tools
Most tools have distinct purposes, but there is some overlap between 'list_tasks' and the more specific 'list_tasks_by_project' and 'list_tasks_by_tag', which could cause confusion if an agent needs to choose between general and filtered listing. However, the descriptions clarify the differences, preventing major misselection.
All tool names follow a consistent verb_noun pattern with snake_case, such as 'create_task', 'list_inbox', and 'update_task'. This predictability makes the tool set easy to navigate and understand at a glance.
With 12 tools, the server is well-scoped for managing OmniFocus tasks, covering key operations like create, update, complete, and list across inbox, projects, and tags. Each tool serves a clear purpose without redundancy, fitting typical task management workflows.
The tool set provides strong CRUD coverage for tasks (create, update, complete, drop, activate) and comprehensive listing options (inbox, projects, tags, perspectives). A minor gap is the lack of direct project or tag management tools (e.g., create_project), but agents can still handle core task operations effectively.