一个与OmniFocus集成的Model Context Protocol (MCP)服务器,使Claude(或其他兼容MCP的客户端)能够与您的任务和项目进行交互。

此MCP服务器在AI助手(如Claude)和您的OmniFocus任务管理系统之间建立了一座桥梁。它允许AI模型通过自然语言对话查看、创建、编辑和删除您OmniFocus数据库中的任务和项目。
您可以使用的一些方法:
已知问题
dump_database工具会失败。list_perspectives和get_perspective_view)resource和prompt功能计划日期类型的支持~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"omnifocus": {
"command": "npx",
"args": ["-y", "omnifocus-mcp"]
}
}
}
使用新的query_omnifocus工具进行快速、有针对性的搜索:
"显示今天到期的任务" "获取我的工作项目中标记的所有项目" "计算每个项目中有多少任务"
"我希望每个任务都有一个能量水平标签。给我列出所有没有能量水平标签的任务,并提供添加哪个标签的建议。我会根据需要进行更改。然后在OmniFocus中进行更改。"
"好的,感谢你详细解释为什么法治很重要。在我的活动项目中添加一个提醒我每周联系代表的重复任务。在备注字段中包括这次对话的总结。"
获取当前任务的摘要并以对话方式管理它们:
"显示本周到期的所有标记任务"
或者创建自定义视图:
"我在工作文件夹中的下一步是什么?"
列出并查看您的视图:
"我有哪些可用的视图?" "显示我的收件箱视图的内容" "获取我当前视图中的标记项"
从会议记录、学术研究文章或笔记中提取行动项:
"我正在粘贴今天的会议记录。请分析它并在OmniFocus中为分配给我的任何行动项创建任务。将它们放入我的'产品开发'项目中。"
服务器目前提供了这些工具:
query_omnifocus ⭐ 新增高效地查询您的OmniFocus数据库,具有强大的过滤器。获取特定任务、项目或文件夹,而无需加载整个数据库。
关键特性:
dump_database更快,用于有针对性的查询常见用途:
"显示本周到期的所有标记任务"
"获取我的工作项目的下一步行动"
"计算每个项目中的任务数量"(与summary: true一起使用)
"查找所有延期至明天的任务"
参数:
entity:要查询的类型('tasks'、'projects' 或 'folders')filters:(可选)通过项目、标签、状态、日期等缩小结果范围fields:(可选)要返回的具体字段(id、name、dueDate 等)limit:(可选)返回的最大项目数sortBy:(可选)排序依据的字段includeCompleted:(可选)是否包含已完成项目(默认:false)summary:(可选)仅返回计数而不是全部详情dump_database获取您的OmniFocus数据库的完整当前状态。适用于全面分析或需要所有数据的情况。
参数:
hideCompleted:(可选)隐藏已完成/丢弃的任务(默认:true)hideRecurringDuplicates:(可选)隐藏重复的周期性任务(默认:true)add_omnifocus_task向OmniFocus添加新任务。
参数:
name:任务名称projectName:(可选)要添加任务的项目名称note:(可选)任务的附加说明dueDate:(可选)任务的截止日期(ISO格式)deferDate:(可选)任务的延期日期(ISO格式)flagged:(可选)任务是否被标记estimatedMinutes:(可选)完成任务的预计时间tags:(可选)要分配给任务的标签parentTaskId:(可选)通过ID在现有父任务下创建parentTaskName:(可选)通过名称在第一个匹配的父任务下创建(备用)add_project向OmniFocus添加新项目。
参数:
name:项目名称folderName:(可选)要添加项目的文件夹名称note:(可选)项目的附加说明dueDate:(可选)项目的截止日期(ISO格式)deferDate:(可选)项目的延期日期(ISO格式)flagged:(可选)项目是否被标记estimatedMinutes:(可选)完成项目的预计时间tags:(可选)要分配给项目的标签sequential:(可选)项目中的任务是否应按顺序排列remove_item从OmniFocus中移除任务或项目。
参数:
id:(可选)要移除的任务或项目的IDname:(可选)要移除的任务或项目的名称itemType:要移除的项目类型('task' 或 'project')edit_item编辑OmniFocus中的任务或项目。
参数:
id:(可选)要编辑的任务或项目的IDname:(可选)要编辑的任务或项目的名称itemType:要编辑的项目类型('task' 或 'project')batch_add_items在一个操作中向OmniFocus添加多个任务或项目。
参数:
items:要添加的项目数组,其中每个项目可以是:
type:项目的类型('task' 或 'project')name:项目的名称note:(可选)附加说明dueDate:(可选)截止日期(ISO格式)deferDate:(可选)延期日期(ISO格式)flagged:(可选)项目是否被标记estimatedMinutes:(可选)预计完成时间tags:(可选)标签数组projectName:(可选,任务)要添加到的项目folderName:(可选,项目)要添加到的文件夹sequential:(可选,项目)任务是否按顺序排列parentTaskId:(可选,任务)通过ID的父任务parentTaskName:(可选,任务)通过名称的父任务(备用)tempId:(可选,任务)批内引用的临时IDparentTempId:(可选,任务)引用另一个项目的tempId以建立层次结构hierarchyLevel:(可选,任务)排序提示(0为根,1为子级,...)示例:
{
"items": [
{ "type": "task", "name": "父任务", "projectName": "我的项目", "tempId": "p1" },
{ "type": "task", "name": "子任务A", "parentTempId": "p1" },
{ "type": "task", "name": "子任务B", "parentTempId": "p1" }
]
}
batch_remove_items在一个操作中从OmniFocus中移除多个任务或项目。
参数:
items:要移除的项目数组,其中每个项目可以是:
id:(可选)要移除的项目的IDname:(可选)要移除的项目的名称itemType:要移除的项目类型('task' 或 'project')list_perspectives ⭐ 新增列出OmniFocus中所有可用的视图,包括内置和自定义视图。
参数:
includeBuiltIn:(可选)是否包含像收件箱、项目、标签这样的内置视图(默认:true)includeCustom:(可选)是否包含自定义视图(专业版功能)(默认:true)返回:
get_perspective_view ⭐ 新增获取当前OmniFocus视图中可见的项目。显示哪些任务和项目被展示。
参数:
perspectiveName:要查看的视图名称(例如,'Inbox'、'Projects'、'Flagged')limit:(可选)返回的最大项目数(默认:110)includeMetadata:(可选)是否包含额外元数据,如标签和日期(默认:true)fields:(可选)要在响应中包含的具体字段注意:此工具返回当前视图窗口的内容。由于OmniJS的限制,无法程序化切换视图。
文档待续。
该服务器使用AppleScript与OmniFocus通信,使其能够与应用程序的原生功能互动。服务器使用Model Context Protocol SDK构建,该SDK提供了一种标准化的方式,让AI模型与外部工具和系统互动。
欢迎贡献!请随时提交Pull Request。