Skip to main content
Glama
108yen

task-orchestrator-mcp

by 108yen

startTask

Initiate task execution by changing status to in_progress. Use this tool to begin processing tasks within the task orchestration system.

Instructions

Start a task (change status to in_progress)

  1. Run this tool to start the task.

  2. When the task is complete, call the completeTask tool to complete the task.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesTask ID

Implementation Reference

  • Core handler function implementing the startTask tool logic: loads tasks, validates parameters and execution order, aggregates criteria and constraints from hierarchy, handles leaf node resets and execution path auto-starting, updates parent statuses, generates response message and hierarchy summary.
    export function startTask(id: string): {
      aggregated_completion_criteria: string[]
      aggregated_constraints: string[]
      hierarchy_summary?: string
      message?: string
      started_tasks: Task[]
      task: Task
    } {
      // Load tasks and validate parameters
      const tasks = readTasks()
      const task = validateStartTaskParams(id, tasks)
    
      // Validate execution order - check if all preceding sibling tasks are completed
      validateExecutionOrder(task, tasks)
    
      // Aggregate completion criteria and constraints from hierarchy
      const { aggregated_completion_criteria, aggregated_constraints } =
        aggregateCriteriaFromHierarchy(id, tasks)
    
      // Process leaf node reset if necessary
      const resetLeafTasks = processLeafNodeReset(task, tasks)
    
      // Start the main task and update parent statuses
      const { startedTasks, updatedTask } = startMainTaskAndUpdateParents(id, tasks)
    
      // Process execution path for nested task starting
      const { depth, executionPath } = processExecutionPath(id, tasks, startedTasks)
    
      // Generate appropriate message
      const message = generateStartTaskMessage(
        task,
        executionPath,
        depth,
        resetLeafTasks,
      )
    
      // Save changes
      writeTasks(tasks)
    
      // Generate hierarchy summary with changed task IDs
      const changedTaskIds = new Set<string>(startedTasks.map((t) => t.id))
      const hierarchySummary = generateHierarchySummary(tasks, changedTaskIds)
    
      return {
        aggregated_completion_criteria,
        aggregated_constraints,
        hierarchy_summary: hierarchySummary.table,
        message,
        started_tasks: startedTasks,
        task: updatedTask,
      }
    }
  • src/tools.ts:320-372 (registration)
    Registers the "startTask" MCP tool with the server, providing description, Zod input schema for task ID, and error-handling wrapper that calls the core startTask function and returns JSON response.
    // Register startTask tool
    server.registerTool(
      "startTask",
      {
        description:
          "Start a task (change status to in_progress)\n\n" +
          "1. Run this tool to start the task. \n" +
          "2. When the task is complete, call the `completeTask` tool to complete the task.",
        inputSchema: {
          id: z.string().describe("Task ID"),
        },
      },
      (args) => {
        try {
          const result = startTask(args.id)
          return {
            content: [
              {
                text: JSON.stringify(result, null, 2),
                type: "text",
              },
            ],
          }
        } catch (error) {
          const errorMessage =
            error instanceof Error ? error.message : "Unknown error"
          const isExecutionOrderError = errorMessage.includes(
            "Execution order violation",
          )
    
          return {
            content: [
              {
                text: JSON.stringify(
                  {
                    error: {
                      code: isExecutionOrderError
                        ? "EXECUTION_ORDER_VIOLATION"
                        : "TASK_START_ERROR",
                      message: errorMessage,
                    },
                  },
                  null,
                  2,
                ),
                type: "text",
              },
            ],
            isError: true,
          }
        }
      },
    )
  • Zod input schema definition for the startTask tool: requires a single 'id' parameter of type string.
      inputSchema: {
        id: z.string().describe("Task ID"),
      },
    },
  • Helper function to validate startTask parameters: checks ID format, task existence, and prevents starting already in_progress or done tasks.
    function validateStartTaskParams(id: string, tasks: Task[]): Task {
      if (!id || typeof id !== "string") {
        throw new Error("Task ID is required and must be a string")
      }
    
      const task = findTaskById(tasks, id)
    
      if (!task) {
        throw new Error(`Task with id '${id}' not found`)
      }
    
      if (task.status === "done") {
        throw new Error(`Task '${id}' is already completed`)
      }
    
      if (task.status === "in_progress") {
        throw new Error(`Task '${id}' is already in progress`)
      }
    
      return task
    }

Latest Blog Posts

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/108yen/task-orchestrator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server