MCP 服务器

Ganty MCP

app.ganty/mcp-server
商业与运营 生产力 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Manages Gantt projects, tasks, milestones, dependencies, critical paths, progress, and schedule propagation.

add_dependency
Add a finish-to-start dependency between two tasks in the same project.
输入模式
{'type': 'object', 'required': ['predecessorId', 'successorId'], 'properties': {'lagDays': {'type': 'number', 'description': 'Optional lag in days after predecessor finishes'}, 'successorId': {'type': 'string', 'description': 'Task that can start after predecessor finishes'}, 'predecessorId': {'type': 'string', 'description': 'Task that must finish first'}}, 'additionalProperties': False}
create_milestone
Add a milestone (key date) to a project.
输入模式
{'type': 'object', 'required': ['projectId', 'name', 'date'], 'properties': {'date': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'Hex color (defaults to #f59e0b)'}, 'projectId': {'type': 'string'}}, 'additionalProperties': False}
create_project
Create a new project in a workspace. Returns the created project. Subject to plan-based project count limits.
输入模式
{'type': 'object', 'required': ['workspaceId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Project name'}, 'color': {'type': 'string', 'description': 'Hex color (e.g. #3b82f6). Defaults to blue.'}, 'endDate': {'type': 'string', 'description': 'YYYY-MM-DD. Optional.'}, 'startDate': {'type': 'string', 'description': 'YYYY-MM-DD. Defaults to today.'}, 'description': {'type': 'string'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID (UUID)'}}, 'additionalProperties': False}
create_task
Create a new task in a project. Dates must be in YYYY-MM-DD format. End date is exclusive (a 1-day task has end = start + 1 day).
输入模式
{'type': 'object', 'required': ['projectId', 'name', 'startDate', 'endDate'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string', 'description': 'Hex color (e.g. #3b82f6)'}, 'status': {'enum': ['not_started', 'in_progress', 'done', 'on_hold'], 'type': 'string'}, 'endDate': {'type': 'string', 'description': 'YYYY-MM-DD (exclusive end)'}, 'parentId': {'type': 'string', 'description': 'Parent task ID for hierarchy'}, 'progress': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'projectId': {'type': 'string'}, 'startDate': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'assigneeId': {'type': 'string', 'description': 'Profile ID of the assignee'}, 'description': {'type': 'string'}}, 'additionalProperties': False}
delete_project
Permanently delete a project. All tasks, milestones, and dependencies inside the project are also removed. This cannot be undone.
输入模式
{'type': 'object', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string'}}, 'additionalProperties': False}
delete_task
Delete a task. Child tasks and dependencies are removed as well.
输入模式
{'type': 'object', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string'}}, 'additionalProperties': False}
get_critical_path
Calculate the critical path of a project on the Ganty side and return it as data (don't ask the model to reason over raw task lists). Uses forward/backward CPM with progress-aware remaining duration. Returns critical_path tasks in order, per-task earliest/latest start/finish + slack, project_end_date, and total_duration_days. v1 limitations: Finish-to-Start dependencies only (Ganty has no other types), calendar days by default (business_days=true skips Sat/Sun but no holiday table), ignores multi-period segments, no resource calendars. Returns { error: 'cyclic_dependency', cycle } if a cycle is detected.
输入模式
{'type': 'object', 'required': ['project_id'], 'properties': {'as_of_date': {'type': 'string', 'description': 'YYYY-MM-DD. Start point for projecting remaining work. Defaults to today.'}, 'project_id': {'type': 'string', 'description': 'Project ID (UUID)'}, 'business_days': {'type': 'boolean', 'description': 'If true, skip Saturday and Sunday in duration calculations. National holidays are still treated as working days (v1 has no holiday table). Defaults to false.'}}, 'additionalProperties': False}
get_task
Get detailed information about a single task, including assignees and dependencies.
输入模式
{'type': 'object', 'required': ['taskId'], 'properties': {'taskId': {'type': 'string', 'description': 'Task ID (UUID)'}}, 'additionalProperties': False}
list_milestones
List milestones in a project (key dates such as launch or review gates).
输入模式
{'type': 'object', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string'}}, 'additionalProperties': False}
list_projects
List all projects in a workspace (excluding archived).
输入模式
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID (UUID)'}}, 'additionalProperties': False}
list_tasks
List tasks in a project. Supports optional filtering by name (search), status, and assignee.
输入模式
{'type': 'object', 'required': ['projectId'], 'properties': {'search': {'type': 'string', 'description': 'Filter task name by case-insensitive substring'}, 'status': {'enum': ['not_started', 'in_progress', 'done', 'on_hold'], 'type': 'string'}, 'projectId': {'type': 'string', 'description': 'Project ID (UUID)'}, 'assigneeId': {'type': 'string', 'description': 'Filter by assignee profile ID'}}, 'additionalProperties': False}
list_workspaces
Get all workspaces the authenticated user is a member of.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
reschedule_and_propagate
Compute the downstream impact of shifting a single task. Default is dry_run (no DB writes); set mode='commit' to actually persist the changes. Cascades forward only (no pull): successors are pushed only if their predecessor's new end + lag would violate their current start. Tasks with progress=100 are treated as pinned; pass pinned_task_ids for additional pins. When a pin would be violated, the change is recorded in 'conflicts' and not propagated further. In mode='commit', if any conflicts exist nothing is written (all-or-nothing transaction). Same v1 limitations as get_critical_path: FS only, calendar days by default, no holiday table, ignores multi-period segments.
输入模式
{'type': 'object', 'required': ['task_id'], 'properties': {'mode': {'enum': ['dry_run', 'commit'], 'type': 'string', 'description': 'dry_run (default): compute and return; do not modify DB. commit: write to DB in a single transaction, but only if no conflicts. Audit logged on commit.'}, 'shift': {'type': 'string', 'description': "Relative shift like '+3d' (push back) or '-2d' (pull earlier). Specify exactly one of shift or new_start_date."}, 'task_id': {'type': 'string', 'description': 'Task ID (UUID) to shift'}, 'business_days': {'type': 'boolean', 'description': 'If true, skip Sat/Sun in duration math. Defaults to false.'}, 'new_start_date': {'type': 'string', 'description': 'Absolute new start date as YYYY-MM-DD. Specify exactly one of shift or new_start_date.'}, 'pinned_task_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Additional task IDs to treat as pinned (in addition to progress=100 tasks).'}, 'respect_dependencies': {'type': 'boolean', 'description': 'If false, only the named task moves; successors are not cascaded. Default true.'}}, 'additionalProperties': False}
set_task_progress
Update the progress percentage of a task (0-100). Status is auto-derived: 0=not_started, 1-99=in_progress, 100=done.
输入模式
{'type': 'object', 'required': ['taskId', 'progress'], 'properties': {'taskId': {'type': 'string'}, 'progress': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}
update_task
Update fields of an existing task. Only provided fields will be modified.
输入模式
{'type': 'object', 'required': ['taskId'], 'properties': {'name': {'type': 'string'}, 'color': {'type': 'string'}, 'status': {'enum': ['not_started', 'in_progress', 'done', 'on_hold'], 'type': 'string'}, 'taskId': {'type': 'string'}, 'endDate': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'progress': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'startDate': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'assigneeId': {'type': ['string', 'null'], 'description': 'null to unassign'}, 'description': {'type': 'string'}}, 'additionalProperties': False}
已添加
reschedule_and_propagate
2026年9月17日 07:57
已添加
get_critical_path
2026年9月17日 07:57
已添加
delete_task
2026年9月17日 07:57
已添加
add_dependency
2026年9月17日 07:57
已添加
set_task_progress
2026年9月17日 07:57
已添加
update_task
2026年9月17日 07:57
已添加
create_task
2026年9月17日 07:57
已添加
create_milestone
2026年9月17日 07:57
已添加
list_milestones
2026年9月17日 07:57
已添加
get_task
2026年9月17日 07:57
已添加
list_tasks
2026年9月17日 07:57
已添加
delete_project
2026年9月17日 07:57
已添加
create_project
2026年9月17日 07:57
已添加
list_projects
2026年9月17日 07:57
已添加
list_workspaces
2026年9月17日 07:57