Skip to main content
Glama
crazyrabbitLTC

Vibe-Coder MCP Server

add_task

Adds a task to a specific development phase, enabling structured workflow tracking for coding projects by defining feature requirements and implementation steps.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
featureIdYes
phaseIdYes
descriptionYes

Implementation Reference

  • Registration of the 'add_task' MCP tool, including inline input schema and execution handler function.
    server.tool(
      "add_task",
      {
        featureId: z.string().min(1),
        phaseId: z.string().min(1),
        description: z.string().min(1)
      },
      async ({ featureId, phaseId, description }) => {
        const feature = getFeature(featureId);
        if (!feature) {
          throw new Error(`Feature ${featureId} not found`);
        }
        
        const phase = feature.phases.find(p => p.id === phaseId);
        if (!phase) {
          throw new Error(`Phase ${phaseId} not found in feature ${featureId}`);
        }
        
        const task = addTaskDirectly(feature, phaseId, description);
        updateFeature(featureId, feature);
        
        // Debug log
        console.error(`DEBUG: Task created with ID: ${task.id}, type: ${typeof task.id}`);
        console.error(`DEBUG: Task object: ${JSON.stringify(task)}`);
        
        // Ensure task.id is explicitly converted to string and check if it's an object
        let taskId: string;
        
        if (typeof task.id === 'object') {
          taskId = JSON.stringify(task.id);
        } else {
          taskId = String(task.id);
        }
        
        return {
          content: [{
            type: "text",
            text: `Added task "${description.substring(0, 30)}${description.length > 30 ? '...' : ''}" with ID: ${taskId} to phase "${phase.name}"`
          }]
        };
      }
    );
  • Helper function used by the add_task handler to directly mutate the feature object by adding a new task to the specified phase.
    function addTaskDirectly(feature: Feature, phaseId: string, description: string): Task {
      const phase = feature.phases.find(p => p.id === phaseId);
      if (!phase) {
        throw new Error(`Phase ${phaseId} not found`);
      }
      
      const newTask = createTaskObject(description);
      
      // Convert task ID to string to ensure it's not an object
      if (typeof newTask.id !== 'string') {
        newTask.id = String(newTask.id);
      }
      
      phase.tasks.push(newTask);
      phase.updatedAt = now();
      feature.updatedAt = now();
      return newTask;
    }
  • Supporting function from phases module to add a task to a phase and persist via updateFeature. Similar logic to addTaskDirectly but returns updated feature.
    export function addTask(
      featureId: string,
      phaseId: string,
      description: string
    ): Feature | undefined {
      const feature = getFeature(featureId);
      if (!feature) return undefined;
      
      const phaseIndex = feature.phases.findIndex(p => p.id === phaseId);
      if (phaseIndex === -1) return undefined;
      
      const newTask = createTaskObject(description);
      
      const updatedPhases = [...feature.phases];
      updatedPhases[phaseIndex] = {
        ...updatedPhases[phaseIndex],
        tasks: [...updatedPhases[phaseIndex].tasks, newTask],
        updatedAt: now()
      };
      
      return updateFeature(featureId, { phases: updatedPhases });
    }

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/crazyrabbitLTC/mcp-vibecoder'

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