UNPKG

hana-mcp-server

Version:

🚀 Easy-to-use MCP server for SAP HANA database integration with AI agents like Claude Desktop. Connect to HANA databases with natural language queries.

115 lines (98 loc) • 3.02 kB
/** * Configuration management utility for HANA MCP Server */ const { logger } = require('./logger'); class Config { constructor() { this.config = this.loadConfig(); } loadConfig() { return { hana: { host: process.env.HANA_HOST, port: parseInt(process.env.HANA_PORT) || 443, user: process.env.HANA_USER, password: process.env.HANA_PASSWORD, schema: process.env.HANA_SCHEMA, ssl: process.env.HANA_SSL !== 'false', encrypt: process.env.HANA_ENCRYPT !== 'false', validateCert: process.env.HANA_VALIDATE_CERT !== 'false' }, server: { logLevel: process.env.LOG_LEVEL || 'INFO', enableFileLogging: process.env.ENABLE_FILE_LOGGING === 'true', enableConsoleLogging: process.env.ENABLE_CONSOLE_LOGGING !== 'false' } }; } getHanaConfig() { return this.config.hana; } getServerConfig() { return this.config.server; } isHanaConfigured() { const hana = this.config.hana; return !!(hana.host && hana.user && hana.password); } getHanaConnectionString() { const hana = this.config.hana; return `${hana.host}:${hana.port}`; } // Get configuration info for display (hiding sensitive data) getDisplayConfig() { const hana = this.config.hana; return { host: hana.host || 'NOT SET', port: hana.port, user: hana.user || 'NOT SET', password: hana.password ? 'SET (hidden)' : 'NOT SET', schema: hana.schema || 'NOT SET', ssl: hana.ssl, encrypt: hana.encrypt, validateCert: hana.validateCert }; } // Get environment variables for display getEnvironmentVars() { return { HANA_HOST: process.env.HANA_HOST || 'NOT SET', HANA_PORT: process.env.HANA_PORT || 'NOT SET', HANA_USER: process.env.HANA_USER || 'NOT SET', HANA_PASSWORD: process.env.HANA_PASSWORD ? 'SET (hidden)' : 'NOT SET', HANA_SCHEMA: process.env.HANA_SCHEMA || 'NOT SET', HANA_SSL: process.env.HANA_SSL || 'NOT SET', HANA_ENCRYPT: process.env.HANA_ENCRYPT || 'NOT SET', HANA_VALIDATE_CERT: process.env.HANA_VALIDATE_CERT || 'NOT SET' }; } // Validate configuration validate() { const hana = this.config.hana; const errors = []; if (!hana.host) errors.push('HANA_HOST is required'); if (!hana.user) errors.push('HANA_USER is required'); if (!hana.password) errors.push('HANA_PASSWORD is required'); if (errors.length > 0) { logger.warn('Configuration validation failed:', errors); return false; } logger.info('Configuration validation passed'); return true; } /** * Get default schema from environment variables */ getDefaultSchema() { return this.config.hana.schema; } /** * Check if default schema is configured */ hasDefaultSchema() { return !!this.config.hana.schema; } } // Create default config instance const config = new Config(); module.exports = { Config, config };