UNPKG

mcp-think-tank

Version:

Structured thinking and knowledge management tool for Model Context Protocol

70 lines (69 loc) 2.65 kB
import { existsSync, mkdirSync, readFileSync } from 'fs'; import { join, resolve, dirname } from 'path'; import { homedir } from 'os'; import minimist from 'minimist'; import { fileURLToPath } from 'url'; // Safe logging function that writes directly to stderr const safeLog = (message) => { process.stderr.write(`${message}\n`); }; // Parse command line arguments const argv = minimist(process.argv.slice(2)); // Determine base directory for finding package.json const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const basedir = resolve(__dirname, '..', '..'); // Dynamically read version from package.json let version = '2.0.6'; // Fallback version try { const packagePath = resolve(basedir, 'package.json'); if (existsSync(packagePath)) { version = JSON.parse(readFileSync(packagePath, 'utf8')).version; } } catch (error) { safeLog(`Warning: Could not read version from package.json, using fallback version ${version}`); } // Default memory path const DEFAULT_MEMORY_PATH = join(homedir(), '.mcp-think-tank', 'memory.jsonl'); const memoryPath = argv['memory-path'] || process.env.MEMORY_PATH || DEFAULT_MEMORY_PATH; // Create default directories if they don't exist try { if (!existsSync(dirname(memoryPath))) { mkdirSync(dirname(memoryPath), { recursive: true }); } } catch (error) { safeLog(`Failed to create directory for memory path: ${error}`); } // Export configuration object export const config = { // Memory path from command line or default memoryPath, // Request timeout in milliseconds (default: 300 seconds = 5 minutes) requestTimeout: argv['request-timeout'] ? parseInt(argv['request-timeout'], 10) * 1000 : process.env.REQUEST_TIMEOUT ? parseInt(process.env.REQUEST_TIMEOUT, 10) * 1000 : 300000, // Debug mode can be enabled with --debug flag or MCP_DEBUG=true env var debug: !!argv.debug || process.env.MCP_DEBUG === 'true', // Version from package.json version, // Auto-shutdown after inactivity (in ms, default: 30 minutes, 0 = disabled) autoShutdownMs: argv['auto-shutdown-ms'] ? parseInt(argv['auto-shutdown-ms'], 10) * 1000 : process.env.AUTO_SHUTDOWN_MS ? parseInt(process.env.AUTO_SHUTDOWN_MS, 10) * 1000 : process.env.AUTO_SHUTDOWN === 'true' ? 30 * 60 * 1000 : 0, }; // Handle command line arguments for quick info display if (argv.version) { safeLog(`mcp-think-tank v${version}`); process.exit(0); } if (argv['show-memory-path']) { safeLog(memoryPath); process.exit(0); } export default config;