Ganty MCP

Gantt chart SaaS with server-side critical path and dependency-aware shift-impact tools, plus CRUD.

我該用這個嗎

品質與安全性

A
說明品質
99%
結構描述完整度
87%
命名品質
99%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~1,880Token(工具定義)
~1.0 KB典型回應大小
中等的注意力影響(128k 上下文的 1.47%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://ganty.app/api/mcp"
    }
  }
}

遠端端點

https://ganty.app/api/mcpstreamable-http

它能做什麼

工具清單

工具(15)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢list_workspaces

Get all workspaces the authenticated user is a member of.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_projects(workspaceId)

List all projects in a workspace (excluding archived).

輸入結構描述

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "description": "Workspace ID (UUID)"
    }
  },
  "required": [
    "workspaceId"
  ],
  "additionalProperties": false
}
🟡create_project(workspaceId, name, description, color, startDate, ...)

Create a new project in a workspace. Returns the created project. Subject to plan-based project count limits.

輸入結構描述

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "description": "Workspace ID (UUID)"
    },
    "name": {
      "type": "string",
      "description": "Project name"
    },
    "description": {
      "type": "string"
    },
    "color": {
      "type": "string",
      "description": "Hex color (e.g. #3b82f6). Defaults to blue."
    },
    "startDate": {
      "type": "string",
      "description": "YYYY-MM-DD. Defaults to today."
    },
    "endDate": {
      "type": "string",
      "description": "YYYY-MM-DD. Optional."
    }
  },
  "required": [
    "workspaceId",
    "name"
  ],
  "additionalProperties": false
}
🔴delete_project(projectId)

Permanently delete a project. All tasks, milestones, and dependencies inside the project are also removed. This cannot be undone.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false
}
🟢list_tasks(projectId, search, status, assigneeId)

List tasks in a project. Supports optional filtering by name (search), status, and assignee.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "description": "Project ID (UUID)"
    },
    "search": {
      "type": "string",
      "description": "Filter task name by case-insensitive substring"
    },
    "status": {
      "type": "string",
      "enum": [
        "not_started",
        "in_progress",
        "done",
        "on_hold"
      ]
    },
    "assigneeId": {
      "type": "string",
      "description": "Filter by assignee profile ID"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false
}
🟢get_task(taskId)

Get detailed information about a single task, including assignees and dependencies.

輸入結構描述

{
  "type": "object",
  "properties": {
    "taskId": {
      "type": "string",
      "description": "Task ID (UUID)"
    }
  },
  "required": [
    "taskId"
  ],
  "additionalProperties": false
}
🟢list_milestones(projectId)

List milestones in a project (key dates such as launch or review gates).

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": false
}
🟡create_milestone(projectId, name, date, color)

Add a milestone (key date) to a project.

輸入結構描述

{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "color": {
      "type": "string",
      "description": "Hex color (defaults to #f59e0b)"
    }
  },
  "required": [
    "projectId",
    "name",
    "date"
  ],
  "additionalProperties": false
}
🟡create_task(projectId, name, startDate, endDate, description, ...)

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",
  "properties": {
    "projectId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "startDate": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "YYYY-MM-DD (exclusive end)"
    },
    "description": {
      "type": "string"
    },
    "parentId": {
      "type": "string",
      "description": "Parent task ID for hierarchy"
    },
    "assigneeId": {
      "type": "string",
      "description": "Profile ID of the assignee"
    },
    "progress": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "status": {
      "type": "string",
      "enum": [
        "not_started",
        "in_progress",
        "done",
        "on_hold"
      ]
    },
    "color": {
      "type": "string",
      "description": "Hex color (e.g. #3b82f6)"
    }
  },
  "required": [
    "projectId",
    "name",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false
}
🟡update_task(taskId, name, description, startDate, endDate, ...)

Update fields of an existing task. Only provided fields will be modified.

輸入結構描述

{
  "type": "object",
  "properties": {
    "taskId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "startDate": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "progress": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "status": {
      "type": "string",
      "enum": [
        "not_started",
        "in_progress",
        "done",
        "on_hold"
      ]
    },
    "color": {
      "type": "string"
    },
    "assigneeId": {
      "type": [
        "string",
        "null"
      ],
      "description": "null to unassign"
    }
  },
  "required": [
    "taskId"
  ],
  "additionalProperties": false
}
🟡set_task_progress(taskId, 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",
  "properties": {
    "taskId": {
      "type": "string"
    },
    "progress": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "taskId",
    "progress"
  ],
  "additionalProperties": false
}
🟡add_dependency(predecessorId, successorId, lagDays)

Add a finish-to-start dependency between two tasks in the same project.

輸入結構描述

{
  "type": "object",
  "properties": {
    "predecessorId": {
      "type": "string",
      "description": "Task that must finish first"
    },
    "successorId": {
      "type": "string",
      "description": "Task that can start after predecessor finishes"
    },
    "lagDays": {
      "type": "number",
      "description": "Optional lag in days after predecessor finishes"
    }
  },
  "required": [
    "predecessorId",
    "successorId"
  ],
  "additionalProperties": false
}
🔴delete_task(taskId)

Delete a task. Child tasks and dependencies are removed as well.

輸入結構描述

{
  "type": "object",
  "properties": {
    "taskId": {
      "type": "string"
    }
  },
  "required": [
    "taskId"
  ],
  "additionalProperties": false
}
🟢get_critical_path(project_id, as_of_date, business_days)

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",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Project ID (UUID)"
    },
    "as_of_date": {
      "type": "string",
      "description": "YYYY-MM-DD. Start point for projecting remaining work. Defaults to today."
    },
    "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."
    }
  },
  "required": [
    "project_id"
  ],
  "additionalProperties": false
}
🟡reschedule_and_propagate(task_id, shift, new_start_date, mode, respect_dependencies, ...)

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",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "Task ID (UUID) to shift"
    },
    "shift": {
      "type": "string",
      "description": "Relative shift like '+3d' (push back) or '-2d' (pull earlier). Specify exactly one of shift or new_start_date."
    },
    "new_start_date": {
      "type": "string",
      "description": "Absolute new start date as YYYY-MM-DD. Specify exactly one of shift or new_start_date."
    },
    "mode": {
      "type": "string",
      "enum": [
        "dry_run",
        "commit"
      ],
      "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."
    },
    "respect_dependencies": {
      "type": "boolean",
      "description": "If false, only the named task moves; successors are not cascaded. Default true."
    },
    "pinned_task_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Additional task IDs to treat as pinned (in addition to progress=100 tasks)."
    },
    "business_days": {
      "type": "boolean",
      "description": "If true, skip Sat/Sun in duration math. Defaults to false."
    }
  },
  "required": [
    "task_id"
  ],
  "additionalProperties": false
}

建議的提示詞

explore_workflow
List available [items], then get details for each one using Ganty MCP
預期的工具: list_workspacesget_task
fetch_info
Fetch [information type] using Ganty MCP
預期的工具: get_task
browse_collection
Show me the [collection] from Ganty MCP
預期的工具: list_workspaces
retrieve_data
Get details about [item] from Ganty MCP
預期的工具: get_task
list_items
List all [items] available in Ganty MCP
預期的工具: list_workspaces

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本15 個工具
已驗證未記錄版本15 個工具