{
  "markdown": "# Ganty MCP\n\n[Ganty](https://ganty.app) is a Gantt chart SaaS with a built-in **Model Context Protocol (MCP)** server that lets AI clients like Claude Desktop and Claude Code drive your projects in natural language — and computes critical paths and shift-impact server-side rather than asking the LLM to do math.\n\n> **Status: v1.0.0** — production endpoint at `https://ganty.app/api/mcp` (Streamable HTTP)\n> Free on every Ganty plan including Free.\n\n## What makes this different\n\nMost MCP servers expose CRUD over an existing API. Ganty's also exposes **calculation tools that compute on the server and return JSON** — so the LLM never has to reason about dates, dependencies, or critical paths.\n\n- `get_critical_path` — forward/backward-pass CPM with progress-aware remaining duration. Returns the critical path tasks in order, per-task earliest/latest start/finish, slack, projected end date. Detects cycles before computing and returns `error: 'cyclic_dependency'` instead of hanging or guessing.\n- `reschedule_and_propagate` — simulate or commit a task shift. Default mode is `dry_run` (no DB writes). Push-only cascade respects pinned tasks (anything at `progress=100` or in `pinned_task_ids`) and reports `conflicts` instead of overwriting. `commit` mode wraps everything in an all-or-nothing transaction.\n\n## Quick start\n\n1. **Issue an MCP token** in Ganty: dashboard → Settings → MCP Integration → \"Issue new token\".\n2. **Configure Claude Desktop** (`claude_desktop_config.json`) or **Claude Code** (`.mcp.json` at project root):\n   ```json\n   {\n     \"mcpServers\": {\n       \"ganty\": {\n         \"url\": \"https://ganty.app/api/mcp\",\n         \"headers\": { \"Authorization\": \"Bearer YOUR_TOKEN\" }\n       }\n     }\n   }\n   ```\n3. **Restart Claude** and try a prompt:\n   - `\"List my Ganty projects\"`\n   - `\"What's the critical path for the e-commerce rebuild project?\"`\n   - `\"If I push the payments task by +3 days, when does release ship?\"`\n\nFull setup walk-through: <https://ganty.app/guide/mcp-integration>\n\n## Tools\n\n### Read tools (visible to read-only and write tokens)\n\n| Tool | Description |\n|---|---|\n| `list_workspaces` | Workspaces the token's user belongs to |\n| `list_projects` | Projects in a workspace |\n| `list_tasks` | Tasks in a project (filter by name/status/assignee) |\n| `get_task` | Single task with assignees + dependencies |\n| `list_milestones` | Milestones in a project |\n| `get_critical_path` | **Server-side CPM with slack and total duration** |\n\n### Write tools (write-scope tokens only)\n\n| Tool | Description |\n|---|---|\n| `create_project`, `delete_project` | Project lifecycle |\n| `create_task`, `update_task`, `delete_task` | Task lifecycle |\n| `set_task_progress` | Update task progress (auto-sets status) |\n| `add_dependency` | Finish-to-Start dependency between two tasks |\n| `create_milestone` | Add a milestone |\n| `reschedule_and_propagate` | **Shift a task, cascade through dependencies, dry-run or commit** |\n\n`reschedule_and_propagate` is classified as a write tool even in `dry_run` mode (it shares the same compute path as commit and we don't want read-only tokens running unlimited simulations).\n\n## v1 scope and limitations\n\nWe prefer explicit non-support over silent wrong answers. Every response from the calculation tools includes a `limitations` array.\n\n- **Dependency types**: Finish-to-Start only (Ganty's schema doesn't model SS/FF/SF)\n- **Calendar**: calendar days by default; `business_days: true` skips Sat/Sun only (no holiday table)\n- **No resource calendars** in v1\n- **Multi-period tasks (extraSegments)** are ignored in v1; calculations use only the main start/end of each task\n- **Pinned tasks**: `progress=100` automatically pinned; supply `pinned_task_ids` for additional pins\n- **Push-only cascade**: successors are pushed back when required, never pulled forward\n\n## Architecture\n\n- **Transport**: Streamable HTTP (JSON-RPC 2.0 over HTTP POST) — `https://ganty.app/api/mcp`\n- **Auth**: Bearer tokens (`gnty_...`) issued from the Ganty dashboard. Tokens are scoped `read` or `write`.\n- **Rate limits**: 120 req/min for read, 30 req/min for write (per token)\n- **Audit logging**: every write call is logged with action, actor, IP, and arg summary\n- **Atomicity**: `reschedule_and_propagate` `commit` mode is wrapped in a Prisma transaction; conflicts abort without writes\n\nThe calculation logic lives in pure TypeScript functions backed by 28 golden tests asserting concrete dates and day counts (linear chain shifts, diamond merges, cycle detection within 2 seconds, progress-aware remaining duration, hand-calculated CPM with slack, business-day mode, lag-day handling, push-only cascade).\n\n## Links\n\n- **Marketing page**: <https://ganty.app/integrations/mcp>\n- **Setup guide**: <https://ganty.app/guide/mcp-integration>\n- **Claude × Gantt guide**: <https://ganty.app/blog/claude-gantt-chart>\n- **Design article**: <https://ganty.app/blog/mcp-server-side-calculation-engine>\n- **Tools by example**: <https://ganty.app/blog/mcp-gantt-chart-5-examples>\n- **Troubleshooting**: <https://ganty.app/blog/mcp-setup-troubleshooting>\n- **Sign up (free 5-member plan)**: <https://ganty.app/signup>\n\n## License\n\nMIT for this documentation repository.\nThe Ganty server itself is a hosted SaaS; the MCP endpoint is a feature of every Ganty workspace.\n",
  "bytes": 5302,
  "sha": "3a2dedebd8e18a107dcb55568ad4f8f480676ff956e1bfe8c80084d1c93435d8",
  "repo_slug": "homareyoshizaki/ganty-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_ganty_mcp_server_b7ba58fa/readme"
}