UNPKG

@raihan0824/mcp-veo2

Version:

MCP server for generating videos with Google Veo2

60 lines 2.51 kB
import dotenv from 'dotenv'; import { z } from 'zod'; import { log } from './utils/logger.js'; // Load environment variables from .env file dotenv.config(); // Define schema for environment variables const ConfigSchema = z.object({ // Google API Key for Gemini/Veo2 GOOGLE_API_KEY: z.string().min(1), // Server configuration (optional with default) PORT: z.string().transform(Number).default('3000'), // Storage directory for generated videos (optional with default) STORAGE_DIR: z.string().default('./generated-videos'), // Logging level (optional with default to 'fatal') LOG_LEVEL: z.enum(['verbose', 'debug', 'info', 'warn', 'error', 'fatal', 'none']).default('fatal'), // S3 Configuration S3_ENDPOINT: z.string().optional(), S3_REGION: z.string().optional(), S3_BUCKET: z.string().optional(), S3_ACCESS_KEY: z.string().optional(), S3_SECRET_KEY: z.string().optional(), USE_S3: z.string().optional().transform(val => val === 'true').default('false'), }); // Parse and validate environment variables const parseConfig = () => { try { const config = ConfigSchema.parse(process.env); // S3 validation if enabled if (config.USE_S3) { if (!config.S3_ENDPOINT || !config.S3_REGION || !config.S3_BUCKET || !config.S3_ACCESS_KEY || !config.S3_SECRET_KEY) { throw new Error('When USE_S3=true, all S3 environment variables are required: S3_ENDPOINT, S3_REGION, S3_BUCKET, S3_ACCESS_KEY, S3_SECRET_KEY'); } } return config; } catch (error) { if (error instanceof z.ZodError) { const missingVars = error.errors .filter(e => e.code === 'invalid_type' && e.received === 'undefined') .map(e => e.path.join('.')); if (missingVars.length > 0) { log.fatal(`❌ Missing required environment variables: ${missingVars.join(', ')}`); log.fatal('Please check your .env file or environment configuration.'); } else { log.fatal('❌ Invalid environment variables:', error.errors); } } else { log.fatal('❌ Error parsing configuration:', error); } process.exit(1); } }; // Parse and export the validated config const config = parseConfig(); // Initialize the logger with the configured log level log.initialize(config.LOG_LEVEL); export default config; //# sourceMappingURL=config.js.map