mcpField
O
Omnifocus

Omnifocus

ローカル
github.com/alexhannaonlineデータ・分析039 週間前に更新

Omnifocus について

Omnifocusは、macOSでOmniFocusのネイティブなOmni Automation APIを介して操作するMCPサーバーです。タスクやプロジェクトの管理、通知、添付ファイル、分析、データ書き出しに対応します。

主な機能

  1. 01タスクの作成・更新・完了
  2. 02プロジェクトとフォルダーの整理
  3. 03サブタスクとタグの管理
  4. 04通知の追加と確認
  5. 05添付ファイルの管理
  6. 06活動の分析とデータ書き出し

活用シーン

  1. 01期限前・期限超過・フラグ付きタスクの確認
  2. 02プロジェクトと階層型タスクリストの整理
  3. 03生産性や繰り返しタスクの傾向分析
  4. 04タスクとプロジェクトのデータ書き出し

MCP 対応

MCPクライアントに41個のツールを提供し、OmniFocusのタスク、プロジェクト、フォルダー、タグ、通知、添付ファイル、分析、書き出しを扱います。データベースへ直接アクセスせず、Omni Automationを通じて操作します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

OmniFocus MCP サーバー

Omni Automation 経由で AI アシスタントが OmniFocus に完全にアクセスできるようにする MCP サーバーです。タスク、プロジェクト、フォルダー、タグ、サブタスクの階層、通知、添付ファイル、分析、データのエクスポートに対応する 41 個のツールを備えています。

仕組み

このサーバーは osascript -l JavaScript を実行して app.evaluateJavascript() を呼び出し、OmniFocus のネイティブな Omni Automation エンジン内でスクリプトを実行します。データベースに直接アクセスすることはなく、すべての操作は公式 API 経由で行われます。

インストール

git clone https://github.com/alexhanna/omnifocus-mcp.git
cd omnifocus-mcp
npm install
npm run build
MCP クライアントの設定

サーバーを MCP クライアントの設定に追加します。サーバーエントリーは次のようになります。

{
  "mcpServers": {
    "omnifocus": {
      "command": "node",
      "args": ["/path/to/omnifocus-mcp/dist/index.js"],
      "env": {
        "LOG_LEVEL": "info"
      }
    }
  }
}

設定ファイルの場所はクライアントによって異なります。

  • Claude Desktop:~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Code:~/.claude/settings.json またはプロジェクトの .mcp.json
  • その他の MCP クライアント:サーバーの設定方法について、クライアントのドキュメントを参照してください
要件
  • macOS(osascript の実行に必要)
  • OmniFocus 4.6 以降がインストールされていること
  • Node.js 18 以降
  • OmniFocus に対する macOS のオートメーション権限(初回使用時に付与されます。docs/PERMISSIONS.md を参照)

ツール

タスク(7 個のツール)
ツール説明
list_tasks完了状況、フラグ、プロジェクト、タグ、日付、検索、受信箱、実行可能性で絞り込みます。30 秒間キャッシュされます。
get_task_countデータを返さずに、条件に一致するタスク数を数えます。
todays_agenda今日が期限のタスク、期限切れのタスク、またはフラグ付きのタスクを表示します。
create_task名前、メモ、フラグ、日付、タグ、プロジェクト、見積もり時間を指定してタスクを作成します。
update_taskタスクの任意のプロパティを変更します。プロジェクト間で移動できます。
complete_taskタスクを完了済みにします。
delete_taskタスクを削除します。
プロジェクト(5 個のツール)
ツール説明
list_projectsステータス、フラグ、フォルダーで絞り込みます。5 分間キャッシュされます。
create_projectフォルダーへの配置を指定して作成します(必要に応じてフォルダーを自動作成します)。
update_projectプロパティを変更し、フォルダー間で移動します。
complete_projectプロジェクトを完了済みにします(必要に応じてすべてのタスクも完了します)。
delete_projectプロジェクトを削除します。
フォルダー(6 個のツール)
ツール説明
list_foldersネストの深さとステータスの条件を指定して一覧表示します。
create_folderフォルダーを作成します。必要に応じてネストできます。
update_folder名前を変更し、ステータスを変更します。
delete_folderフォルダーを削除します(必要に応じて、先に内容を移動します)。
get_folder_contentsフォルダー内のプロジェクトとサブフォルダーを一覧表示します。
move_to_folderプロジェクトまたはフォルダーを別のフォルダーに移動します。
タスク階層(5 個のツール)
ツール説明
get_task_hierarchyタスクとサブタスクの完全なツリーを取得します(深さを設定可能)。
create_subtask表示位置を指定して子タスクを作成します。
move_taskタスクを別の親タスクまたはプロジェクトのルートに移動します。
set_task_ordering順次/並列の実行方法と completedByChildren を設定します。
list_subtasksタスクの直接の子タスクを一覧表示します。
タグ(2 個のツール)
ツール説明
list_tagsすべてのタグを一覧表示します。オプションで(負荷の高い)使用統計を取得できます。
manage_tagsタグの作成、名前変更、削除、統合を行います。parentTag によるネストしたタグに対応しています。
通知(4 個のツール)
ツール説明
list_notificationsタスクのすべての通知を一覧表示します。
add_notification絶対日時(日時指定)または相対日時(期限からのオフセット)の通知を追加します。
remove_notificationインデックスを指定して通知を削除します。
clear_notificationsタスクのすべての通知を削除します。
添付ファイル(4 個のツール)
ツール説明
list_attachmentsタスクの添付ファイルのメタデータとリンク済みファイルを一覧表示します。
add_linked_filefile:// パスをタスクにリンクします。
remove_attachmentインデックスを指定して埋め込み添付ファイルを削除します。
remove_linked_fileファイルへの参照を解除します。
分析(3 個のツール)
ツール説明
get_productivity_stats完了率、時間配分です。プロジェクト/タグ/日/週ごとにグループ化します。
get_task_velocity日/週/月ごとのタスク処理量です。
analyze_overdue_tasksプロジェクト/タグ/経過期間/優先度ごとにグループ化した期限超過のパターンです。
定期タスク(2 個のツール)
ツール説明
analyze_recurring_tasks頻度と期限を含む定期タスクの一覧です。
get_recurring_patterns定期タスクの頻度に関する統計です。
エクスポート(3 個のツール)
ツール説明
export_tasksフィールドを選択して、タスクを JSON または CSV としてエクスポートします。
export_projectsオプションで統計を含めて、プロジェクトをエクスポートします。
bulk_exportすべてのデータ(タスク、プロジェクト、タグ)をファイルにエクスポートします。

アーキテクチャ

src/
├── cache/           # TTL-based caching (30s tasks, 5min projects, 1h analytics)
├── omnifocus/
│   ├── OmniAutomation.ts   # Bridge: osascript → evaluateJavascript()
│   ├── scripts/             # Omni Automation script templates
│   └── types.ts             # Type definitions
├── tools/           # 41 MCP tools in 10 domain directories
│   ├── tasks/       ├── projects/    ├── folders/
│   ├── hierarchy/   ├── tags/        ├── notifications/
│   ├── attachments/ ├── analytics/   ├── recurring/
│   └── export/
├── utils/           # Logging, permission checking
└── index.ts         # Server entry point

スクリプトの実行フロー:

  1. ツールが omniAutomation.buildScript(template, params) を呼び出し、{{placeholders}} を JSON.stringify でエスケープした値に置き換えます
  2. wrapScript() がスクリプトを try/catch の IIFE でラップします
  3. ラップされたスクリプトを再度 JSON.stringify でエスケープし、app.evaluateJavascript() に渡します
  4. osascript -l JavaScript が外側の JXA ラッパーを実行します
  5. JSON の結果を解析し、MCP 経由で返します

既知の制限事項

  • 定期タスクを作成できません — 定期的なパターンは読み取れますが、繰り返しルールは作成できません
  • パースペクティブを管理できません — Omni Automation API はパースペクティブの読み取り専用です
  • 位置情報ベースのタグはありません — OmniFocus の UI で手動設定する必要があります
  • add_linked_file は file:// URL のみを受け付けます — OmniFocus は http/https を拒否します
  • MCP サーバーはビルドをキャッシュします — npm run build の変更を反映するには Claude Code の再起動が必要です
  • 自動化によるレビュー/パースペクティブの管理はできません

開発

npm run build     # Compile TypeScript
npm run dev       # Watch mode
npm test          # Unit tests (vitest)
npm run typecheck # Type check without building

ライセンス

MIT — LICENSE を参照

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。