mcpField
O
Omnifocus

Omnifocus

本地服务
github.com/alexhannaonline数据与分析039 周前更新

关于 Omnifocus

Omnifocus 是 macOS 上通过 OmniFocus 原生 Omni Automation API 操作应用的 MCP 服务,工具覆盖任务与项目管理、通知、附件、分析和数据导出。

主要功能

  1. 01创建、更新和完成任务
  2. 02整理项目和文件夹
  3. 03管理子任务与标签
  4. 04添加和查看通知
  5. 05关联和管理附件
  6. 06分析活动并导出数据

适用场景

  1. 01查看到期、逾期或已标记任务
  2. 02整理项目和嵌套任务列表
  3. 03分析效率及重复任务规律
  4. 04导出任务和项目信息

MCP 相关

向 MCP 客户端提供 41 个工具,用于处理 OmniFocus 任务、项目、文件夹、标签、通知、附件、分析和导出。它通过 Omni Automation 操作,而非直接访问数据库。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

OmniFocus MCP 服务

一个通过 Omni Automation 为 AI 助手提供完整 OmniFocus 访问能力的 MCP 服务。提供 41 个工具,涵盖任务、项目、文件夹、标签、子任务层级、通知、附件、分析和数据导出。

工作原理

该服务运行 osascript -l JavaScript 来调用 app.evaluateJavascript(),在 OmniFocus 原生 Omni Automation 引擎中执行脚本。不直接访问数据库——所有交互都通过官方 API 进行。

安装

git clone https://github.com/alexhanna/omnifocus-mcp.git
cd omnifocus-mcp
npm install
npm run build
MCP 客户端配置

将该服务添加到 MCP 客户端的配置中。服务条目如下:

{
  "mcpServers": {
    "omnifocus": {
      "command": "node",
      "args": ["/path/to/omnifocus-mcp/dist/index.js"],
      "env": {
        "LOG_LEVEL": "info"
      }
    }
  }
}

配置文件位置取决于客户端:

  • Claude Desktop:~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Code:~/.claude/settings.json 或项目中的 .mcp.json
  • 其他 MCP 客户端:请查阅客户端文档,了解服务配置方法
要求
  • macOS(运行 osascript 所必需)
  • 已安装 OmniFocus 4.6+
  • Node.js 18+
  • OmniFocus 的 macOS 自动化权限(首次使用时授予——请参阅 docs/PERMISSIONS.md)

工具

任务(7 个工具)
工具描述
list_tasks按完成状态、标记、项目、标签、日期、搜索、收件箱和可用状态筛选。缓存 30 秒。
get_task_count统计符合条件的任务数量,不返回数据。
todays_agenda获取今天到期、已逾期或已标记的任务。
create_task创建任务,可设置名称、备注、标记、日期、标签、项目和预计用时。
update_task修改任意任务属性。在项目之间移动任务。
complete_task将任务标记为已完成。
delete_task删除任务。
项目(5 个工具)
工具描述
list_projects按状态、标记和文件夹筛选。缓存 5 分钟。
create_project创建项目并指定文件夹位置(如有需要会自动创建文件夹)。
update_project修改属性,在文件夹之间移动项目。
complete_project将项目标记为已完成(可选择同时完成所有任务)。
delete_project删除项目。
文件夹(6 个工具)
工具描述
list_folders按嵌套深度和状态筛选并列出文件夹。
create_folder创建文件夹,可选择嵌套。
update_folder重命名、更改状态。
delete_folder删除文件夹(可选择先移动其中的内容)。
get_folder_contents列出文件夹中的项目和子文件夹。
move_to_folder将项目或文件夹移入其他文件夹。
任务层级(5 个工具)
工具描述
get_task_hierarchy获取任务及其完整子任务树(可配置深度)。
create_subtask创建子任务并控制其位置。
move_task将任务移至其他父任务下,或移至项目根目录。
set_task_ordering设置顺序/并行模式以及 completedByChildren。
list_subtasks列出任务的直接子任务。
标签(2 个工具)
工具描述
list_tags列出所有标签。可选提供(开销较大的)使用统计信息。
manage_tags创建、重命名、删除或合并标签。支持通过 parentTag 创建嵌套标签。
通知(4 个工具)
工具描述
list_notifications列出任务上的所有通知。
add_notification添加绝对时间(日期)或相对时间(相对于到期时间的偏移量)通知。
remove_notification按索引移除通知。
clear_notifications移除任务的所有通知。
附件(4 个工具)
工具描述
list_attachments列出任务上的附件元数据和关联文件。
add_linked_file将 file:// 路径关联到任务。
remove_attachment按索引移除嵌入式附件。
remove_linked_file取消关联文件引用。
分析(3 个工具)
工具描述
get_productivity_stats完成率、时间分布。按项目/标签/日/周分组。
get_task_velocity按日/周/月统计任务吞吐量。
analyze_overdue_tasks按项目/标签/逾期时长/优先级对逾期模式进行分组。
周期性任务(2 个工具)
工具描述
analyze_recurring_tasks列出周期性任务及其频率和到期日期。
get_recurring_patterns周期性任务频率的统计数据。
导出(3 个工具)
工具描述
export_tasks将任务导出为 JSON 或 CSV,并选择字段。
export_projects导出项目,可选择包含统计数据。
bulk_export将所有数据(任务、项目、标签)导出到文件。

架构

src/
├── cache/           # TTL-based caching (30s tasks, 5min projects, 1h analytics)
├── omnifocus/
│   ├── OmniAutomation.ts   # Bridge: osascript → evaluateJavascript()
│   ├── scripts/             # Omni Automation script templates
│   └── types.ts             # Type definitions
├── tools/           # 41 MCP tools in 10 domain directories
│   ├── tasks/       ├── projects/    ├── folders/
│   ├── hierarchy/   ├── tags/        ├── notifications/
│   ├── attachments/ ├── analytics/   ├── recurring/
│   └── export/
├── utils/           # Logging, permission checking
└── index.ts         # Server entry point

脚本执行流程:

  1. 工具调用 omniAutomation.buildScript(template, params) — 使用经过 JSON.stringify 转义的值替换 {{placeholders}}
  2. wrapScript() 会将脚本包装在 try/catch IIFE 中
  3. 再次使用 JSON.stringify 转义包装后的脚本,并将其传递给 app.evaluateJavascript()
  4. osascript -l JavaScript 运行外层 JXA 包装器
  5. 解析 JSON 结果,并通过 MCP 返回

已知限制

  • 无法创建周期性任务 — 可以读取周期性模式,但无法创建重复规则
  • 无法管理视角 — Omni Automation API 对视角仅提供只读权限
  • 无法使用基于位置的标签 — 必须在 OmniFocus UI 中手动设置
  • add_linked_file 只接受 file:// URL — OmniFocus 会拒绝 http/https
  • MCP 服务会缓存构建结果 — Claude Code 必须重启才能加载 npm run build 的更改
  • 无法通过自动化管理审阅/视角

开发

npm run build     # Compile TypeScript
npm run dev       # Watch mode
npm test          # Unit tests (vitest)
npm run typecheck # Type check without building

许可证

MIT — 参见 LICENSE

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。