agent-gantt
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-ganttCreate a project 'Website Redesign' with tasks: design, develop, test."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agent-gantt
agent-gantt is a dependency-free Model Context Protocol server for maintaining small project plans that AI agents can render as Gantt charts. State lives in SQLite and the server communicates over MCP stdio.
Features
Projects, tasks, assignees, status, progress, and date ranges.
Explicit same-project task dependencies; nonexistent tasks and dependency cycles are rejected.
Gantt-friendly project view with tasks and dependency edges.
Python 3.9+ and its standard library only. No package installation or network service is required.
Related MCP server: Project Tracking MCP Server
Install
Requires Python 3.9+ and uv. Register the package directly from GitHub with the MCP client’s normal stdio configuration. The first launch installs the package in an isolated environment; no repository checkout or custom installer is needed.
# Claude Code
claude mcp add -s user agent-gantt -- uvx --from git+https://github.com/TobiasCoding/agent-gantt-mcp.git agent-gantt
# Codex CLI
codex mcp add agent-gantt -- uvx --from git+https://github.com/TobiasCoding/agent-gantt-mcp.git agent-ganttThe default database is ~/.local/state/agent-gantt/projects.sqlite3. To share a database across clients, add AGENT_GANTT_DB to that server’s MCP env configuration (or use the client CLI’s environment option).
Tools
create_project, list_projects
create_task, update_task
add_dependency
project_view returns all tasks and dependency edges in a Gantt-friendly structure.
Dates are ISO dates (YYYY-MM-DD). Valid status values are todo, in_progress, blocked, and done.
Data and privacy
The repository contains no project, task, or timeline data. At runtime, data is written to ~/.local/state/agent-gantt/projects.sqlite3 by default; it is intentionally ignored by Git. Treat that database as sensitive if it contains planning information. Set AGENT_GANTT_DB to choose another durable location.
License
MIT. See LICENSE.
Available Tools
10 toolsadd_dependencyC
Add predecessor; rejects cycles and cross-project edges.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| reason | No | ||
| task_id | Yes | ||
| depends_on_id | Yes | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses important rejection rules (cycles and cross-project edges), but omits mutation side effects, permissions, idempotency behavior, and return semantics for a five-parameter write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Its brevity is partly under-specification, but from a conciseness perspective it is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with five parameters, no annotations, and no output schema, the description is too thin. It confirms validation behavior but leaves parameter semantics, usage context, and mutation effects incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description does not explain the roles of task_id, depends_on_id, actor, reason, or idempotency_key. It leaves the direction of the dependency and the purpose of supporting parameters entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('predecessor'), making the tool's core action clear. It does not explicitly differentiate from sibling tools, but no sibling appears to handle dependency creation, so the purpose is still highly identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is valid by stating it rejects cycles and cross-project edges, which tells the agent when the operation will fail. However, it gives no guidance on prerequisites, alternatives, or when to prefer this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batchB
Atomic 1..50 task/dependency operations. Each has tool, arguments, optional ref on create_task. Use $ref in later task_id/depends_on_id.
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses atomicity and the 1..50 bound, but says nothing about rollback/failure semantics (what happens if one operation fails), the result shape, or permission requirements. The idempotency_key parameter is present in the schema yet never explained behaviorally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler: the atomicity/count constraint leads, followed by the item shape and the ref usage rule. It is efficient, though the final $ref sentence is terse enough to be slightly cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-batching tool with no annotations, no output schema, 0% schema coverage, and a nested array of operations, the description is too thin. It omits failure/rollback behavior, returned results per operation, and idempotency semantics — all critical for an agent deciding to commit 50 mutations at once.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the otherwise-opaque ref mechanism (optional on create_task, referenced later via $ref in task_id/depends_on_id), which is genuinely valuable, but 'arguments' stays opaque and idempotency_key is entirely undocumented, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (task/dependency operations), the batching scope (1..50), and the atomicity guarantee, and it enumerates the operations it aggregates (create_task, update_task, add_dependency), which implicitly distinguishes it from the individual sibling tools. It lacks an explicit verb ('executes') and never names a sibling it replaces, so it falls short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Atomic' implies the usage context (prefer when all-or-nothing semantics matter), and the $ref/$ref instruction tells the agent how to wire dependencies. However, it never says when to choose batch over sequential create_task/update_task calls, nor any exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
changesD
Read unfiltered task changes after_revision. Apply by task ID; after all pages poll from through_revision. Get full task using event revision.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| project_id | Yes | ||
| after_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Read' implies a safe read and 'after all pages poll' hints at pagination, but there is no disclosure of auth requirements, rate limits, ordering, or what 'unfiltered' actually means for the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences are terse, but the brevity comes at the cost of coherence: each sentence introduces a new cryptic term rather than building a usable picture, so the text is under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 4-parameter tool with no annotations, no output schema, and 0% schema description coverage needs a substantial description, but this one omits parameter meanings and introduces phantom fields. An agent cannot reliably invoke it from this text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, yet it explains only after_revision and instead references non-existent parameters (through_revision, 'event revision', 'task ID' despite no task_id field). The required project_id and the limit/cursor parameters are never addressed, making the description actively misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name 'changes' is vague, and while 'Read unfiltered task changes after_revision' gestures at a verb+resource, the follow-up sentences ('Apply by task ID', 'poll from through_revision', 'Get full task using event revision') reference entities that don't exist and leave the actual purpose muddled. No differentiation from siblings like get_detail or project_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'after all pages poll from through_revision' hints at a polling/pagination workflow, but through_revision is not a parameter, so the guidance is unusable. There is no statement of when to use this versus sibling tools, nor any prerequisite or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coordinateC
Atomic task lifecycle with fresh revision. Claim checks assignment/dependencies. Owner can block/resume/report progress/release/complete; reason records evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | ||
| action | Yes | ||
| reason | Yes | ||
| task_id | Yes | ||
| progress | No | ||
| idempotency_key | No | ||
| expected_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does disclose two real behavioral traits: atomicity and revision freshness (optimistic concurrency), plus that reason is audit evidence. It omits what happens on a revision mismatch, error semantics, and permission rules beyond "owner," leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the core concept, but the telegraphic, fragmentary phrasing ("Atomic task lifecycle with fresh revision") sacrifices parseability for brevity rather than earning each clause clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 7-parameter, 5-required mutation tool with zero annotation coverage, no output schema, and no schema descriptions is under-served by a two-sentence, jargon-heavy description. An agent lacks enough context to invoke the actions correctly or handle concurrency/error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate. It only glosses expected_revision ("fresh revision") and reason ("evidence"), while progress, idempotency_key, actor, and task_id remain entirely undocumented in both schema and text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the domain (task lifecycle state transitions with optimistic concurrency via a fresh revision) and the resource is inferable from task_id/action, but it never states a clean verb+resource and reads as compressed jargon. It only weakly differentiates from siblings like update_task, which an agent would need to disambiguate against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Claim checks assignment/dependencies" and "Owner can block/resume/report progress/release/complete" give precondition and role hints per action. However, there is no guidance on when to use this multi-action tool versus update_task or the other lifecycle siblings, so routing remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectD
Create project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no mention of side effects, permissions required, whether creation is idempotent, or what happens on duplicate names. For a mutating creation tool this is a complete gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short but that brevity reflects under-specification rather than efficient communication. There is nothing to be front-loaded because no substantive information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A three-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage requires the description to do all the work, and it does none. An agent cannot safely invoke this tool from the definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (name, description, idempotency_key), and the description adds no meaning for any of them. The idempotency_key parameter in particular is entirely unexplained despite implying significant retry semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create project." restates the tool name create_project almost verbatim, offering no additional specification of what a project is or how it differs from sibling operations like create_task or list_projects. It is a tautology rather than a meaningful purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance whatsoever on when to use this tool, what preconditions apply, or how it relates to alternatives such as create_task or list_projects. An agent has no basis for choosing this tool over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskC
Create task. summary: few words for humans; description: agent detail. parent_task_id groups subtasks, not a dependency.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| title | Yes | ||
| reason | No | ||
| status | No | ||
| summary | No | ||
| assignee | No | ||
| due_date | No | ||
| progress | No | ||
| project_id | Yes | ||
| start_date | No | ||
| description | No | ||
| parent_task_id | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no side effects, no permission requirements, no note that this is a non-destructive create, and no mention that idempotency_key exists for safe retries. It spends its words on field semantics instead of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with the core purpose front-loaded and zero filler. It is terse to the point of under-specification, but nothing in the text is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is far too thin. An agent cannot confidently populate the majority of fields or predict the tool's side effects from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, and the description only clarifies two of them (summary vs. description, and parent_task_id). Required params, status enum values, date formats, assignee/actor/reason, and idempotency_key remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first two words give a specific verb plus resource ('Create task'), so the agent immediately knows this is a creation tool. However, it never distinguishes itself from sibling create_project or explains its relationship to update_task, so it stops short of the 5-level sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, but the clause 'parent_task_id groups subtasks, not a dependency' implicitly routes the agent away from the add_dependency sibling for hierarchical relationships. That is real disambiguation, but it covers only one axis of the use decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detailC
Retrieve complete JSON in segments; concatenate json_segment using next_offset. For stable task reads use kind=event and revision as id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | Yes | ||
| count | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does usefully disclose a pagination contract – the response is segmented and 'json_segment' must be concatenated via 'next_offset' – but says nothing about permissions, error behavior, or the relationship between the 'offset' input and 'next_offset' output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the retrieval/pagination mechanic and no filler. It is terse to the point of being cryptic, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations, no output schema, and 0% schema coverage, the description is too thin: 'count'/'offset' semantics are absent, the output shape is only hinted at via field names not present in any schema, and 'revision as id' is not reconcilable with the integer 'id' property without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters. The description clarifies 'id' (pass the revision) and 'kind' (use 'event' for stable task reads), but 'count' and 'offset' are left entirely unexplained, so it only partly compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Retrieve' is specific, but the resource is described only as 'complete JSON' – it never says it returns a project, task, or event record even though 'kind' enumerates exactly those. The agent must infer the resource from the parameter enum rather than the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete routing rule ('For stable task reads use kind=event and revision as id'), which is real when-to-use guidance, but it names no alternative among siblings such as project_view or changes and states no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsC
List project IDs/names; detail on demand.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that only IDs/names are returned and that details are fetched elsewhere, but says nothing about read-only status, pagination, default result size, or authentication, leaving significant gaps for a cursor-paginated list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the core action and followed immediately by the routing hint. It is efficient, though arguably too terse given the undocumented pagination parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with two optional parameters including a pagination cursor and no annotations or output schema, the description is too thin. It omits how to page through results, what the default limit is, and what the returned ID/name objects look like, so an agent lacks enough context to call it robustly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions 'limit' or 'cursor'. The parameter names are somewhat self-explanatory, but the description adds no semantics about result-size caps or cursor-based pagination, failing to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('project IDs/names'), and the 'detail on demand' clause hints that fuller project information lives in another tool. It is clear enough to distinguish from create_project, though it does not explicitly name project_view or get_detail as the detail alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'detail on demand' implies this tool is for lightweight discovery and that a different tool should be used when details are needed, giving implicit usage context. However, no alternative is named and no when-not condition is stated, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_viewC
Paginated snapshot. Save revision. ready_only finds executable tasks; assignee includes unassigned when ready_only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| status | No | ||
| assignee | No | ||
| project_id | Yes | ||
| ready_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses pagination via "Paginated snapshot" but gives no read-only safety signal, no behavior around the status/limit/cursor parameters, and no sense of what a revision is or whether anything is mutated. "Save revision" reads like a mutation hint with no supporting context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short but fragmented into disconnected clauses, and "Save revision" does not clearly earn its place since its meaning is never established. It is under-specified rather than genuinely concise, and the most useful clue (ready_only semantics) is buried last.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, 0%-coverage tool with no annotations and no output schema, the description is far too thin. It never states the return shape or pagination mechanics (how cursor/limit interact) and omits most parameter semantics, leaving an agent unable to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate. It clarifies two non-obvious behaviors (ready_only finds executable tasks; assignee includes unassigned when ready_only), but leaves status, limit, cursor, and project_id entirely undocumented, and even the two it mentions are terse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase "Paginated snapshot" hints at a read operation returning a project view, but there is no explicit verb+resource statement like "retrieve a project's tasks." The fragment "Save revision" is confusing and unexplained, and nothing distinguishes it from siblings like get_detail or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what ready_only and assignee do, which is parameter behavior rather than when to choose this tool. There is no guidance on when to use project_view versus get_detail or list_projects, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskC
Update supplied fields; null clears a date. Claimed tasks require actor=owner.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| title | No | ||
| reason | No | ||
| status | No | ||
| summary | No | ||
| task_id | Yes | ||
| assignee | No | ||
| due_date | No | ||
| progress | No | ||
| start_date | No | ||
| description | No | ||
| parent_task_id | No | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, and it usefully states that null clears a date and claimed tasks require actor=owner. It omits other mutation traits, including reversibility, status transition rules, and idempotency behavior, so it is incomplete for a 13-parameter update tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two clauses are compact and front-load the core update behavior and key constraints. However, for a tool with 13 parameters and no schema descriptions, the brevity borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, 0% schema description coverage, no annotations, and no output schema, the description is too thin to be complete. It covers only two behavioral rules and leaves most parameter semantics, safety, and return behavior unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, so the description must compensate. It explains nullable date clearing and the actor=owner requirement, but leaves most parameters such as status, progress, assignee, parent_task_id, and idempotency_key undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear partial-update behavior for a task, with 'Update supplied fields' and special date-clearing semantics. However, it does not name siblings like create_task or coordinate, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or mention of alternatives among the sibling tools. The description only gives parameter-level constraints such as null clearing a date and claimed tasks requiring actor=owner, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v2.0.0- First observed
add_dependency - First observed
batch - First observed
changes - First observed
coordinate - First observed
create_project - First observed
create_task - First observed
get_detail - First observed
list_projects - First observed
project_view - First observed
update_task
TDQS
Scored across 10 tools
There is real overlap between mutation tools (update_task vs coordinate, which both change task state/lifecycle) and among read tools (list_projects, project_view, changes, get_detail all surface state). Descriptions help distinguish them (snapshot vs. delta vs. raw JSON), but an agent must read carefully to choose the right read/write path.
Mostly verb_noun (create_project, create_task, update_task, add_dependency, list_projects), but the set mixes in bare verbs (coordinate, changes, batch) and a noun_verb (project_view). Readable, but not a predictable single pattern.
10 tools is well-scoped for a Gantt/project-management server, covering project, task, dependency, lifecycle, batch, and read/sync operations without bloat.
Create/update exist for tasks and create/list for projects, but there is no delete_task, delete/update_project, or remove_dependency (add_dependency has no inverse). Read/sync coverage is strong, but lifecycle gaps could force agents into workarounds.
Maintenance
Related MCP Connectors
Project management MCP for AI agents with safe task reads and writes.
Project management shared by people and AI agents, with persistent project state through MCP.
Minimal issue tracker: projects, objectives and trackable plans, written by agents over MCP.
- VondetOAuthcom.vondet
A project planning board your AI reads and updates over MCP, so the plan stays one plan.
Related MCP Servers
- AlicenseAqualityDmaintenanceA local Model Context Protocol server providing backend tools for AI agents to manage projects and tasks with persistent storage in SQLite, enabling structured tracking of project tasks with dependencies, priorities, and statuses.124 npm25GPL 3.0
- FlicenseNot gradedqualityDmaintenanceEnables project and task management through a lightweight SQLite database, allowing users to create projects, add categorized tasks, track status changes, and get project statistics through natural language commands.-
- FlicenseAqualityBmaintenanceEnables coding agents to track and coordinate project work through a shared SQLite ledger, including task plans, session ancestry, claims, work locations, blockers, and commits via MCP tools.9-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to manage projects, roadmaps, periods, and tasks through MCP tools, backed by a local SQLite database with schema validation.MIT