Skip to main content
Glama

n8n MCP Server

MIT License
133
1,377
  • Apple
  • Linux
environment.ts2.9 kB
/** * Environment Configuration * * This module handles loading and validating environment variables * required for connecting to the n8n API. */ import dotenv from 'dotenv'; import findConfig from 'find-config'; import path from 'path'; import { McpError } from '@modelcontextprotocol/sdk/types.js'; import { ErrorCode } from '../errors/error-codes.js'; // Environment variable names export const ENV_VARS = { N8N_API_URL: 'N8N_API_URL', N8N_API_KEY: 'N8N_API_KEY', N8N_WEBHOOK_USERNAME: 'N8N_WEBHOOK_USERNAME', N8N_WEBHOOK_PASSWORD: 'N8N_WEBHOOK_PASSWORD', DEBUG: 'DEBUG', }; // Interface for validated environment variables export interface EnvConfig { n8nApiUrl: string; n8nApiKey: string; n8nWebhookUsername?: string; // Made optional n8nWebhookPassword?: string; // Made optional debug: boolean; } /** * Load environment variables from .env file if present */ export function loadEnvironmentVariables(): void { const { N8N_API_URL, N8N_API_KEY, N8N_WEBHOOK_USERNAME, N8N_WEBHOOK_PASSWORD } = process.env; if ( !N8N_API_URL && !N8N_API_KEY && !N8N_WEBHOOK_USERNAME && !N8N_WEBHOOK_PASSWORD ) { const projectRoot = findConfig('package.json'); if (projectRoot) { const envPath = path.resolve(path.dirname(projectRoot), '.env'); dotenv.config({ path: envPath }); } } } /** * Validate and retrieve required environment variables * * @returns Validated environment configuration * @throws {McpError} If required environment variables are missing */ export function getEnvConfig(): EnvConfig { const n8nApiUrl = process.env[ENV_VARS.N8N_API_URL]; const n8nApiKey = process.env[ENV_VARS.N8N_API_KEY]; const n8nWebhookUsername = process.env[ENV_VARS.N8N_WEBHOOK_USERNAME]; const n8nWebhookPassword = process.env[ENV_VARS.N8N_WEBHOOK_PASSWORD]; const debug = process.env[ENV_VARS.DEBUG]?.toLowerCase() === 'true'; // Validate required core environment variables if (!n8nApiUrl) { throw new McpError( ErrorCode.InitializationError, `Missing required environment variable: ${ENV_VARS.N8N_API_URL}` ); } if (!n8nApiKey) { throw new McpError( ErrorCode.InitializationError, `Missing required environment variable: ${ENV_VARS.N8N_API_KEY}` ); } // N8N_WEBHOOK_USERNAME and N8N_WEBHOOK_PASSWORD are now optional at startup. // Tools requiring them should perform checks at the point of use. // Validate URL format try { new URL(n8nApiUrl); } catch (error) { throw new McpError( ErrorCode.InitializationError, `Invalid URL format for ${ENV_VARS.N8N_API_URL}: ${n8nApiUrl}` ); } return { n8nApiUrl, n8nApiKey, n8nWebhookUsername: n8nWebhookUsername || undefined, // Ensure undefined if empty n8nWebhookPassword: n8nWebhookPassword || undefined, // Ensure undefined if empty debug, }; }

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/leonardsellem/n8n-mcp-server'

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