Ganty MCP
Gantt chart SaaS with server-side critical path and dependency-aware shift-impact tools, plus CRUD.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"mcp-server": {
"url": "https://ganty.app/api/mcp"
}
}
}Puntos de conexión remotos
https://ganty.app/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (15)
🟢list_workspaces
Get all workspaces the authenticated user is a member of.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_projects(workspaceId)
List all projects in a workspace (excluding archived).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
}
},
"required": [
"projectId"
],
"additionalProperties": false
}🟡create_milestone(projectId, name, date, color)
Add a milestone (key date) to a project.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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
}Prompts recomendados
list_workspacesget_taskget_tasklist_workspacesget_tasklist_workspacesComunidad
Evidencia