Skip to main content
Glama
ifmelate

n8n-workflow-builder-mcp

by ifmelate

create_workflow

Build and store new workflows by specifying a workflow name and project directory, enabling efficient process automation with n8n.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workflow_nameYesThe name for the new workflow
workspace_dirYesAbsolute path to the project root directory where workflow_data will be stored

Implementation Reference

  • The core handler function that implements the create_workflow tool logic. It logs security event, generates UUID, builds initial n8n workflow JSON structure, determines file path, saves via workflowStorage, and returns workflow ID, data, and path.
    const createWorkflowExecute = async (params) => { const { name, workflow_filename, description = '', active = false, settings = {}, userId } = params; // Security logging logSecurityEvent({ level: 'info', eventType: 'workflow_create', userId: userId || 'anonymous', details: { name, active, workflow_filename } }); // Generate a unique ID for the workflow const workflowId = uuidv4(); // Create basic workflow structure const workflow = { id: workflowId, name, description, active, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), settings: { saveExecutionProgress: true, saveManualExecutions: true, saveDataErrorExecution: 'all', saveDataSuccessExecution: 'all', executionTimeout: 3600, ...settings }, nodes: [], connections: {}, pinData: {}, staticData: null, tags: [] }; // Determine the file path let filePath; if (workflow_filename) { // Ensure filename ends with .json const filename = workflow_filename.endsWith('.json') ? workflow_filename : `${workflow_filename}.json`; filePath = path.join(DEFAULT_WORKFLOW_DIR, filename); } else { filePath = path.join(DEFAULT_WORKFLOW_DIR, `${workflowId}.json`); } // Save the workflow await workflowStorage.saveWorkflow(workflowId, workflow, filePath); logger.info(`Created new workflow: ${name} (${workflowId}) at ${filePath}`); return { workflowId, workflowData: workflow, filePath }; };
  • Schema and definition for the 'workflow_create' tool, including input parameters (name required, others optional) and output structure (workflowId, workflowData, filePath). Note: this is in individualToolDefinitions, may be for reference.
    workflow_create: { name: 'workflow_create', description: 'Create a new workflow', execute: createWorkflowExecute, input_schema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the workflow' }, workflow_filename: { type: 'string', description: 'Custom filename for the workflow (optional)' }, description: { type: 'string', description: 'Description of the workflow' }, active: { type: 'boolean', description: 'Whether the workflow should be active' }, settings: { type: 'object', description: 'Workflow settings' } }, required: ['name'] }, output_schema: { type: 'object', properties: { workflowId: { type: 'string', description: 'ID of the created workflow' }, workflowData: { type: 'object', description: 'Full workflow data' }, filePath: { type: 'string', description: 'Path where the workflow file was saved' } } } },
  • In the 'workflow_manage' tool, the 'create' operation is registered to call createWorkflowExecute with the rest of parameters. This provides create_workflow functionality within the consolidated workflow_manage tool.
    execute: async (params) => { const { operation, ...rest } = params; // Route to appropriate handler based on operation switch (operation) { case 'create': return createWorkflowExecute(rest); case 'save': return saveWorkflowExecute(rest); case 'load': return loadWorkflowExecute(rest); case 'list': return listWorkflowsExecute(rest); case 'delete': return deleteWorkflowExecute(rest); case 'generate': return generateWorkflow(rest); default: throw new Error(`Unknown workflow operation: ${operation}`); }
  • Registers 'create' operation/tool as createWorkflowTool (imported from workflowCreation.js) within workflowTools object, likely for internal or alternative tool grouping.
    const workflowTools = { create: createWorkflowTool, save: workflowStorageTools.saveWorkflowTool, load: workflowStorageTools.loadWorkflowTool, list: workflowStorageTools.listWorkflowsTool, delete: workflowStorageTools.deleteWorkflowTool, generate: generateWorkflowTool
  • Exports the createWorkflowExecute handler for use in tool definitions and registrations.
    module.exports = { createWorkflowExecute };

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/ifmelate/n8n-workflow-builder-mcp'

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