# @scardis/omnifocus-mcp

MCP server for OmniFocus via Omni Automation JavaScript API

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.2.1
- **Author:** io.github.steveardis
- **License:** MIT
- **npm:** @scardis/omnifocus-mcp
- **Source:** https://github.com/steveardis/omnifocus-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-03T00:11:47.014Z
- **Version scanned:** 0.2.1
- **CVEs:** none found by OSV at scan time

## Tools

27 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `complete_project` — Mark a project as done (complete). Returns the updated project detail.
- `complete_task` — Mark a task complete by its stable ID. Returns the updated task detail.
- `create_folder` — Create a new OmniFocus folder. Omit parentFolderId to create at the top level; provide parentFolderId to nest it inside an existing folder.
- `create_project` — Create a new OmniFocus project. Omit folderId to create at the top level; provide folderId to place it inside a folder. Optionally set type (parallel/sequential
- `create_tag` — Create a new OmniFocus tag. Omit parentTagId to create at the top level; provide parentTagId to nest it under an existing tag.
- `create_task` — Create a new task. Placement: omit projectId and parentTaskId for inbox; provide projectId to add to a project; provide parentTaskId to create a subtask. Provid
- `delete_folder` — Permanently and recursively delete an OmniFocus folder. THIS ACTION CANNOT BE UNDONE. The ENTIRE subtree is destroyed: all child folders, all projects within th
- `delete_project` — Permanently delete a project and ALL its tasks. THIS ACTION CANNOT BE UNDONE. Before calling this tool you MUST ask the user to explicitly confirm they want to 
- `delete_tag` — Permanently delete an OmniFocus tag. THIS ACTION CANNOT BE UNDONE. All child tags are also deleted, and all tasks/projects that held this tag have it removed au
- `delete_task` — Permanently delete a task and all its subtasks. THIS ACTION CANNOT BE UNDONE. Before calling this tool you MUST ask the user to explicitly confirm they want to 
- `drop_project` — Mark a project as dropped. Returns the updated project detail.
- `drop_task` — Mark a task dropped by its stable ID. Returns the updated task detail.
- `edit_folder` — Rename an existing OmniFocus folder by its ID.
- `edit_project` — Edit an existing project. Only provided fields are changed. Pass null for deferDate, dueDate, or reviewInterval to clear them. When tagIds is provided it replac
- `edit_tag` — Edit an existing OmniFocus tag. Provide id plus any combination of name (rename) and status (active/onHold/dropped).
- `edit_task` — Edit an existing task by its stable ID. Only fields included in the call are changed; omitted fields are left unchanged. When tagIds is provided it replaces the
- `get_folder` — Get full detail for a folder by its stable ID. Returns path, parentId, status, child folder IDs, and immediate project IDs.
- `get_project` — Get full detail for a project by its stable ID. Returns note, folder path, status, type, dates, review metadata, and tag IDs.
- `get_tag` — Get full detail for a tag by its stable ID. Returns path, parentId, status, and child tag IDs.
- `get_task` — Get full detail for a task by its stable ID. Returns note, status, flagged, defer/due/completion dates, estimated minutes, container info, tag IDs, and parentTa
- `list_folders` — List folders in OmniFocus. By default, all folders (active and dropped) are returned. Optional filter.status ('active' | 'dropped') restricts to that status. Re
- `list_projects` — List projects in OmniFocus. By default, done and dropped projects are excluded — pass filter.status to override. Optional filter fields: status (array of status
- `list_tags` — List tags in OmniFocus. By default, all tags (active, onHold, and dropped) are returned. Optional filter.status ('active' | 'onHold' | 'dropped') restricts to t
- `list_tasks` — List tasks in OmniFocus within a scope. Provide exactly one of: projectId (tasks in a project), folderId (tasks across all projects in a folder), inbox (inbox t
- `move_project` — Move a project to a different folder or to the top level. Pass folderId as a string to move into a folder, or null to move to the top level. Throws a not-found 
- `move_task` — Move a task to a different project (making it a top-level task) or make it a subtask of another task. Exactly one of projectId or parentTaskId must be provided.
- `resolve_name` — Resolve an entity name to its stable ID(s). Returns ALL matches — never silently picks one. If multiple candidates are returned, ask the user or caller to disam

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"omnifocus\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@scardis/omnifocus-mcp\"\n      ]\n    }\n  }\n}"
```

## Blast radius

Extensive to critical — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: deletes data; runs on your machine.
- Floor 42, ceiling 66 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40scardis%2Fomnifocus-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40scardis%2Fomnifocus-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40scardis%2Fomnifocus-mcp
- HTML page: https://forgeregistry.com/registry/%40scardis%2Fomnifocus-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
