关于 Omnifocus
Omnifocus 是 macOS 上通过 OmniFocus 原生 Omni Automation API 操作应用的 MCP 服务,工具覆盖任务与项目管理、通知、附件、分析和数据导出。
主要功能
- 01创建、更新和完成任务
- 02整理项目和文件夹
- 03管理子任务与标签
- 04添加和查看通知
- 05关联和管理附件
- 06分析活动并导出数据
适用场景
- 01查看到期、逾期或已标记任务
- 02整理项目和嵌套任务列表
- 03分析效率及重复任务规律
- 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
脚本执行流程:
- 工具调用
omniAutomation.buildScript(template, params)— 使用经过JSON.stringify转义的值替换{{placeholders}} wrapScript()会将脚本包装在 try/catch IIFE 中- 再次使用
JSON.stringify转义包装后的脚本,并将其传递给app.evaluateJavascript() osascript -l JavaScript运行外层 JXA 包装器- 解析 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
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。