create_node
Add phases, tasks, or milestones to hierarchical project plans. Specify parent relationships, status, due dates, and completion criteria to structure project planning.
Instructions
Create a new node in a plan
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID | |
| parent_id | No | Parent node ID (optional, defaults to root) | |
| node_type | Yes | Node type | |
| title | Yes | Node title | |
| description | No | Node description | |
| status | No | Node status | not_started |
| context | No | Additional context for the node | |
| agent_instructions | No | Instructions for AI agents working on this node | |
| acceptance_criteria | No | Criteria for node completion | |
| due_date | No | Due date (ISO format) | |
| metadata | No | Additional metadata |
Implementation Reference
- src/tools.js:548-552 (handler)Handler for the create_node MCP tool. Destructures plan_id from arguments, passes remaining nodeData to apiClient.nodes.createNode, and formats the response using formatResponse.if (name === "create_node") { const { plan_id, ...nodeData } = args; const result = await apiClient.nodes.createNode(plan_id, nodeData); return formatResponse(result); }
- src/tools.js:173-197 (schema)Input schema definition for create_node tool, specifying properties, types, enums, descriptions, and required fields.inputSchema: { type: "object", properties: { plan_id: { type: "string", description: "Plan ID" }, parent_id: { type: "string", description: "Parent node ID (optional, defaults to root)" }, node_type: { type: "string", description: "Node type", enum: ["phase", "task", "milestone"] }, title: { type: "string", description: "Node title" }, description: { type: "string", description: "Node description" }, status: { type: "string", description: "Node status", enum: ["not_started", "in_progress", "completed", "blocked"], default: "not_started" }, context: { type: "string", description: "Additional context for the node" }, agent_instructions: { type: "string", description: "Instructions for AI agents working on this node" }, acceptance_criteria: { type: "string", description: "Criteria for node completion" }, due_date: { type: "string", description: "Due date (ISO format)" }, metadata: { type: "object", description: "Additional metadata" } }, required: ["plan_id", "node_type", "title"]
- src/tools.js:170-199 (registration)Tool registration in the MCP tools list returned by ListToolsRequestSchema handler, including name, description, and inputSchema.{ name: "create_node", description: "Create a new node in a plan", inputSchema: { type: "object", properties: { plan_id: { type: "string", description: "Plan ID" }, parent_id: { type: "string", description: "Parent node ID (optional, defaults to root)" }, node_type: { type: "string", description: "Node type", enum: ["phase", "task", "milestone"] }, title: { type: "string", description: "Node title" }, description: { type: "string", description: "Node description" }, status: { type: "string", description: "Node status", enum: ["not_started", "in_progress", "completed", "blocked"], default: "not_started" }, context: { type: "string", description: "Additional context for the node" }, agent_instructions: { type: "string", description: "Instructions for AI agents working on this node" }, acceptance_criteria: { type: "string", description: "Criteria for node completion" }, due_date: { type: "string", description: "Due date (ISO format)" }, metadata: { type: "object", description: "Additional metadata" } }, required: ["plan_id", "node_type", "title"] } },
- src/api-client.js:137-140 (helper)Helper function in apiClient.nodes that makes the HTTP POST request to create the node via the backend API.createNode: async (planId, nodeData) => { const response = await apiClient.post(`/plans/${planId}/nodes`, nodeData); return response.data; },