Skip to main content
Glama

OmniFocus MCP 服务器

npm 版本 CI

一个模型上下文协议(MCP)服务器,将 OmniFocus 连接到 Claude 和其他兼容 MCP 的 AI 助手。

OmniFocus MCP

概述

该服务器在 AI 助手和你的 OmniFocus 数据库之间架起桥梁。通过自然对话,助手可以查询、创建、编辑和删除任务与项目——包括批量操作。你可以用它做的一些事情:

  • 将课程大纲 PDF 转换为一个完整指定的项目,包含任务、标签、推迟日期和截止日期

  • 将会议记录转化为一系列行动

  • 通过对话审计和重新组织你的标签、项目和文件夹

  • 创建你的任务、项目和标签的可视化

  • 在单个批量操作中处理数十个项目

Related MCP server: MCP OmniFocus

快速开始

前提条件

  • 安装了 OmniFocus 的 macOS

  • Node.js 20 或更高版本(用于 npx)

服务器首次与 OmniFocus 通信时,macOS 会要求你允许自动化访问。授予一次即可。

Claude Desktop

将服务器添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

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

然后重启 Claude Desktop。

Claude Code

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

其他 MCP 客户端的工作方式相同:通过 stdio 启动 npx -y omnifocus-mcp。

示例对话

定向查询:

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

"我在 Work 文件夹中的下一步行动是什么?"

"统计每个项目中有多少任务"

重新组织:

"我希望每个任务都有一个能量级别标签。显示所有没有该标签的任务列表,以及你建议添加的标签。我会进行任何我认为合适的更改。然后在 OmniFocus 中进行更改。"

从任何地方捕获:

"好的,感谢你详细解释法治的重要性。在我的 activism 项目中添加一个重复任务,提醒我每周给代表打电话。在备注字段中包含本次对话的摘要。"

使用透视:

"我有哪些可用的透视?"

"显示我的 Inbox 透视中的内容"

处理记录或 PDF:

"我正在粘贴今天会议的记录。请分析它,并在 OmniFocus 中为分配给我的任何行动项创建任务。将它们放入我的 'Product Development' 项目中。"

工具

服务器提供 12 个工具。可选参数已标记。

query_omnifocus

使用定向过滤器查询任务、项目或文件夹——比转储整个数据库更快、更轻量。完整参考见 QUERY_TOOL_REFERENCE.md,实际示例见 QUERY_TOOL_EXAMPLES.md。

参数

描述

entity

要查询的内容:tasks、projects 或 folders

filters (可选)

使用 AND 逻辑组合;数组过滤器(tags、status)在数组内使用 OR

fields (可选)

仅返回列出的字段——保持响应小巧

limit、sortBy、sortOrder (可选)

塑造结果列表

includeCompleted (可选)

包含已完成/已丢弃的项目(默认:false)

summary (可选)

仅返回匹配计数

可用的过滤器:

  • 容器:projectName(不区分大小写的部分匹配;"inbox" 针对收件箱)、projectId、folderId(包含子文件夹)、folderName(不区分大小写的部分匹配,包含子文件夹)

  • 名称:taskName(不区分大小写的部分匹配)

  • 标签:tags(精确匹配,区分大小写)

  • 状态:status — 任务:Next、Available、Blocked、DueSoon、Overdue、Completed、Dropped;项目:Active、OnHold、Done、Dropped

  • 日期,前瞻性:dueWithin、deferredUntil、plannedWithin(范围)、dueOn、deferOn、plannedOn(精确日期)。接受天数、"today"、"tomorrow"、"this week"、"next week" 或 ISO 日期

  • 日期,回顾性:addedWithin、addedOn、completedWithin、completedOn、droppedWithin、droppedOn(已完成/已丢弃过滤器需要 includeCompleted: true)

  • 标记与杂项:flagged、inbox、hasNote、isRepeating、reviewDue(仅项目)

dump_database

获取数据库的完整状态。用于全面分析;对于任何定向查询,优先使用 query_omnifocus。

  • hideCompleted (可选):隐藏已完成/已丢弃的任务(默认:true)

  • hideRecurringDuplicates (可选):隐藏重复任务的重复实例(默认:true)

add_omnifocus_task

创建新任务。

  • name

  • projectName (可选):要添加任务的项目(默认为收件箱)

  • parentTaskId / parentTaskName (可选):嵌套在现有任务下

  • note、dueDate、deferDate、plannedDate、flagged、estimatedMinutes、tags (全部可选)

  • repeat (可选):使其重复——参见 重复项目

add_project

创建新项目。

  • name

  • folderName (可选):放置项目的文件夹

  • sequential (可选):任务是否必须按顺序完成

  • note、dueDate、deferDate、flagged、estimatedMinutes、tags、repeat (全部可选)

edit_item

编辑现有任务或项目。也是移动项目的方式——设置 newProjectName 将任务移动到项目中,或设置为 ""/"inbox" 将其发送到收件箱。

  • id 或 name:要编辑的项目(id 优先)

  • itemType:task 或 project

  • 通用:newName、newNote、newDueDate、newDeferDate、newFlagged、newEstimatedMinutes(日期为 ISO 格式;空字符串清除)

  • 任务:newStatus(incomplete、completed、dropped、skipped — 仅适用于重复任务)、addTags、removeTags、replaceTags、newProjectName、newPlannedDate

  • 项目:newProjectStatus(active、completed、dropped、onHold)、newFolderName、newSequential、markReviewed(根据项目的审查间隔设置下一个审查日期)

  • 重复:newRepeat 设置新规则(与创建时的 repeat 形状相同);newRepeat: null 清除它

remove_item

删除任务或项目。

  • id 或 name:要删除的项目

  • itemType:task 或 project

batch_add_items

在一次操作中创建多个任务和项目。每个项目接受与 add_omnifocus_task / add_project 相同的字段,外加 type(task 或 project)和可选的层次结构辅助:

  • tempId:同一批次中其他项目可以引用的临时 ID

  • parentTempId:将此项目嵌套在另一个批次项目的 tempId 下

{
  "items": [
    { "type": "project", "name": "My Project", "tempId": "proj1" },
    { "type": "task", "name": "First task", "parentTempId": "proj1" },
    { "type": "task", "name": "Parent task", "parentTempId": "proj1", "tempId": "t1" },
    { "type": "task", "name": "Subtask", "parentTempId": "t1" }
  ]
}

batch_remove_items

在一次操作中删除多个任务或项目。每个项目接受 id 或 name,外加 itemType。

list_perspectives

列出可用的透视,包括内置和自定义(自定义透视是 OmniFocus Pro 功能)。

  • includeBuiltIn、includeCustom (可选,默认:true)

get_perspective_view

获取命名透视中可见的项目。

  • perspectiveName:例如 Inbox、Flagged 或自定义透视名称

  • limit (可选,默认:100)、includeMetadata (可选)、fields (可选)

list_tags

列出所有标签及其层次结构、活动状态和任务计数。

  • includeDropped (可选,默认:false)

create_tag

创建标签,可选地嵌套在现有父标签下。

  • name

  • parentTagName / parentTagID (可选;ID 优先)

重复项目

add_omnifocus_task、add_project 和 batch_add_items 中的每个项目都接受 repeat 对象;edit_item 接受 newRepeat。你描述日程,服务器编译 ICS 重复规则,因此你永远不需要手写 RRULE。

字段

描述

method

start-after-completion(从实际完成时开始计算)、fixed(无论日历如何都从日历开始计算)或 due-after-completion

unit

day、week、month 或 year

steps (可选)

每 N 个单位重复一次(默认 1)

weekdays (可选)

特定日期,例如 ["MO","WE","FR"]。需要 unit: "week"

{ "name": "Weekly review", "repeat": { "method": "start-after-completion", "unit": "week" } }
{ "name": "Strength work", "repeat": { "method": "fixed", "unit": "week", "weekdays": ["TU","TH"] } }

谨慎选择 method — 这是手动设置时最常出错的字段。使用 fixed,无论上一个是否完成,事件都会按计划出现,因此错过一周会留下积压。使用 start-after-completion,下一个事件从你实际完成时开始安排,因此习惯会简单地恢复。

使用 query_omnifocus 通过 repetitionRule(ICS 字符串)和 repetitionMethod 字段读回规则,或使用 isRepeating 过滤。

目前不支持:位置性月度规则("第三个星期二")、特定月份日期和结束条件(COUNT/UNTIL)。请在 OmniFocus 中直接设置这些。

资源

资源允许 MCP 客户端将 OmniFocus 数据作为上下文附加到对话中,无需工具调用。在 Claude Code 中,输入 @ 浏览它们;Claude Desktop 和其他支持资源的客户端可以直接附加它们。所有资源返回 JSON。

URI

描述

omnifocus://inbox

当前收件箱项目

omnifocus://today

今日议程 — 今天到期、计划今天和逾期

omnifocus://flagged

所有已标记项目

omnifocus://stats

数据库统计(任务计数、逾期、已标记等)

omnifocus://project/{name}

特定项目中的任务

omnifocus://perspective/{name}

命名透视中可见的项目

两个模板资源支持列出所有可用值并自动完成 {name} 参数。

服务器指令与日志

指令: 在 MCP 握手期间,服务器向客户端发送使用指南——工具选择建议(优先使用 query_omnifocus 而不是 dump_database)、过滤器提示和资源目录。无需配置。

日志: 服务器通过 MCP 日志协议发出结构化日志。客户端可以使用 logging/setLevel(debug、info、warning、error 等)调整详细程度。脚本执行时间和错误会自动记录。

工作原理

服务器通过 osascript 与 OmniFocus 通信,在适当的地方使用 JXA(JavaScript for Automation)和 OmniFocus 内嵌的 Omni Automation(OmniJS)。它基于官方的 MCP TypeScript SDK 构建,并通过 stdio 与客户端通信。

共享守护进程

启动 omnifocus-mcp 会启动一个小型 shim,它连接到一个共享的后台守护进程,如果该进程尚未运行则启动一个。机器上的每个客户端都有自己的独立 MCP 会话,但它们都运行在同一个进程中。

当多个代理同时使用 OmniFocus 时,这一点很重要。OmniFocus 是一个通过 AppleEvents 驱动的单线程应用程序,服务器限制了它并发运行的 osascript 调用数量。当每个客户端运行自己的服务器时,这个上限是按进程计算的——十个客户端意味着十个独立的预算同时指向一个应用,导致 AppleEvent 超时。共享一个进程使上限变为全局的。

守护进程监听一个位于 0700 权限目录(默认为 ~/.omnifocus-mcp/daemon-<version>.sock)中的 Unix 域套接字,因此访问由文件系统强制执行——没有网络端口,也没有令牌。当没有客户端连接超过空闲窗口时间后,它会自行退出,并将日志写入套接字旁边的 daemon.log。

套接字名称携带包版本号,这样升级后绝不会让你与旧版本的守护进程通信。升级后你可能会短暂看到两个守护进程:旧的那个继续为已连接的客户端服务,并在最后一个客户端断开后退出。仍连接到旧守护进程的客户端会通过带内方式收到通知——当有较新的守护进程在服务时,每个工具结果都会附带一行升级提示,因此没有人需要记得重新连接。

客户端配置没有任何变化。如果守护进程无法启动——例如不寻常的沙箱环境、只读的主目录——shim 会回退到在进程内运行独立服务器,与早期版本的行为完全一致。

环境变量

变量

默认值

用途

OMNIFOCUS_MCP_NO_DAEMON

未设置

设置为 1 可完全跳过守护进程,为每个客户端运行专用服务器(守护进程之前的行为)。如果你怀疑是守护进程的问题,这是首先尝试的选项。

OMNIFOCUS_MCP_SOCKET

~/.omnifocus-mcp/daemon-<version>.sock

覆盖套接字路径,例如用于运行隔离实例。

OMNIFOCUS_MCP_IDLE_TIMEOUT_MINUTES

30

在无客户端流量持续该时长后退出。0 表示禁用超时。

OMNIFOCUS_MCP_MAX_CONCURRENT_OSASCRIPT

4

最大并发 osascript 调用数。如果仍然看到 AppleEvent 超时,请调低此值。

路线图

  • MCP prompt 支持

  • 操作项目和任务的通知

  • 功能请求和已知问题请参阅 GitHub issues

贡献

欢迎贡献!请随时提交拉取请求。CI 会在每个 PR 上运行类型检查、单元测试和构建。

npm install
npm test            # unit tests
npm run build       # compile to dist/
npm run test:integration  # requires OmniFocus; creates and removes TEST:-prefixed items

许可证

MIT

Available Tools

7 tools
add_omnifocus_taskC

Add a new task to OmniFocus

ParametersJSON Schema
NameRequiredDescriptionDefault
deferDateNoThe defer date of the task in ISO format (YYYY-MM-DD or full ISO date)
dueDateNoThe due date of the task in ISO format (YYYY-MM-DD or full ISO date)
estimatedMinutesNoEstimated time to complete the task, in minutes
flaggedNoWhether the task is flagged or not
nameYesThe name of the task
noteNoAdditional notes for the task
projectNameNoThe name of the project to add the task to (will add to inbox if not specified)
tagsNoTags to assign to the task

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Add a new task' implies a write operation, it doesn't specify whether this requires authentication, what happens on success/failure, if there are rate limits, or how errors are handled. For a mutation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to quickly understand what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 8 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after task creation, what the return value might be, or provide any behavioral context. The description should do more to compensate for the lack of structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description adds no additional parameter information beyond what's already in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and resource ('new task to OmniFocus'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'add_project' or 'edit_item', which would require mentioning this is specifically for tasks rather than projects or editing existing items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'add_project', 'edit_item', or 'batch_add_items'. The description doesn't mention prerequisites, context, or any exclusions that would help an agent choose between these sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_projectC

Add a new project to OmniFocus

ParametersJSON Schema
NameRequiredDescriptionDefault
deferDateNoThe defer date of the project in ISO format (YYYY-MM-DD or full ISO date)
dueDateNoThe due date of the project in ISO format (YYYY-MM-DD or full ISO date)
estimatedMinutesNoEstimated time to complete the project, in minutes
flaggedNoWhether the project is flagged or not
folderNameNoThe name of the folder to add the project to (will add to root if not specified)
nameYesThe name of the project
noteNoAdditional notes for the project
sequentialNoWhether tasks in the project should be sequential (default: false)
tagsNoTags to assign to the project

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool adds a project but doesn't explain what happens upon success (e.g., returns a project ID), error conditions, permissions needed, or side effects. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool ('add') with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like return values, error handling, or system impacts, leaving significant gaps for an AI agent to understand how to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. According to the rules, with high schema coverage, the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add a new project') and target resource ('to OmniFocus'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'add_omnifocus_task' or 'batch_add_items' that might also create items in OmniFocus, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'add_project' over 'add_omnifocus_task' (for tasks vs. projects) or 'batch_add_items' (for bulk operations), nor does it specify prerequisites or exclusions for project creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_add_itemsB

Add multiple tasks or projects to OmniFocus in a single operation

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of items (tasks or projects) to add

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it's a batch addition operation. It doesn't disclose behavioral traits such as whether it's idempotent, requires specific permissions, handles errors, or returns any output. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads key information ('Add multiple tasks or projects') without unnecessary words. It earns its place by clarifying the batch nature and target system, making it appropriately sized and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a mutation tool. It lacks details on behavioral context, error handling, or return values, which are crucial for an agent to use it correctly. The high schema coverage doesn't compensate for these gaps in operational transparency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema fully documents the 'items' parameter and its nested properties. The description adds no parameter semantics beyond implying batch processing, which is already covered by the tool name and schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add multiple tasks or projects') and target ('to OmniFocus in a single operation'), making the purpose evident. It distinguishes from single-item tools like 'add_omnifocus_task' and 'add_project' by emphasizing batch capability, though it doesn't explicitly name these siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for adding multiple items at once, suggesting it's an alternative to single-item tools. However, it doesn't explicitly state when to use this over siblings like 'add_omnifocus_task' or 'add_project', nor does it mention prerequisites or exclusions, leaving guidance incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_remove_itemsC

Remove multiple tasks or projects from OmniFocus in a single operation

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of items (tasks or projects) to remove

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'Remove' which implies a destructive mutation, but lacks details on permissions, reversibility, confirmation prompts, or error handling for partial failures. For a batch deletion tool with no annotation coverage, this is a significant gap in behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and resource. Every word earns its place with no redundancy or fluff, making it highly concise and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (batch destructive operation) and lack of annotations and output schema, the description is insufficient. It doesn't cover critical aspects like return values, error conditions, or side effects. For a mutation tool with no structured safety hints, more completeness is needed to guide safe agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the 'items' parameter and its nested properties (id, itemType, name). The description adds no additional parameter semantics beyond implying batch processing. With high schema coverage, the baseline is 3, as the description doesn't compensate but doesn't need to heavily.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove multiple tasks or projects') and resource ('from OmniFocus') with the scope of 'in a single operation'. It distinguishes from the sibling 'remove_item' by emphasizing batch capability, though it doesn't explicitly name that sibling. The purpose is specific but could be more precise about differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'remove_item' or other deletion methods. It mentions batch removal but doesn't specify scenarios (e.g., efficiency for bulk cleanup) or prerequisites. Without explicit when/when-not instructions, usage context is implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_databaseC

Gets the current state of your OmniFocus database

ParametersJSON Schema
NameRequiredDescriptionDefault
hideCompletedNoSet to false to show completed and dropped tasks (default: true)
hideRecurringDuplicatesNoSet to true to hide duplicate instances of recurring tasks (default: true)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Gets' implies a read operation, it doesn't specify what 'current state' includes (tasks, projects, tags, etc.), the format of the output, whether this is a heavy operation, or any performance considerations. For a database dump tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose upfront. However, given the complexity of a database dump operation and the many sibling alternatives, this extreme conciseness comes at the cost of helpful context that would aid tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a database dump tool with no annotations, no output schema, and 15 sibling retrieval tools, the description is incomplete. It doesn't explain what data is included in the dump, the output format, how this differs from more targeted retrieval tools, or any performance implications. The agent lacks sufficient context to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (hideCompleted and hideRecurringDuplicates). The description adds no parameter information beyond what's in the schema, meeting the baseline 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Gets') and resource ('current state of your OmniFocus database'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its many sibling tools that also retrieve task/project data (like get_flagged_tasks, get_inbox_tasks, etc.), which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With 15 sibling tools that retrieve various subsets of OmniFocus data, the agent receives no help in choosing between a full database dump and more targeted retrieval tools like get_flagged_tasks or filter_tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_itemC

Edit a task or project in OmniFocus

ParametersJSON Schema
NameRequiredDescriptionDefault
addTagsNoTags to add to the task
idNoThe ID of the task or project to edit
itemTypeYesType of item to edit ('task' or 'project')
nameNoThe name of the task or project to edit (as fallback if ID not provided)
newDeferDateNoNew defer date in ISO format (YYYY-MM-DD or full ISO date); set to empty string to clear
newDueDateNoNew due date in ISO format (YYYY-MM-DD or full ISO date); set to empty string to clear
newEstimatedMinutesNoNew estimated minutes
newFlaggedNoSet flagged status (set to false for no flag, true for flag)
newFolderNameNoNew folder to move the project to
newNameNoNew name for the item
newNoteNoNew note for the item
newProjectStatusNoNew status for projects
newSequentialNoWhether the project should be sequential
newStatusNoNew status for tasks (incomplete, completed, dropped)
removeTagsNoTags to remove from the task
replaceTagsNoTags to replace all existing tags with

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic purpose. It doesn't mention that this is a mutation operation (implied by 'Edit'), what permissions are needed, whether changes are reversible, error conditions, or what happens when multiple parameters are provided simultaneously (e.g., addTags vs replaceTags).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a tool with comprehensive schema documentation, though it could benefit from additional context about usage and behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation tool with 16 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error handling, or behavioral nuances. The agent must rely entirely on the input schema for understanding, which lacks context about how the edit operation actually works in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Edit') and target ('a task or project in OmniFocus'), providing specific verb+resource. However, it doesn't distinguish this from sibling tools like 'remove_item' or 'add_omnifocus_task' beyond the basic edit vs add/remove distinction, missing opportunities to clarify scope boundaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing an existing item ID), when to choose edit over remove+add, or how it differs from batch operations available in sibling tools like 'batch_add_items' or 'batch_remove_items'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_itemC

Remove a task or project from OmniFocus

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe ID of the task or project to remove
itemTypeYesType of item to remove ('task' or 'project')
nameNoThe name of the task or project to remove (as fallback if ID not provided)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if removal is permanent, requires specific permissions, has side effects, or what happens to dependent items, which is critical for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and resource without any wasted words. It's appropriately sized for a simple tool, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical context such as the permanence of removal, error handling, or return values, leaving significant gaps for safe agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no extra meaning beyond implying removal targets tasks or projects, matching the schema. Baseline 3 is appropriate as the schema handles parameter semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and the resource ('a task or project from OmniFocus'), making the purpose immediately understandable. It doesn't distinguish from sibling tools like 'batch_remove_items' or 'edit_item', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'batch_remove_items' for multiple items or 'edit_item' for modifications. It also doesn't mention prerequisites or context for removal, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observedadd_omnifocus_task
    • First observedadd_project
    • First observedbatch_add_items
    • First observedbatch_remove_items
    • First observeddump_database
    • First observededit_item
    • First observedremove_item

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'remove_item' and 'batch_remove_items', and 'edit_item' could be confused with individual add/edit operations. The descriptions help clarify, but the boundaries between single and batch operations are not perfectly clear.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structure (e.g., add_omnifocus_task, edit_item, dump_database). There are no deviations in naming conventions, making the set predictable and readable.

Tool Count5/5

With 7 tools, the count is well-scoped for managing tasks and projects in OmniFocus. Each tool serves a clear purpose, from basic CRUD operations to batch processing and database inspection, without feeling excessive or insufficient.

Completeness5/5

The tool set provides complete coverage for the OmniFocus domain, including create (add_task, add_project), read (dump_database), update (edit_item), and delete (remove_item, batch_remove_items) operations, plus batch additions. There are no obvious gaps that would hinder agent workflows.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables automation and management of OmniFocus tasks, projects, and tags using natural language and programmable interfaces from VS Code, command line, or any MCP-compatible client.
    12
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables AI assistants to interact with OmniFocus on macOS via JXA, supporting task, project, folder, tag, perspective, and search operations.
    31
    20 npm
    MIT