Skip to main content
Glama

n8n-workflow-builder-mcp

by ifmelate
toolExecution.js2.61 kB
/** * Tool Execution Routes * * Implements the MCP tool execution endpoint that receives requests to execute tools. */ const express = require('express'); const router = express.Router(); const { authenticate } = require('../middleware/auth'); const { logMcpRequest } = require('../middleware/logging'); const { validateToolRequest } = require('../middleware/mcp'); const { createSuccessResponse, createErrorResponse, parseToolName } = require('../utils/mcp'); const { toolDefinitions } = require('../tools/toolDefinitions'); const { logger } = require('../utils/logger'); /** * POST /execute * * Executes an MCP tool */ router.post('/execute', authenticate, logMcpRequest, validateToolRequest, async (req, res) => { try { const { name, parameters } = req.body; // Get tool definition const tool = toolDefinitions[name]; if (!tool) { const errorResponse = createErrorResponse( `Tool "${name}" not found`, 'TOOL_NOT_FOUND', 404 ); return res.status(errorResponse.status).json({ error: errorResponse.error }); } // Log tool execution attempt logger.info(`Executing tool: ${name}`, { tool: name, hasParameters: Object.keys(parameters || {}).length > 0 }); // Execute the tool let result; try { result = await tool.execute(parameters || {}); } catch (toolError) { // Handle execution errors from the tool logger.error(`Tool execution error: ${toolError.message}`); const errorResponse = createErrorResponse( toolError.message || 'Tool execution failed', 'TOOL_EXECUTION_ERROR', 500 ); return res.status(errorResponse.status).json({ error: errorResponse.error }); } // Log successful execution logger.info(`Tool executed successfully: ${name}`); // Return successful result const response = createSuccessResponse(result); res.status(response.status).json(response.data); } catch (error) { // Handle unexpected errors logger.error(`Unexpected error during tool execution: ${error.message}`); logger.error(error.stack); const errorResponse = createErrorResponse( 'An unexpected error occurred', 'INTERNAL_SERVER_ERROR', 500 ); res.status(errorResponse.status).json({ error: errorResponse.error }); } }); module.exports = router;

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