Skip to main content
Glama

generate

Create individual task files in the tasks/ directory from tasks.json. Specify the project root, optional output directory, and tag context to organize task management effectively.

Instructions

Generates individual task files in tasks/ directory based on tasks.json

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileNoAbsolute path to the tasks file
outputNoOutput directory (default: same directory as tasks file)
projectRootYesThe directory of the project. Must be an absolute path.
tagNoTag context to operate on

Implementation Reference

  • Zod schema defining input parameters for the 'generate' MCP tool: output directory, project root, and optional tag.
    const GenerateSchema = z.object({ output: z .string() .optional() .describe( 'Output directory for generated files (default: same directory as tasks file)' ), projectRoot: z .string() .describe('The directory of the project. Must be an absolute path.'), tag: z.string().optional().describe('Tag context to operate on') });
  • Core handler logic for the 'generate' tool. Parses args, resolves output dir, calls tmCore.tasks.generateTaskFiles, handles success/error, and returns formatted result.
    const { projectRoot, tag, output } = args; try { log.info(`Generating task files with args: ${JSON.stringify(args)}`); // Resolve output directory const outputDir = output ? path.resolve(projectRoot, output) : undefined; // Call tm-core to generate task files const result = await tmCore.tasks.generateTaskFiles({ tag, outputDir }); if (result.success) { log.info( `Successfully generated ${result.count} task files in ${result.directory}` ); if (result.orphanedFilesRemoved > 0) { log.info( `Removed ${result.orphanedFilesRemoved} orphaned task files` ); } } else { log.error( `Failed to generate task files: ${result.error || 'Unknown error'}` ); } return handleApiResult({ result: { success: result.success, data: result.success ? { message: `Successfully generated ${result.count} task file(s)`, count: result.count, directory: result.directory, orphanedFilesRemoved: result.orphanedFilesRemoved } : undefined, error: result.success ? undefined : { message: result.error || 'Unknown error' } }, log, projectRoot, tag }); } catch (error: any) { log.error(`Error in generate tool: ${error.message}`); if (error.stack) { log.debug(error.stack); } return handleApiResult({ result: { success: false, error: { message: `Failed to generate task files: ${error.message}` } }, log, projectRoot }); }
  • Registration function that defines and adds the 'generate' tool to the FastMCP server instance.
    export function registerGenerateTool(server: FastMCP) { server.addTool({ name: 'generate', description: 'Generates individual task files in tasks/ directory based on tasks.json. Only works with local file storage.', parameters: GenerateSchema, execute: withToolContext( 'generate', async (args: GenerateArgs, { log, tmCore }: ToolContext) => { const { projectRoot, tag, output } = args; try { log.info(`Generating task files with args: ${JSON.stringify(args)}`); // Resolve output directory const outputDir = output ? path.resolve(projectRoot, output) : undefined; // Call tm-core to generate task files const result = await tmCore.tasks.generateTaskFiles({ tag, outputDir }); if (result.success) { log.info( `Successfully generated ${result.count} task files in ${result.directory}` ); if (result.orphanedFilesRemoved > 0) { log.info( `Removed ${result.orphanedFilesRemoved} orphaned task files` ); } } else { log.error( `Failed to generate task files: ${result.error || 'Unknown error'}` ); } return handleApiResult({ result: { success: result.success, data: result.success ? { message: `Successfully generated ${result.count} task file(s)`, count: result.count, directory: result.directory, orphanedFilesRemoved: result.orphanedFilesRemoved } : undefined, error: result.success ? undefined : { message: result.error || 'Unknown error' } }, log, projectRoot, tag }); } catch (error: any) { log.error(`Error in generate tool: ${error.message}`); if (error.stack) { log.debug(error.stack); } return handleApiResult({ result: { success: false, error: { message: `Failed to generate task files: ${error.message}` } }, log, projectRoot }); } } ) }); }
  • Central tool registry mapping the 'generate' tool name to its registration function.
    generate: registerGenerateTool
  • Dynamic registration loop that invokes the generate tool's registration function (along with others) on the MCP server.
    toolsToRegister.forEach((toolName) => { try { const registerFunction = getToolRegistration(toolName); if (registerFunction) { registerFunction(server); logger.debug(`Registered tool: ${toolName}`); registeredTools.push(toolName); } else { logger.warn(`Tool ${toolName} not found in registry`); failedTools.push(toolName); } } catch (error) { if (error.message && error.message.includes('already registered')) { logger.debug(`Tool ${toolName} already registered, skipping`); registeredTools.push(toolName); } else { logger.error(`Failed to register tool ${toolName}: ${error.message}`); failedTools.push(toolName); } } });

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/eyaltoledano/claude-task-master'

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