Skip to main content
Glama
someposer
by someposer
README.md
# 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

B3.4/5.0

Scored across 12 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues