Skip to main content

MCP server that lets Claude (and other LLM agents) drive OmniPlan 4 on macOS via the omniJS bridge.

Project description

mcp-omniplan-jtr

Drive OmniPlan 4 on macOS from Claude (or any MCP-compatible LLM agent) using natural language.

Tell an agent "create a milestone called Beta Launch under the Deployment group, link it after the QA-complete task, and assign it to Alice." It does. The Gantt redraws.

19 tools across tasks, dependencies, resources, assignments, and project metadata. MIT-licensed. macOS only.

Lineage: this build is inspired by xiahan4956/omniplan-mcp (MIT) — the original jxa.py bridge is reused under MIT. The rest of the codebase was rebuilt from scratch (~86% of current LOC). It's distributed under a distinct PyPI name (mcp-omniplan-jtr) so as not to take the original author's namespace. See CHANGELOG.md for what changed.

What it does

You say The agent calls OmniPlan reflects
"Show me incomplete tasks due this week" query_tasks(due_before=…, completed=false) filters the outline
"Create a 4-hour task 'Refactor login' under Auth" create_task(parent_id, effort_seconds=14400) new row in the Gantt
"Link 'Refactor login' before 'Run E2E'" add_dependency(predecessor_id, successor_id, kind="FS") dependency arrow drawn
"Assign Alice at 50%" assign_resource(task_id, resource_id, units=0.5) assignment chip on the bar
"Mark Beta Launch as a milestone, color green" update_task(type="milestone", color="green") diamond marker, green
"Save the document" save_document() written to disk

Requirements

  • macOS (any recent version)
  • OmniPlan 4 — installed and running with a document open
  • Python 3.11+
  • Automation permission granted to your terminal / MCP host app (System Settings → Privacy & Security → Automation → enable OmniPlan)

Install

Pick whichever you prefer:

# 1. Homebrew tap (resolves Python deps via brew, isolates from your system Python)
brew tap johntrandall/tap
brew install mcp-omniplan-jtr
# 2. uv tool (recommended for the MCP ecosystem; installs from PyPI)
uv tool install mcp-omniplan-jtr
# 3. pip (if you don't have uv)
pip install mcp-omniplan-jtr

All three install the mcp-omniplan-jtr command. Register it as an MCP server with whichever client you use:

Claude Code (CLI)

claude mcp add -s user omniplan-local mcp-omniplan-jtr

Then restart Claude Code.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "omniplan-local": {
      "command": "mcp-omniplan-jtr"
    }
  }
}

Then restart Claude Desktop.

First call — Automation permission

The first time the agent calls a tool, macOS may prompt for Automation access. Approve OmniPlan automation for your terminal or the app running the MCP server. If the prompt was missed, grant it manually:

System Settings → Privacy & Security → Automation — enable OmniPlan for your terminal or MCP host.

If denied, every tool returns a clear error: "macOS blocked Automation access to OmniPlan. Grant permission in System Settings > Privacy & Security > Automation."

Tools

Tool What it does
list_documents List all currently open OmniPlan documents
query_tasks Search and filter tasks by keyword, type, completion, color, or date range
find_task Look up tasks by title; substring by default, exact opt-in
get_task Get full details of a task by ID
create_task Create a new task under a parent task or project root
create_tasks Bulk-create many tasks in a single round-trip; supports intra-batch parent references
update_task Update title, note, dates, completion, color, effort, three-point estimates, constraint dates
delete_task Delete a task by ID
add_dependency Link two tasks (FS / SS / FF / SF, optional lead time)
remove_dependency Remove the dependency between two tasks
list_dependencies List dependencies in the document (or filtered to one task)
save_document Save the front document to disk
get_project_info Project metadata: name, path, dates, scenarios
update_project Update project-level fields (currently start date)
list_resources List all resources
create_resource Create a resource (staff / equipment / material / group)
delete_resource Delete a resource by ID
assign_resource Assign a resource to a task with optional units fraction
unassign_resource Remove a resource assignment from a task
list_assignments List a task's resource assignments

All tools accept an optional document_name parameter. If omitted, the frontmost open document is used.

Example prompts

"Show me all incomplete tasks due this week in my project."

"Create a milestone called 'Beta Launch' under the Deployment group, dependent on 'QA-complete', and assign it to Alice at 50%."

"Mark task 42 as complete and set its bar color to green."

"What tasks are assigned the red color?"

"List every resource and how much they're allocated across the project."

Limitations

OmniPlan 4.10.2's omniJS surface has a few small gaps. Most tools work transparently; these are the documented edges:

  • Task reparenting is not exposed — there's no task.moveTo in the omniJS API. If you need to move a task to a different parent group, do it in the OmniPlan UI; the MCP can't.
  • Resource working hours and project currency are not editable through this MCP — those properties don't round-trip through the omniJS bridge.
  • OmniPlan must be running with a document open. The MCP doesn't launch OmniPlan or open documents for you.

For the full catalogue (and the mitigations), see dev-docs/omnijs-persistence-gaps.md.

For developers

If you want to extend, hack on, or contribute to this MCP:

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_omniplan_jtr-0.4.2.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_omniplan_jtr-0.4.2-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file mcp_omniplan_jtr-0.4.2.tar.gz.

File metadata

  • Download URL: mcp_omniplan_jtr-0.4.2.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.16

File hashes

Hashes for mcp_omniplan_jtr-0.4.2.tar.gz
Algorithm Hash digest
SHA256 84563bb93842fa35ee615b60a02536bb6fa461d8551c9736c9db23fe361f6bfe
MD5 51fa6181e8d8f23baad180dc27026fcd
BLAKE2b-256 91d28a8914581bf4da6eff39556c5912d34267618623f0b8fe3d70c0bb03393e

See more details on using hashes here.

File details

Details for the file mcp_omniplan_jtr-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_omniplan_jtr-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4d0d814ba7132d86c51f9ef5c1f35db0bbe18a7d4fe3fa6a217d628601de53aa
MD5 4c3854fdad05e5ca368d835c4d423966
BLAKE2b-256 ebe27c42d39c8709859d59582f71045fcc6abe781e5bd9db65e02b7098a1eefc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page