项目简介

OmniFocus MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端应用,专为大型语言模型 (LLM) 客户端设计。它将 macOS 上的 OmniFocus 任务管理应用封装成一系列可供 LLM 调用的工具,使 LLM 能够以自然语言理解并执行 OmniFocus 中的任务、项目、文件夹、标签和视角管理操作。

主要功能点

  • 项目管理: 提供获取、创建、更新、批量更新和删除 OmniFocus 项目的功能,支持按 ID、查询、状态、笔记、文件夹位置和审核周期等进行灵活操作。
  • 任务管理: 实现对 OmniFocus 任务的全面控制,包括获取、创建、更新、批量更新和删除任务。支持按 ID、项目、父任务、标签、状态、日期、优先级、文本内容以及收件箱状态进行精细过滤和管理,甚至可以调整任务在列表中的顺序。
  • 组织管理: 能够获取所有文件夹的层级结构,并支持创建新文件夹(包括嵌套在现有文件夹中)。
  • 标签管理: 提供获取所有可用标签列表的功能。
  • 视角管理 (OmniFocus Pro): 允许列出所有自定义视角,并支持根据名称切换到不同的视角视图。

安装步骤

  1. 前提条件:

    • macOS 操作系统
    • 已安装并运行 OmniFocus 应用
    • Python 3.10 或更高版本
    • 推荐使用 'uv' 包管理器,或使用 'pip'。
  2. 克隆仓库: 打开您的终端,执行以下命令克隆项目仓库并进入其目录:

    git clone https://github.com/s-morgan-jeffries/omnifocus-mcp.git
    cd omnifocus-mcp

    为了确保稳定性,建议切换到最新的稳定版本标签,例如 'v0.6.4':

    git checkout v0.6.4
  3. 安装依赖 (推荐使用 UV): 如果您的系统尚未安装 'uv',可以通过以下命令安装:

    curl -LsSf https://astral.sh/uv/install.sh | sh

    然后,安装项目所需的所有依赖:

    uv pip install -e .
  4. 或者使用 Pip 安装: 如果您更喜欢使用 'pip',可以先创建一个 Python 虚拟环境,然后安装依赖:

    python3 -m venv venv
    source venv/bin/activate
    pip install -e .

    (注意:'pip install -e ".[dev]"' 包含开发和测试依赖,对于普通使用,'pip install -e .' 即可。)

服务器配置 (适用于 MCP 客户端)

本 OmniFocus MCP 服务器通过标准输入/输出 (stdin/stdout) 使用 MCP 协议与客户端通信。要将此服务器集成到 MCP 客户端(例如 Claude Desktop),您需要将其启动命令添加到客户端的配置文件中。

以下是 Claude Desktop 的配置示例,您通常可以在 '~/Library/Application Support/Claude/claude_desktop_config.json' 文件中找到或创建它:

{
  "mcpServers": {
    "omnifocus": { // "omnifocus" 是此 MCP 服务器在客户端中显示的名称,您可以自定义。
      "command": "uv", // 启动服务器的可执行文件或命令。如果您使用 uv,通常就是 "uv"。
                       // 如果您直接使用 Python 虚拟环境,这里应是 Python 解释器的绝对路径,
                       // 例如:"/absolute/path/to/omnifocus-mcp/venv/bin/python"。
      "args": [
        "--directory",
        "/absolute/path/to/omnifocus-mcp", // 请 **务必** 替换为 'omnifocus-mcp' 仓库在您系统中的 **绝对路径**。
                                          // 例如:"/Users/YourUser/Projects/omnifocus-mcp"。
        "run",
        "omnifocus-mcp" // 这是 'uv' 命令用于启动 MCP 服务器的入口点。
      ]
    }
  }
}

或者,如果您直接使用 Python 虚拟环境启动服务器:

{
  "mcpServers": {
    "omnifocus": {
      "command": "/absolute/path/to/omnifocus-mcp/venv/bin/python", // 替换为虚拟环境中 Python 解释器的绝对路径。
      "args": [
        "-m",
        "omnifocus_mcp.server_fastmcp" // 指定要作为模块运行的 MCP 服务器文件。
      ]
    }
  }
}

配置完成后,请务必重启您的 MCP 客户端 (例如 Claude Desktop) 以加载新的服务器配置。

基本使用方法

一旦服务器配置并被 MCP 客户端成功识别,您就可以通过自然语言向 LLM 发出指令,让它与 OmniFocus 交互:

  • 项目管理:

    • "展示我所有的 OmniFocus 项目。"
    • "在我的 '工作' 文件夹中创建一个名为 'Q1 规划' 的新项目。"
    • "这个项目有哪些任务待审核?"
  • 任务管理:

    • "添加一个任务 '发送客户报告',截止日期是下周三,并标记为重要。"
    • "显示我所有逾期未完成的任务。"
    • "将任务 task-001 标记为已完成。"
    • "将任务 task-002 移动到我的 '个人' 项目下。"
    • "为任务 task-003 设置预估时间为 60 分钟。"
  • 收件箱与快速捕获:

    • "将 '打电话给医生' 添加到我的收件箱。"
    • "我的收件箱里有什么任务?"
  • 组织与标签:

    • "为任务 task-001 添加 '紧急' 标签。"
    • "创建一个名为 '个人目标' 的新文件夹,放在 '生活' 文件夹内。"
  • 视角切换:

    • "切换到我的 '每日工作清单' 视角。"
    • "我有哪些自定义视角可用?"

信息

分类

桌面与硬件