Skip to main content
Glama
env.ts2.29 kB
/** * Clean configuration handling for Smithery MCP deployment * Security-focused approach with no hardcoded secrets or complex patterns */ import { logger } from './logger.js'; /** * API configuration interface for type safety */ export interface ApiConfig { readonly CODERIDE_API_KEY: string; readonly CODERIDE_API_URL: string; readonly LOG_LEVEL: string; } /** * Smithery configuration input (from Zod schema) */ export interface SmitheryConfig { CODERIDE_API_KEY?: string; } /** * Create API configuration from Smithery config with secure defaults * No hardcoded secrets - all sensitive data comes from Smithery's secure config system */ export function createApiConfig(smitheryConfig?: SmitheryConfig): ApiConfig { const config: ApiConfig = { CODERIDE_API_KEY: smitheryConfig?.CODERIDE_API_KEY || '', CODERIDE_API_URL: 'https://api.coderide.ai', LOG_LEVEL: 'info' }; // Log configuration status without exposing sensitive data if (config.CODERIDE_API_KEY) { logger.debug('API configuration loaded with provided credentials'); } else { logger.debug('API configuration loaded without credentials (mock mode)'); } return config; } /** * Validate API configuration for security compliance */ export function validateApiConfig(config: ApiConfig): void { // Validate API URL security if (!config.CODERIDE_API_URL.startsWith('https://')) { throw new Error('API URL must use HTTPS for security'); } // Validate URL format try { new URL(config.CODERIDE_API_URL); } catch { throw new Error('Invalid API URL format'); } // Log validation success without exposing sensitive data logger.debug('API configuration validation passed'); } /** * Determine if configuration indicates production mode * Production mode requires a valid CodeRide API key format */ export function isProductionMode(config: ApiConfig): boolean { return !!( config.CODERIDE_API_KEY && config.CODERIDE_API_KEY.length > 10 && config.CODERIDE_API_KEY.startsWith('CR_API_KEY_') ); } /** * Legacy support for STDIO deployments * Only used when not running in Smithery environment */ export function createLegacyConfig(): ApiConfig { return createApiConfig({ CODERIDE_API_KEY: process.env.CODERIDE_API_KEY }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PixdataOrg/coderide-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server