Skip to main content
Glama
kuai0901
by kuai0901
index.ts2.66 kB
import { config } from 'dotenv'; import { z } from 'zod'; import { homedir } from 'os'; import { join } from 'path'; import type { ServerConfig, LogLevel, ResourceMode, SupportedModel } from '../types/index.js'; // 加载环境变量 config(); // 环境变量验证schema const envSchema = z.object({ BAIDU_API_KEY: z.string().min(1, '百度API Key不能为空'), SERVER_NAME: z.string().default('irag-mcp-server'), SERVER_VERSION: z.string().default('1.0.0'), LOG_LEVEL: z.enum(['error', 'warn', 'info', 'debug']).default('info'), LOG_FILE: z.string().optional(), API_TIMEOUT: z.string().transform(val => parseInt(val, 10)).default('30000'), MAX_RETRIES: z.string().transform(val => parseInt(val, 10)).default('3'), RESOURCE_MODE: z.enum(['url', 'local']).default('local'), BASE_PATH: z.string().optional(), MODEL: z.enum(['irag-1.0', 'flux.1-schnell']).default('irag-1.0'), }); /** * 验证并获取配置 */ function validateConfig(): ServerConfig { try { const env = envSchema.parse(process.env); // 处理BASE_PATH默认值 let basePath = env.BASE_PATH; if (!basePath && env.RESOURCE_MODE === 'local') { // 默认保存到用户桌面的irag-images文件夹 basePath = join(homedir(), 'Desktop', 'irag-images'); } return { apiKey: env.BAIDU_API_KEY, serverName: env.SERVER_NAME, serverVersion: env.SERVER_VERSION, logLevel: env.LOG_LEVEL as LogLevel, logFile: env.LOG_FILE, apiTimeout: env.API_TIMEOUT, maxRetries: env.MAX_RETRIES, resourceMode: env.RESOURCE_MODE as ResourceMode, basePath: basePath, defaultModel: env.MODEL as SupportedModel, }; } catch (error) { if (error instanceof z.ZodError) { const errorMessages = error.errors.map(err => `${err.path.join('.')}: ${err.message}` ).join('\n'); throw new Error(`配置验证失败:\n${errorMessages}`); } throw error; } } /** * 获取服务器配置 */ export function getConfig(): ServerConfig { return validateConfig(); } /** * 验证API Key格式 */ export function validateApiKey(apiKey: string): boolean { // 百度API Key格式: bce-v3/ALTAK-xxx/xxx const apiKeyPattern = /^bce-v3\/ALTAK-[a-zA-Z0-9]+\/[a-zA-Z0-9]+$/; return apiKeyPattern.test(apiKey); } /** * 获取默认配置 */ export function getDefaultConfig(): Partial<ServerConfig> { return { serverName: 'irag-mcp-server', serverVersion: '1.0.0', logLevel: 'info', apiTimeout: 30000, maxRetries: 3, resourceMode: 'local', basePath: join(homedir(), 'Desktop', 'irag-images'), defaultModel: 'irag-1.0', }; }

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/kuai0901/irag-mcp-server'

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