claude-task-graph
Click on "Install 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., "@claude-task-graphCreate a task for the homepage redesign and link it to the wireframe idea."
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.
claude-task-graph
An MCP server + live graph viewer for Claude Code. Tasks, subtasks, ideas and discussion branches are stored as a graph and rendered live in your browser as a schematic-style diagram with connector lines — so you can skim the structure instead of reading walls of text, and tangents get parked as nodes instead of getting lost.
How it works
MCP server (stdio) exposes tools to Claude Code:
create_node,update_node,link_nodes,get_graph,delete_node.Viewer at
http://localhost:7300updates live over WebSocket while Claude works. Node border color = status, node shape = type (task / subtask / idea / discussion / note). Click a node for its full description and note log.Storage is a plain JSON file (
task-graph.jsonby default) — one graph per project directory, diffable, committable.
Related MCP server: visualize-chat-mcp
Install
git clone https://github.com/<you>/claude-task-graph.git
cd claude-task-graph
npm installHook into Claude Code
From the project directory where you want the graph:
claude mcp add task-graph -- node /path/to/claude-task-graph/src/server.jsThen copy the rules from CLAUDE.md.example into that project's
CLAUDE.md. Those rules are what make Claude actually maintain the graph:
register tasks before starting, park tangents as linked idea nodes, update
status as it goes.
Open http://localhost:7300 and keep it on a second screen.
Configuration
Env var | Default | Purpose |
|
| Where the graph is stored |
|
| Viewer HTTP/WebSocket port |
Set them in the claude mcp add command with -e if needed, e.g. a fixed
graph file shared across sessions:
claude mcp add task-graph -e TASK_GRAPH_FILE=$HOME/graphs/myproject.json -- node /path/to/claude-task-graph/src/server.jsNode types and relations
Types:
task,subtask,idea,discussion,note,finding,decision,bugStatuses:
pending,in-progress,done,blocked,parkedRelations:
subtask-of,depends-on(rendered dashed copper),spawned-from,discussion-of,related-to,found-in,decision-of
License
MIT
Available Tools
6 toolscreate_nodeA
Create a node in the task graph. Use for every task, subtask, idea, discussion topic, note, finding (something learned), decision (with reasoning) or bug that comes up. If it grew out of another node, pass parent_id so the graph shows where it branched from.
| Name | Required | Description | Default |
|---|---|---|---|
| doc | No | Link to a spec/plan document this node corresponds to, relative to the project root, optionally with a heading anchor: "docs/spec.md#error-handling". The user can jump to it from the viewer. | |
| type | Yes | task | subtask | idea | discussion | note | finding | decision | bug | |
| title | Yes | Short title, a few words | |
| status | No | Defaults to pending | |
| parent_id | No | ID of the node this branched from | |
| description | No | Longer explanation, context, decisions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the transparency burden. It discloses that a node is created and that parent_id creates a visible branch, but it does not mention persistence, generated IDs, response/return behavior, or potential side effects. This is adequate but not rich.
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: action, usage guidance, and parent linkage. The structure is front-loaded and every sentence adds value without padding.
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 tool with no annotations and no output schema, the description plus rich input schema is sufficient to select and invoke. It covers the core creation purpose and parent-branching behavior, though it omits response/error details, which are not strictly required here.
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 100%, so the description need not repeat parameter meanings. It does add a small amount of context around parent_id ('so the graph shows where it branched from') and elaborates on the intent of certain types (e.g., 'decision (with reasoning)'), but this is marginal beyond the schema's existing descriptions.
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 opens with a specific action and resource: 'Create a node in the task graph.' It also enumerates the node types and gives clear intent, distinguishing this creator tool from sibling operations like update_node, delete_node, and link_nodes.
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 explicitly tells when to use the tool ('Use for every task, subtask, idea, discussion topic, note, finding... or bug') and provides conditional guidance for parent_id. It doesn't name alternative tools or exclusions, but the context is clear enough that this is the creation path versus update/link/delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeA
Delete a node and all edges touching it. Only when the user explicitly asks.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the destructive nature (delete) and the cascading effect on all edges touching the node. The explicit user-consent guardrail adds important behavioral context, though it does not mention irreversibility or error handling.
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 that conveys the primary action, scope, and usage constraint with no wasted words. It is an exemplar of concise, structured tool documentation.
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 simple tool with one parameter and no output schema, the description covers the core action, the critical side-effect (edges), and a usage guardrail. It is lacking only in parameter-specific detail, which is somewhat mitigated by the single obvious 'id' field, but overall it is adequately complete for its complexity.
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 does not explain that 'id' is the identifier of the node to delete. The description only says 'a node' without mapping to the parameter, leaving the agent to infer that id is the target. More explicit parameter semantics are needed given the schema lacks descriptions.
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 clearly states the tool deletes a node and all touching edges, using a specific verb and resource. It distinguishes itself from sibling tools like create_node, update_node, and link_nodes by focusing on deletion and cascading edge removal.
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 phrase 'Only when the user explicitly asks' provides a clear usage condition and implies not to use it proactively or without authorization. While it doesn't name alternatives, it implicitly distinguishes deletion from update or creation, giving sufficient context for when to trigger this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graphA
Return the full current graph (all nodes and edges). Use to re-orient yourself at the start of a session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly states the tool returns the full graph, implying a read-only operation. It does not describe return format or performance implications, but the behavior is straightforward and sufficiently disclosed for a simple getter.
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 two short sentences, front-loaded with the core function and followed by a specific usage tip. Every word earns its place; there is no fluff or repetition.
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 tool with no parameters and no output schema, the description adequately covers what it does (returns full graph), what it includes (all nodes and edges), and when to use it (session start). The sibling context shows this is the only read tool, so the description is complete for its simplicity.
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?
The tool has zero parameters, so there is no parameter information to convey. The schema coverage is 100% (empty schema), and the baseline for 0 params is 4. The description adds no parameter semantics because none exist, which is appropriate.
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 clearly states the tool's function with a specific verb ('Return'), the resource ('full current graph'), and the scope ('all nodes and edges'). It distinguishes itself from sibling tools (create_node, update_node, etc.) by indicating a read operation of the entire graph.
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 specifies when to use this tool: 'Use to re-orient yourself at the start of a session.' This provides clear context. However, it does not explicitly mention alternatives or when not to use it, though sibling tools are clearly mutation-focused, making the differentiation implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_graphA
Bulk-create many nodes and edges in one call. Use when reconstructing a graph from existing project history (e.g. context injected by a memory plugin such as claude-mem). Provide your own temporary ids in nodes[].ref and reference them in edges; real ids are assigned and returned as a ref->id map.
| Name | Required | Description | Default |
|---|---|---|---|
| edges | No | ||
| nodes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It discloses a key behavior: temporary ids are provided, real ids are assigned, and a ref->id map is returned. It also explains edge referencing via temporary ids. However, it does not discuss partial failure, idempotency, or rollback behavior, leaving some 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?
Three sentences, each earning its place: the action, the use case, and the critical ref mechanism. The most important information is front-loaded, and there is zero fluff.
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 two-parameter tool with nested structures and no output schema, the description covers the main workflow well: when to use, how refs work, and what is returned. It stops short of describing error handling or the exact shape of the ref->id map response, but is largely sufficient for an agent to invoke correctly.
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?
The description adds crucial semantic meaning not present in the schema: the concept of temporary refs, how edges reference nodes via refs, and the return value mapping refs to real ids. This is essential for correct usage and goes far beyond the schema's field-level descriptions.
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 opens with a precise verb+resource+scope: 'Bulk-create many nodes and edges in one call.' This clearly distinguishes it from sibling tools like create_node (single node) and link_nodes (edges only), making the purpose unmistakable.
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 gives an explicit use case: 'Use when reconstructing a graph from existing project history.' It does not explicitly say when not to use it, but the contrast with single-purpose siblings is implied. Clear context but no exclusion statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_nodesA
Create a directed edge between two existing nodes to show logical flow.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| from | Yes | ||
| relation | No | subtask-of | depends-on | spawned-from | discussion-of | related-to | found-in | decision-of |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'existing nodes' as a prerequisite but does not explain what happens if nodes are missing, whether the operation is reversible, or any side effects. It also omits details about the relation parameter and potential errors.
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 sentence of 12 words, directly stating the action and purpose without filler. It is front-loaded with the verb 'create' and is appropriately sized for a simple tool.
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 simple linking tool, the description covers the core action, but it leaves out important operational details such as the meaning of the relation parameter and explicit prerequisite handling. Given the lack of annotations and output schema, a more complete description would be needed for full confidence.
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 low at 33%, as only 'relation' has a description (which merely lists enum values). The main description adds minimal context by referring to 'two existing nodes,' which hints at 'from' and 'to' but does not clarify their meaning or the purpose of 'relation.' The description fails to compensate for the schema's sparse documentation.
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 clearly states the tool creates a directed edge between existing nodes, using a specific verb and resource. It distinguishes itself from sibling tools like create_node (which creates nodes) and delete_node (which removes nodes), making the purpose unambiguous.
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 usage for linking existing nodes to show logical flow, which differentiates it from node management tools. However, it does not explicitly state when not to use it or mention alternatives, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nodeA
Update a node's title, description or status, and/or append a timestamped note. Notes are for the node's own status trail (why blocked, what the fix was); standalone information worth keeping should be its own note node via create_node so it is visible in the graph.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| doc | No | Spec/plan document link, e.g. "docs/spec.md#heading" | |
| note | No | Appended to the node's note log | |
| title | No | ||
| status | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that notes are appended with timestamps and clarifies the note's purpose, but it omits the fact that the 'doc' parameter is also updatable and does not mention any side effects, permissions, or return behavior. This is partially transparent but leaves 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?
The description is two sentences, front-loaded with the core function and followed by an explanatory note about the note field. Every sentence earns its place with no fluff.
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?
The tool is moderately complex (6 params, 1 enum, no output schema), and the description covers the main fields and usage guidance. However, it omits the 'doc' parameter from the list of updatable fields and does not describe return values or error behavior. It is adequate but not fully complete for a mutation tool with no annotations.
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 only 33%, so the description must compensate. It adds meaning to title, description, status, and note (especially the note's purpose), but completely omits the 'doc' parameter. Since the schema provides a description for doc, the description partially compensates but is not fully comprehensive.
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 clearly states the verb 'Update' on the resource 'node' with specific fields (title, description, status, note). It distinguishes from sibling tools like create_node by explicitly mentioning that standalone notes should be created via create_node instead of using this tool's note field.
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 provides explicit guidance on when to use this tool vs. alternatives. It explains that notes are for the node's own status trail and that standalone information should be a separate node via create_node. This directly tells the agent when not to use update_node and names the alternative.
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. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
create_node - First observed
delete_node - First observed
get_graph - First observed
import_graph - First observed
link_nodes - First observed
update_node
TDQS
Each tool targets a distinct action: create, get, update, link, import, delete. Even create_node and import_graph are clearly separated by purpose (single vs bulk creation), with descriptions that prevent confusion.
All tool names follow a consistent verb_noun snake_case pattern (create_node, get_graph, update_node, link_nodes, import_graph, delete_node). The plural in link_nodes is a minor variation but still fits the overall structure.
Six tools is well-scoped for a task graph server. Each tool has a clear role, covering creation, retrieval, update, linking, bulk import, and deletion without unnecessary overlap or bloat.
The set covers core graph lifecycle operations (create, read, update, delete, link, import). Gaps include lack of explicit unlink and inability to change a node's parent_id via update_node, which may require workarounds like recreating nodes.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Turn outlines and hierarchical notes into interactive mind maps through a hosted remote MCP server.
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA read-only task graph visualizer for Beads projects, running as an MCP server in Claude Desktop or VS Code Copilot to display interactive DAGs, list views, and stats dashboards.20MIT
- AlicenseBqualityDmaintenanceMCP server that visualizes Claude conversations as interactive mindmaps, enabling export and optional upload to Navigate Chat.211MIT
- AlicenseBqualityDmaintenancePersonal memory MCP server for Claude Code with an Obsidian-style graph. Enables persistent, queryable memories across sessions using Markdown files with bidirectional wiki-links and a D3.js force-directed graph UI.831MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server for AI-assisted project development and tracking. It exposes a typed graph of design nodes (concepts, decisions, requirements, etc.) and edges to Claude Code, enabling structured management of project knowledge and report generation.3Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PontusO/iLabs_task_graph'
If you have feedback or need assistance with the MCP directory API, please join our Discord server