@raihan0824/mcp-veo2
Version:
MCP server for generating videos with Google Veo2
60 lines • 2.51 kB
JavaScript
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