config.ts•1.08 kB
import { z } from 'zod';
/**
* Configuration schema for Exa MCP Server
*/
const configSchema = z.object({
apiKey: z.string(),
port: z.number().default(3000),
enabledTools: z.array(z.string()).optional(),
debug: z.boolean().default(false)
});
/**
* Load and validate configuration from environment variables
* @returns Validated configuration object
*/
export function loadConfig() {
// Try to load from environment variables
const config = {
apiKey: process.env.EXA_API_KEY || '',
port: process.env.PORT ? parseInt(process.env.PORT, 10) : 3000,
enabledTools: process.env.ENABLED_TOOLS?.split(',').map(s => s.trim()),
debug: process.env.DEBUG === 'true'
};
// Validate configuration
try {
return configSchema.parse(config);
} catch (error) {
if (!config.apiKey) {
console.error('ERROR: EXA_API_KEY environment variable is required');
console.error('Please set it in your .env file or environment');
process.exit(1);
}
throw error;
}
}