omniplan-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| query_tasksA | Query tasks in an OmniPlan document with optional filters. Args: keyword: Filter by title or note containing this text (case-insensitive). task_type: One of: task, group, milestone, hammock. completed: True = completed only, False = incomplete only, None = all. due_before: ISO date string (e.g. 2025-12-31). Tasks ending before this date. due_after: ISO date string (e.g. 2025-01-01). Tasks ending after this date. limit: Maximum number of tasks to return. Returns all tasks if omitted. detail: 'summary' (default) returns core fields only; 'full' returns all fields. |
| get_taskA | Get full details of a single task by its unique ID. Args: task_id: The uniqueID of the task. |
| create_taskA | Create a new task in an OmniPlan document. Args: title: Task title. parent_id: uniqueID of the parent task. If omitted, adds to root. task_type: One of: task, group, milestone, hammock. Defaults to task. note: Optional task description. manual_start_date: ISO date string for manual start. manual_end_date: ISO date string for manual end. effort_seconds: Total effort in person-seconds (e.g. 14400 for 4h). min_effort_seconds: Three-point estimation minimum (person-seconds). expected_effort_seconds: Three-point estimation expected value. max_effort_seconds: Three-point estimation maximum. |
| create_tasksA | Create multiple tasks in a single JXA call. Performance: each Args:
tasks: list of task specs. Each spec is a dict with the same
fields Returns:
JSON array of created-task shapes — same fields as Raises ValueError on invalid parent_index references or unknown parent_id, before any task is created. |
| update_taskA | Update an existing task. Only provided fields are changed. Args:
task_id: The uniqueID of the task.
title: New title.
note: New note text.
completed: True to mark complete, False to mark incomplete.
manual_start_date: ISO date string, or empty string to clear.
manual_end_date: ISO date string, or empty string to clear.
effort_seconds: Total effort in person-seconds. Pass 0 to set to zero;
None (omit) to leave unchanged.
min_effort_seconds: Three-point estimation minimum (person-seconds).
expected_effort_seconds: Three-point estimation expected value.
max_effort_seconds: Three-point estimation maximum.
start_no_earlier_than: ISO date string, or empty string to clear.
Maps to |
| find_taskA | Look up tasks by title, returning lightweight identifiers. Removes the "list everything → grep → use ID" pattern when an agent knows the title but not the uniqueID. Args:
name: Title to match. Case-insensitive substring match by default.
exact: When True, only return tasks whose title equals Returns:
JSON array of |
| move_taskA | Reparent a task without changing its uniqueID. Wraps the omniJS Because uniqueID is preserved across the move, dependencies and resource assignments that reference the moved task stay intact — no clone-and-rebuild required. Args:
task_id: uniqueID of the task to move.
new_parent_id: uniqueID of the destination parent. If omitted,
the task is moved to the document root.
index: 0-based position in Returns:
JSON |
| delete_taskC | Delete a task by its unique ID. Args: task_id: The uniqueID of the task to delete. |
| list_documentsA | List all currently open OmniPlan documents. Note: task tools now always operate on the current front document. |
| save_documentA | Save the front OmniPlan document to disk. OmniPlan does NOT autosave the front document on idle — verified
empirically against OmniPlan 4.10.2 by editing a task via MCP and
polling Returns:
JSON |
| get_project_infoA | Return project-level info for the front document. Returns:
JSON omniJS surface gaps surfaced during implementation (probed 2026-05-01 against OmniPlan 4.10.2):
|
| update_projectA | Update project-level fields on the front document. Args:
start_date: ISO date for the project's actual start. Maps to
Returns:
Post-write Note: |
| add_dependencyA | Add a dependency from predecessor to successor. Args: predecessor_id: uniqueID of the prerequisite task. successor_id: uniqueID of the dependent task. kind: One of "FS" (finish-to-start, default), "SS", "FF", "SF". lead_time_seconds: Lead time before the successor can start, in work-seconds. Defaults to 0. Negative values are not supported here; if you need lag in the other direction, model it as a different dependency kind. Returns:
JSON |
| remove_dependencyA | Remove the dependency between two tasks. Args: predecessor_id: uniqueID of the prerequisite task. successor_id: uniqueID of the dependent task. Returns:
JSON |
| list_dependenciesA | List dependencies in the document. Args: task_id: Optional uniqueID. If provided, only dependencies where the task is the predecessor or successor are returned. If omitted, every dependency in the document is returned. Returns:
JSON array of |
| list_resourcesA | List all resources in the document. Returns:
JSON array of |
| create_resourceA | Create a new resource at the document's resource root. Args:
name: Resource name.
type: One of "staff" (default), "equipment", "material", "group".
email: Optional email address (relevant mainly for staff).
cost_per_use: Optional cost in the document's currency. Stored
as a Decimal — writes go through Returns:
JSON |
| move_resourceA | Reparent a resource without changing its uniqueID. Wraps the omniJS Because uniqueID is preserved across the move, assignments that reference the moved resource stay intact — no clone-and-rebuild. Args:
resource_id: uniqueID of the resource to move.
new_parent_id: uniqueID of the destination group resource. If
omitted, the resource is moved under the document's
rootResource.
index: 0-based position in Returns:
JSON |
| delete_resourceA | Delete a resource by uniqueID. Args: resource_id: uniqueID of the resource to delete. Returns:
JSON |
| assign_resourceA | Assign a resource to a task. Args:
task_id: uniqueID of the task.
resource_id: uniqueID of the resource.
units: Optional fractional allocation (1.0 = 100% of a staff
resource's working hours). Maps to the documented
Returns:
JSON |
| list_assignmentsA | List the resource assignments on a task. Args: task_id: uniqueID of the task. Returns:
JSON array of |
| unassign_resourceA | Remove a resource assignment from a task. Args: task_id: uniqueID of the task. resource_id: uniqueID of the resource. Returns:
JSON |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/johntrandall/omniplan-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server