/** * Shared utilities for expanding environment variables in MCP server configurations */ /** * Expand environment variables in a string value * Handles ${VAR} and ${VAR:-default} syntax * @returns Object with expanded string and list of missing variables */ export function expandEnvVarsInString(value: string): { expanded: string missingVars: string[] } { const missingVars: string[] = [] const expanded = value.replace(/\$\{([^}]+)\}/g, (match, varContent) => { // Split on :- to support default values (limit to 2 parts to preserve :- in defaults) const [varName, defaultValue] = varContent.split(':-', 2) const envValue = process.env[varName] if (envValue !== undefined) { return envValue } if (defaultValue !== undefined) { return defaultValue } // Track missing variable for error reporting missingVars.push(varName) // Return original if not found (allows debugging but will be reported as error) return match }) return { expanded, missingVars, } }