Skip to main content
Glama

OmniFocus MCP サーバー

npm version CI

OmniFocus を Claude やその他の MCP 互換 AI アシスタントに接続する Model Context Protocol (MCP) サーバーです。

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 で変更を実行して。」

どこからでもキャプチャ:

「法治の重要性についての詳しい説明をありがとう。私のアクティビズムプロジェクトに、毎週議員に電話するよう思い出させる繰り返しタスクを追加して。この会話の要約をメモ欄に含めて。」

パースペクティブの操作:

「利用可能なパースペクティブは何?」

「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 — 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

1 回の操作で複数のタスクとプロジェクトを作成します。各項目は 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

1 回の操作で複数のタスクまたはプロジェクトを削除します。各項目は 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 の場合、最後の発生が完了していなくてもスケジュールどおりに発生するため、逃した週は backlog が残ります。start-after-completion の場合、次の発生は実際に完了した時点からスケジュールされるため、習慣は単に再開されます。

ルールを読み戻すには、query_omnifocus で repetitionRule(ICS 文字列)と repetitionMethod フィールドを使用するか、isRepeating でフィルタします。

現在サポートされていないもの: 位置指定の月次ルール(「第 3 火曜日」)、特定の月日、終了条件(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}

指定したパースペクティブに表示される項目

2 つのテンプレートリソースは、利用可能なすべての値の一覧表示と {name} パラメータのオートコンプリートをサポートしています。

サーバー指示とロギング

指示: MCP ハンドシェイク中に、サーバーは使用ガイダンスをクライアントに送信します — ツール選択のアドバイス(dump_database より query_omnifocus を優先)、フィルタのヒント、リソースカタログ。設定は不要です。

ロギング: サーバーは MCP ロギングプロトコルを介して構造化ログを出力します。クライアントは logging/setLevel(debug、info、warning、error など)で詳細度を調整できます。スクリプト実行のタイミングとエラーは自動的にログに記録されます。

仕組み

サーバーは osascript を通じて OmniFocus と通信し、適切な箇所では JXA(JavaScript for Automation)と OmniFocus に組み込まれた Omni Automation(OmniJS)を使用します。公式の MCP TypeScript SDK 上に構築されており、stdio 経由でクライアントと通信します。

共有デーモン

omnifocus-mcp を起動すると、共有バックグラウンドデーモンに接続する小さなシムが起動し、まだ起動していなければデーモンを1つ起動します。マシン上の各クライアントはそれぞれ独立した MCP セッションを取得しますが、すべてその単一プロセス内で実行されます。

これは、複数のエージェントが同時に OmniFocus を使用する場合に重要です。OmniFocus は AppleEvents によって駆動されるシングルスレッドのアプリケーションであり、サーバーは同時に実行する osascript 呼び出しの数を制限します。各クライアントが独自のサーバーを実行していたとき、その上限はプロセスごとでした。つまり、10クライアントがあれば、1つのアプリに対して10の独立した予算が設定され、AppleEvent のタイムアウトが発生していました。1つのプロセスを共有することで、その上限はグローバルになります。

デーモンは 0700 ディレクトリ(デフォルトでは ~/.omnifocus-mcp/daemon-<version>.sock)内の Unix ドメインソケットで待ち受けするため、アクセスはファイルシステムによって強制されます。ネットワークポートもトークンもありません。アイドル期間中にクライアントの接続がなくなると自動的に終了し、ソケットの隣にある daemon.log にログを記録します。

ソケット名にはパッケージバージョンが含まれているため、アップグレードしても以前のバージョンのデーモンと通信してしまうことは決してありません。アップグレード直後には一時的に2つのデーモンが見えることがあります。古いデーモンはすでに接続しているクライアントへのサービスを継続し、最後のクライアントが切断すると終了します。古いデーモンにまだ接続しているクライアントには、帯域内でそのことが通知されます。新しいデーモンが稼働している間、すべてのツール結果には1行のアップグレード通知が含まれるため、誰も再接続を覚えておく必要はありません。

クライアント設定に関しては何も変わりません。デーモンを起動できない場合(特殊なサンドボックス、読み取り専用のホームディレクトリなど)、シムは以前のバージョンとまったく同様に、プロセス内でスタンドアロンサーバーを実行するフォールバックを行います。

環境変数

変数

デフォルト

目的

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