OmniFocus任务管理服务器

OmniFocus MCP是一个基于Model Context Protocol的任务管理服务器,提供对OmniFocus中任务、项目、文件夹、标签和视图的完整读写访问,适用于个人和团队的任务自动化管理。

  • by IllyaStarikov
  • TypeScript
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 IllyaStarikov/omnifocus-mcp

使用说明

OmniFocus MCP

✔️ 将提示转化为项目。

功能完成 模型上下文协议 服务器用于 GTD 软件.对任务、项目、文件夹、标签和透视图的完全读/写访问权限--51个工具、2个资源和3个提示。

用途 Omni自动化 (OmniJS)底层,通过JXA和 osascript这就是为什么需要macOS。

目录

示例

在我的“工作”文件夹中创建一个名为“Q3启动”的项目,其中包含设计审查、文案撰写和质量保证的子任务——所有这些任务都将于下周五按顺序分配

“什么逾期了?标记本周到期但尚未标记的任何内容。”

将“网站重新设计”项目中标记为“等待”的所有任务移动到新的“已阻止”项目中

“运行我的每周回顾——浏览过时的项目,处理收件箱,总结需要注意的事项。”

“我标记了多少个‘差事’任务?列出可用的任务。”

安装

克劳德桌面版

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp-server"]
    }
  }
}

克劳德代码

claude mcp add omnifocus -- npx -y omnifocus-mcp-server

或添加到 .claude/settings.json:

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp-server"]
    }
  }
}
Cursor

添加 .cursor/mcp.json 在您的项目或 ~/.cursor/mcp.json 全球地:

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp-server"]
    }
  }
}
Windsurf

添加 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp-server"]
    }
  }
}
Codex CLI

添加 ~/.codex/config.toml:

[mcp_servers.omnifocus]
command = "npx"
args = ["-y", "omnifocus-mcp-server"]
Gemini CLI

添加 ~/.gemini/settings.json:

{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp-server"]
    }
  }
}

需求

  • macOS(OmniFocus仅适用于macOS)
  • OmniFocus 4(或支持Omni Automation的OmniFocus 3)
  • Node.js>=18
  • 在“系统设置”>“隐私和安全”>“自动化”中授予自动化权限

安全

此服务器具有 完全读/写访问 到您的OmniFocus数据库。它可以创建、修改和删除任务、项目、文件夹和标记。只将其连接到您信任的AI客户端和模型。

没有数据离开你的机器——所有的通信都是在本地通过 osascript.

工具

任务(23)

工具 说明
list_tasks 列出带有状态、标志、标签、项目、日期范围和文本搜索筛选器的任务
get_task 按ID获取任务详细信息,可选地包括子任务层次结构
create_task 在收件箱或项目中创建带有标签、日期和重复的任务
update_task 更新任务属性(名称、注释、日期、标志、重复)
complete_task 将任务标记为已完成
uncomplete_task 重新打开已完成的任务
drop_task 将任务标记为已删除(已取消)
delete_task 永久删除任务
move_tasks 将任务移动到其他项目、父任务或收件箱
duplicate_tasks 重复任务,可选地放入不同的项目中
set_task_tags 设置、添加或删除任务上的标记
add_task_notification 添加绝对或适当的相对通知
remove_task_notification 从任务中删除通知
list_task_notifications 列出任务的所有通知
append_task_note 在任务注释中添加文本
get_inbox_tasks 获取所有收件箱任务
get_flagged_tasks 获取所有可用的标记任务
get_today_completed_tasks 今天完成任务
get_task_count 计算与筛选器匹配的任务数——使用而不是 list_tasks 当你只需要一个数字,而不需要完整的任务数据时
convert_task_to_project 将任务转换为项目,保留子任务
batch_create_tasks 使用子任务层次结构一次创建多个任务
batch_complete_tasks 同时完成多项任务
batch_delete_tasks 一次删除多个任务

项目(11)

工具 说明
list_projects 列出带有状态、文件夹和文本搜索筛选器的项目
get_project 按ID或名称获取项目详细信息
create_project 使用文件夹、顺序、SAL、标签和审阅选项创建项目
update_project 更新项目属性
complete_project 将项目标记为已完成
drop_project 将项目标记为已删除(已取消)
move_project 将项目移动到其他文件夹
delete_project 永久删除项目
get_project_tasks 获取项目中的所有任务
get_review_queue 让项目接受审查
mark_reviewed 将项目标记为已审核

文件夹(5)

工具 说明
list_folders 列出所有文件夹
get_folder 获取文件夹详细信息,包括子文件夹和项目
create_folder 创建文件夹(支持嵌套)
update_folder 更新文件夹名称或状态
delete_folder 永久删除文件夹

标签(5)

工具 说明
list_tags 列出所有标签
get_tag 获取标签详细信息,包括子标签
create_tag 创建标签(支持嵌套和allowNextAction)
update_tag 更新标记属性
delete_tag 永久删除标签

观点(2)

工具 说明
list_perspectives 列出透视图(内置和/或自定义)
get_perspective_tasks 以特定视角显示任务

数据库(5)

工具 说明
get_database_summary 获取收件箱项目、标记、文件夹和任务统计信息的计数
search 按名称或注释搜索所有项目(任务、项目、文件夹、标签)
dump_database 在一次调用中转储整个数据库
save_database 显式地将数据库保存到磁盘
sync_database 触发OmniFocus同步,将本地更改推送到OmniSync,并从其他设备获取更新。在一系列突变的末尾调用一次。这 batch_* 工具也接受 sync: true 在批处理完成后自动运行同步。

资源

URI 描述
omnifocus://database/summary 包含计数的数据库摘要
omnifocus://perspectives 所有视角列表

提示

提示 描述
weekly-review 浏览GTD每周审查:检查应审查的项目,处理剩余的收件箱项目,重新评估标记的任务,并获得结构化的摘要。完成时将项目标记为已审查。
inbox-processing 使用GTD方法逐一处理收件箱中的项目——删除不可操作的项目,在2分钟内完成任何事情,并将剩余的项目组织成带有标签和日期的项目。
daily-planning 根据截止日期、标记的项目和你已经完成的工作,为今天制定一个优先计划。显示过期任务并估计您的工作量。

故障排除

“未授权”或OmniFocus没有回应

确保已授予自动化权限。首选 系统设置>隐私和安全>自动化 并确保您的终端应用程序(terminal、iTerm等)可以控制OmniFocus。

重建后未生效的更改

如果您在本地开发,则可能正在运行多个MCP服务器进程(来自Claude Desktop、Claude Code等)。将它们全部杀死并重新启动:

pkill -f "omnifocus-mcp-server"
# or if running from source:
pkill -f "omnifocus/mcp/dist/index.js"

陈旧的 npx 缓存

如果 npx 正在运行旧版本,请清除缓存:

npx clear-npx-cache
# then re-run your MCP client

OmniFocus 3兼容性

如果启用了Omni Automation,OmniFocus 3可以工作。首选 OmniFocus>首选项>常规 并检查“Omni Automation”。某些功能(如某些透视类型)的行为可能不同。

工具调用缓慢

每次工具调用都会运行一个 osascript 与OmniFocus沟通的过程。每次通话通常需要200-500ms。批处理工具(batch_create_tasks, batch_complete_tasks, batch_delete_tasks)对于批量操作来说,比在循环中调用单个工具要快得多。

发展

npm install
npm run build      # Compile TypeScript
npm run dev        # Run with tsx (hot reload)
npm test           # Run unit tests
npm run test:watch # Watch mode

集成测试

对真实的OmniFocus实例进行测试(创建和清理测试项):

OMNIFOCUS_LIVE=1 npm run test:integration

贡献

PR欢迎。请快跑 npm test 在提交之前,包括新工具的测试。

许可证

麻省理工学院