mcp-server

Create scheduled Gantt charts with critical path from a plain-language plan — no account or key.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
81%
命名质量
95%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,463token 数(工具定义)
~3.2 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.14%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "@loopgantt/mcp-server"
      ]
    }
  }
}

可运行的软件包

npm@loopgantt/mcp-server1.4.0stdio

远程端点

https://loopgantt.com/api/mcpstreamable-http

它能做什么

工具清单

工具(4)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟡create_gantt(name, description, startDate, deadline, workDays, ...)

Create a Gantt chart from a task list — no account or API key needed. YOU author the plan: list the tasks in execution order with realistic working-day durations and dependencies (0-based positions of earlier tasks; use { task, type, lag } for start-to-start/finish-to-finish links or lag). Milestones have duration 0. Only add a dependency where a task truly needs another one finished - independent tasks should run in PARALLEL (share a predecessor, or take no dependencies at all and start at the project start). Group tasks into top-level phases for a structured plan/WBS: the phase task gets isPhase: true, its tasks get parent = the position of the phase. LoopGantt schedules it with its critical-path engine and returns a picture of the chart, the dates, the critical path and a link where the user can view, export (PNG/PDF) and save the chart. Always show the user the link. Tasks with a due date take deadline: YYYY-MM-DD (a marker - the reply reports the fit). Use create_gantt when the user wants a chart to open, export or save; use schedule_project instead for what-if date math where nothing should be stored.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Project name"
    },
    "description": {
      "type": "string",
      "description": "Optional one-line description"
    },
    "startDate": {
      "type": "string",
      "description": "YYYY-MM-DD (defaults to today)"
    },
    "deadline": {
      "type": "string",
      "description": "Optional deadline YYYY-MM-DD - drawn on the chart; compare with the returned projectEndDate and warn the user if the plan overshoots"
    },
    "workDays": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 7
      },
      "description": "Working weekdays as ISO numbers 1 (Mon) … 7 (Sun). Default Mon–Fri."
    },
    "holidays": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Non-working dates, YYYY-MM-DD"
    },
    "tasks": {
      "type": "array",
      "minItems": 1,
      "maxItems": 300,
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Task name"
          },
          "duration": {
            "type": "integer",
            "minimum": 0,
            "description": "Working days (default 1). 0 makes the task a milestone."
          },
          "isMilestone": {
            "type": "boolean",
            "description": "Milestone (zero duration, drawn as a diamond)"
          },
          "isPhase": {
            "type": "boolean",
            "description": "Top-level phase (a group). Tasks join it with parent = this position. Phases take no dependencies and no parent; their dates become the envelope of their tasks."
          },
          "parent": {
            "type": "integer",
            "minimum": 0,
            "description": "Position (0-based) of an EARLIER task with isPhase=true that this task belongs to"
          },
          "description": {
            "type": "string"
          },
          "deadline": {
            "type": "string",
            "description": "Finish-by date YYYY-MM-DD for a task with a due date (essay due, exam day, launch). A MARKER: the task is still scheduled normally and the reply reports its fit - buffer or days late."
          },
          "dependencies": {
            "type": "array",
            "description": "Predecessors: positions (0-based) of EARLIER tasks in this list, or objects { task, type: FS|SS|FF|SF, lag } for typed links / lag in days",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "object",
                  "required": [
                    "task"
                  ],
                  "properties": {
                    "task": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "FS",
                        "SS",
                        "FF",
                        "SF"
                      ]
                    },
                    "lag": {
                      "type": "integer"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  },
  "required": [
    "name",
    "tasks"
  ]
}
🟡schedule_project(name, description, startDate, deadline, workDays, ...)

Compute a schedule without storing anything: dates, critical path, float and project end for a task list (same input shape as create_gantt; name optional). Use it to answer "what is the critical path?", "when would this finish?", "how much slack does X have?". Use create_gantt when the user wants a chart they can open.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Project name"
    },
    "description": {
      "type": "string",
      "description": "Optional one-line description"
    },
    "startDate": {
      "type": "string",
      "description": "YYYY-MM-DD (defaults to today)"
    },
    "deadline": {
      "type": "string",
      "description": "Optional deadline YYYY-MM-DD - drawn on the chart; compare with the returned projectEndDate and warn the user if the plan overshoots"
    },
    "workDays": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 7
      },
      "description": "Working weekdays as ISO numbers 1 (Mon) … 7 (Sun). Default Mon–Fri."
    },
    "holidays": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Non-working dates, YYYY-MM-DD"
    },
    "tasks": {
      "type": "array",
      "minItems": 1,
      "maxItems": 300,
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Task name"
          },
          "duration": {
            "type": "integer",
            "minimum": 0,
            "description": "Working days (default 1). 0 makes the task a milestone."
          },
          "isMilestone": {
            "type": "boolean",
            "description": "Milestone (zero duration, drawn as a diamond)"
          },
          "isPhase": {
            "type": "boolean",
            "description": "Top-level phase (a group). Tasks join it with parent = this position. Phases take no dependencies and no parent; their dates become the envelope of their tasks."
          },
          "parent": {
            "type": "integer",
            "minimum": 0,
            "description": "Position (0-based) of an EARLIER task with isPhase=true that this task belongs to"
          },
          "description": {
            "type": "string"
          },
          "deadline": {
            "type": "string",
            "description": "Finish-by date YYYY-MM-DD for a task with a due date (essay due, exam day, launch). A MARKER: the task is still scheduled normally and the reply reports its fit - buffer or days late."
          },
          "dependencies": {
            "type": "array",
            "description": "Predecessors: positions (0-based) of EARLIER tasks in this list, or objects { task, type: FS|SS|FF|SF, lag } for typed links / lag in days",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "object",
                  "required": [
                    "task"
                  ],
                  "properties": {
                    "task": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "FS",
                        "SS",
                        "FF",
                        "SF"
                      ]
                    },
                    "lag": {
                      "type": "integer"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  },
  "required": [
    "tasks"
  ]
}
🟡list_templates

List LoopGantt's industry project templates with task counts and typical durations. Pick one, fetch it with get_template, adapt it, then create_gantt.

输入模式

{
  "type": "object",
  "properties": {}
}
🟡get_template(slug)

Get one industry template by slug: its task list with durations, ready to adapt and pass to create_gantt.

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Template slug from list_templates"
    }
  },
  "required": [
    "slug"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本4 个工具
已验证未记录版本4 个工具