返回市场
全视焦点-MCP

全视焦点-MCP

作者:themotionmachine107 星标更新:2025-09-09

项目介绍

OmniFocus MCP 服务器

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

OmniFocus MCP

概述

此MCP服务器在AI助手(如Claude)和您的OmniFocus任务管理系统之间建立了一座桥梁。它允许AI模型通过自然语言对话查看、创建、编辑和删除您OmniFocus数据库中的任务和项目。

您可以使用的一些方法:

  • 将课程大纲的PDF翻译成包含任务、标签、延期日期和截止日期的详细项目。
  • 将会议记录转换成行动项列表。
  • 创建任务、项目和标签的可视化表示。
  • 在单个操作中处理多个任务或项目。
  • 高效地批量管理您的OmniFocus项目。

已知问题

  • 当前,对于非常大的OmniFocus数据库,dump_database工具会失败。

发展路线图

  • 启用客户端与视图的交互 ✅(已添加list_perspectivesget_perspective_view
  • 利用MCP的resourceprompt功能
  • 增加对OmniFocus 4.7中新计划日期类型的支持
  • 支持对项目和任务的通知进行操作

🚀 快速开始

先决条件

  • 安装了OmniFocus的macOS系统

连接到Claude

  1. 在Claude Desktop中,将此MCP服务器添加到配置文件中:
~/Library/Application Support/Claude/claude_desktop_config.json
  1. 添加以下配置:
{
  "mcpServers": {
    "omnifocus": {
      "command": "npx",
      "args": ["-y", "omnifocus-mcp"]
    }
  }
}
  1. 重启Claude Desktop

使用案例

高效的任务查询

使用新的query_omnifocus工具进行快速、有针对性的搜索:

"显示今天到期的任务" "获取我的工作项目中标记的所有项目" "计算每个项目中有多少任务"

重新组织您的项目、任务和标签

"我希望每个任务都有一个能量水平标签。给我列出所有没有能量水平标签的任务,并提供添加哪个标签的建议。我会根据需要进行更改。然后在OmniFocus中进行更改。"

从任何对话中添加任务

"好的,感谢你详细解释为什么法治很重要。在我的活动项目中添加一个提醒我每周联系代表的重复任务。在备注字段中包括这次对话的总结。"

快速虚拟视图

获取当前任务的摘要并以对话方式管理它们:

"显示本周到期的所有标记任务"

或者创建自定义视图:

"我在工作文件夹中的下一步是什么?"

使用OmniFocus视图

列出并查看您的视图:

"我有哪些可用的视图?" "显示我的收件箱视图的内容" "获取我当前视图中的标记项"

处理记录或PDF

从会议记录、学术研究文章或笔记中提取行动项:

"我正在粘贴今天的会议记录。请分析它并在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:(可选)要移除的任务或项目的ID
  • name:(可选)要移除的任务或项目的名称
  • itemType:要移除的项目类型('task' 或 'project')

edit_item

编辑OmniFocus中的任务或项目。

参数:

  • id:(可选)要编辑的任务或项目的ID
  • name:(可选)要编辑的任务或项目的名称
  • 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:(可选,任务)批内引用的临时ID
    • parentTempId:(可选,任务)引用另一个项目的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:(可选)要移除的项目的ID
    • name:(可选)要移除的项目的名称
    • 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。