Skip to main content
Glama

Visum Thinker MCP Server

MIT License
VISUM-LOG-FOLDER-FIX.md6.54 kB
# Visum Log Folder Issue - Comprehensive Fix ## Problem Description PTV Visum can crash when it cannot access or create its required log, temporary, and working directories. This is a common issue when: - Running Visum via COM automation - Visum doesn't have write permissions to default directories - Required system directories don't exist - Environment variables point to inaccessible locations ## Root Causes 1. **Missing Directories**: Visum expects certain directories to exist 2. **Permission Issues**: Visum needs write access to log and temp directories 3. **Environment Variables**: Incorrectly set TEMP, TMP, or Visum-specific variables 4. **Registry Settings**: Visum may have incorrect registry entries for directory paths 5. **COM Automation**: Different behavior when launched via COM vs. manual startup ## Comprehensive Solution Implemented ### 1. **Pre-Startup Directory Creation** ```typescript private async createVisumDirectories(): Promise<{ log: string; temp: string; work: string }> { const tempDir = process.env.TEMP || 'C:\\temp'; const baseDir = path.join(tempDir, 'VisumMCP'); const logDir = path.join(baseDir, 'logs'); const tempVisumDir = path.join(baseDir, 'temp'); const workDir = path.join(baseDir, 'work'); // Create all directories with full permissions await fs.promises.mkdir(logDir, { recursive: true }); await fs.promises.mkdir(tempVisumDir, { recursive: true }); await fs.promises.mkdir(workDir, { recursive: true }); } ``` ### 2. **Environment Variable Configuration** ```powershell # Set comprehensive environment variables $env:VISUM_LOG_DIR = $visumLogDir $env:VISUM_TEMP_DIR = $visumTempDir $env:VISUM_WORK_DIR = $visumWorkDir $env:VISUM_USER_DIR = $logDir $env:VISUM_SYSTEM_DIR = $logDir $env:VISUM_INI_DIR = $logDir $env:TMP = $visumTempDir $env:TEMP = $visumTempDir ``` ### 3. **Registry Configuration (if possible)** ```powershell try { $regPath = "HKCU:\\Software\\PTV AG\\PTV Visum" if (Test-Path $regPath) { Set-ItemProperty -Path $regPath -Name "LogDir" -Value $visumLogDir Set-ItemProperty -Path $regPath -Name "TempDir" -Value $visumTempDir } } catch { # Continue without registry changes if no admin rights } ``` ### 4. **COM Interface Configuration** ```powershell # Configure Visum after COM object creation if ($visum.IO) { $visum.IO.SetTempPath($visumTempDir) } # Set system attributes $visum.SetSysAttValue("TempDir", $visumTempDir) $visum.SetSysAttValue("LogDir", $visumLogDir) $visum.SetSysAttValue("WorkingDir", $visumWorkDir) ``` ### 5. **Directory Structure Created** ``` %TEMP%\VisumMCP\ ├── logs\ # Visum log files ├── temp\ # Temporary files └── work\ # Working directory ``` ### 6. **Permission Management** - Full control permissions for current user - Accessible directory locations - Error handling for permission issues ## Implementation Details ### During Initialization (`initializeVisum()`) 1. Creates comprehensive directory structure 2. Sets all relevant environment variables 3. Attempts registry configuration 4. Configures COM object with directory paths 5. Provides detailed logging of each step ### During Model Loading (`loadModel()`) 1. Ensures directories exist before loading 2. Re-sets environment variables 3. Pre-configures Visum directories 4. Loads model with safe directory context ### Error Handling - Graceful degradation if directories can't be created - Continues operation with warnings rather than failing - Detailed error messages for troubleshooting - Fallback to default directories if needed ## Testing the Fix ### Before Fix ``` ❌ Visum crashes with "Access denied" or "Directory not found" errors ❌ COM initialization fails silently ❌ Model loading causes crashes ``` ### After Fix ``` ✅ Visum initializes successfully ✅ Comprehensive directory structure created ✅ Model loading works reliably ✅ All operations have proper logging ``` ## Usage Examples ### Test the Enhanced Initialization ```javascript // The fix is automatically applied when using: const result = await controller.initializeVisum(); // Now includes enhanced directory configuration const modelResult = await controller.loadModel("C:\\path\\to\\model.ver"); // Directories are ensured before model loading ``` ### Verify Directory Creation Check that these directories exist after initialization: - `%TEMP%\\VisumMCP\\logs\\` - `%TEMP%\\VisumMCP\\temp\\` - `%TEMP%\\VisumMCP\\work\\` ## Advanced Configuration ### Manual Directory Override If you need different directories, you can modify the `createVisumDirectories()` method or set environment variables before starting: ```javascript process.env.VISUM_BASE_DIR = 'D:\\MyVisumWorkspace'; // Then initialize Visum - it will use the custom base directory ``` ### Registry-Based Configuration For system-wide configuration, set these registry values: ``` HKEY_CURRENT_USER\Software\PTV AG\PTV Visum\ - LogDir: REG_SZ = C:\MyVisumLogs - TempDir: REG_SZ = C:\MyVisumTemp ``` ## Troubleshooting ### Still Getting Log Directory Errors? 1. **Check Permissions**: Ensure user has write access to `%TEMP%` directory 2. **Antivirus**: Some antivirus software blocks directory creation 3. **Disk Space**: Ensure sufficient disk space for log files 4. **User Account**: Run as administrator if needed 5. **Visum Version**: Some older versions may have different directory requirements ### Logging and Diagnostics The enhanced implementation provides detailed logging: ``` Created directory: C:\Users\YourName\AppData\Local\Temp\VisumMCP\logs Created directory: C:\Users\YourName\AppData\Local\Temp\VisumMCP\temp Created directory: C:\Users\YourName\AppData\Local\Temp\VisumMCP\work Updated Visum registry settings for log directories Set Visum temp path to: C:\Users\YourName\AppData\Local\Temp\VisumMCP\temp Set Visum system directories via COM interface ``` ## Benefits of This Fix ✅ **Prevents Crashes**: Eliminates log directory-related crashes ✅ **Comprehensive**: Addresses all known directory-related issues ✅ **Robust**: Multiple fallback mechanisms ✅ **Transparent**: Works automatically without user intervention ✅ **Diagnostic**: Detailed logging for troubleshooting ✅ **Compatible**: Works across different Visum versions ✅ **Secure**: Uses user-accessible directory locations --- **Note**: This fix is automatically applied when using the Sequential Thinking MCP Server with Visum integration. No additional configuration is required by the user.

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/multiluca2020/visum-thinker-mcp-server'

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