Skip to main content
Glama

MCP Image Generator

by shinpr
config.ts•2.45 kB
/** * Configuration management for MCP server * Handles environment variables and configuration validation */ import type { Result } from '../types/result' import { Err, Ok } from '../types/result' import { ConfigError } from './errors' /** * Configuration interface */ export interface Config { geminiApiKey: string imageOutputDir: string apiTimeout: number skipPromptEnhancement: boolean // Skip prompt enhancement for direct control } /** * Default configuration values */ const DEFAULT_CONFIG = { imageOutputDir: './output', apiTimeout: 30000, // 30 seconds } as const /** * Validates the configuration * @param config The configuration to validate * @returns Result containing validated config or ConfigError */ export function validateConfig(config: Config): Result<Config, ConfigError> { // Validate GEMINI_API_KEY if (!config.geminiApiKey || config.geminiApiKey.trim().length === 0) { return Err( new ConfigError( 'GEMINI_API_KEY is required but not provided', 'Set GEMINI_API_KEY environment variable with your Google AI API key' ) ) } if (config.geminiApiKey.length < 10) { return Err( new ConfigError( 'GEMINI_API_KEY appears to be invalid - must be at least 10 characters', 'Set the GEMINI_API_KEY environment variable to your valid Google AI API key' ) ) } // Validate apiTimeout if (config.apiTimeout <= 0) { return Err( new ConfigError( 'API timeout must be a positive number', 'Set a positive timeout value in milliseconds (e.g., 30000 for 30 seconds)' ) ) } // Validate imageOutputDir (basic check - non-empty string) if (!config.imageOutputDir || config.imageOutputDir.trim().length === 0) { return Err( new ConfigError( 'IMAGE_OUTPUT_DIR cannot be empty', 'Set IMAGE_OUTPUT_DIR to a valid directory path' ) ) } return Ok(config) } /** * Loads configuration from environment variables * @returns Result containing config or ConfigError */ export function getConfig(): Result<Config, ConfigError> { const config: Config = { geminiApiKey: process.env['GEMINI_API_KEY'] || '', imageOutputDir: process.env['IMAGE_OUTPUT_DIR'] || DEFAULT_CONFIG.imageOutputDir, apiTimeout: DEFAULT_CONFIG.apiTimeout, skipPromptEnhancement: process.env['SKIP_PROMPT_ENHANCEMENT'] === 'true', } return validateConfig(config) }

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/shinpr/mcp-image'

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