Skip to main content
Glama
Multi-Instance-Management-Guide.md8.18 kB
# Multi-Instance Management Guide Advanced guide for managing multiple OpenZIM MCP server instances with conflict detection and resolution. ## Overview OpenZIM MCP includes sophisticated multi-instance management capabilities that allow multiple server instances to run simultaneously while detecting and resolving conflicts automatically. This enterprise-grade feature ensures reliable operation in complex deployment scenarios. ## Instance Tracking System ### How It Works The instance tracking system automatically: 1. **Registers each server instance** with unique process ID and configuration hash 2. **Monitors instance health** and detects when processes terminate 3. **Detects configuration conflicts** between multiple instances 4. **Provides cleanup utilities** for stale instance files 5. **Offers diagnostic tools** for troubleshooting multi-instance issues ### Instance Registration When a server starts, it automatically registers itself: ```python # Automatic registration on startup instance = InstanceTracker.register_instance( config_hash="abc123def456...", allowed_directories=["/path/to/zim/files"], server_name="openzim-mcp" ) ``` **Instance Information Stored**: - Process ID (PID) - Configuration hash - Allowed directories - Start time and last heartbeat - Server name and description ## Conflict Detection ### Types of Conflicts #### 1. Configuration Mismatch Multiple servers with different configurations accessing the same directories. **Example Scenario**: ```bash # Server 1 export OPENZIM_MCP_CACHE__MAX_SIZE=100 openzim-mcp /shared/zim/files # Server 2 (different config) export OPENZIM_MCP_CACHE__MAX_SIZE=200 openzim-mcp /shared/zim/files ``` **Detection**: Configuration hash comparison **Severity**: High **Impact**: Inconsistent behavior, cache conflicts #### 2. Multiple Active Instances Multiple servers running simultaneously on the same directories. **Example Scenario**: ```bash # Terminal 1 openzim-mcp /zim/files & # Terminal 2 (same config, same directories) openzim-mcp /zim/files & ``` **Detection**: Active process monitoring **Severity**: Warning **Impact**: Resource contention, potential confusion #### 3. Stale Instance Files Orphaned instance files from terminated processes. **Example Scenario**: - Server process crashes or is killed - Instance file remains in tracking directory - New server detects "ghost" instance **Detection**: Process existence check **Severity**: Low **Impact**: False conflict warnings ### Conflict Detection Process ``` 1. Server Startup ↓ 2. Load Existing Instance Files ↓ 3. Check Process Existence ↓ 4. Compare Configurations ↓ 5. Detect Directory Overlaps ↓ 6. Generate Conflict Report ↓ 7. Provide Resolution Recommendations ``` ## Using Management Tools ### Check Server Health Monitor instance tracking status: ```json { "name": "get_server_health" } ``` **Response includes**: ```json { "instance_tracking": { "active_instances": 2, "conflicts_detected": 1, "current_instance_id": "server_12345", "tracking_enabled": true } } ``` ### Diagnose Server State Get comprehensive diagnostics: ```json { "name": "diagnose_server_state" } ``` **Conflict Information**: ```json { "conflicts": [ { "type": "configuration_mismatch", "instance": { "pid": 67890, "server_name": "openzim-mcp", "config_hash": "different_hash...", "directories": ["/shared/zim/files"] }, "severity": "high", "details": "Different cache configuration detected" } ] } ``` ### Resolve Conflicts Automatically clean up and resolve issues: ```json { "name": "resolve_server_conflicts" } ``` **Cleanup Actions**: ```json { "cleanup_results": { "stale_instances_removed": 2, "files_cleaned": [ "/home/user/.openzim_mcp_instances/server_99999.json" ] }, "actions_taken": [ "Removed 2 stale instance files", "Validated current instance configuration" ] } ``` ## Configuration ### Instance Tracking Settings ```bash # Enable/disable instance tracking (default: true) export OPENZIM_MCP_INSTANCE__TRACKING_ENABLED=true # Custom tracking directory (default: ~/.openzim_mcp_instances) export OPENZIM_MCP_INSTANCE__TRACKING_DIR="/var/lib/openzim_mcp" # Conflict detection sensitivity (default: strict) export OPENZIM_MCP_INSTANCE__CONFLICT_DETECTION=moderate ``` ### Conflict Detection Levels #### Strict (Default) - Detects all configuration differences - Reports multiple instances as conflicts - Strict directory overlap checking #### Moderate - Ignores minor configuration differences - Allows multiple instances with warnings - Relaxed directory overlap rules #### Relaxed - Only reports major configuration conflicts - Minimal instance overlap checking - Suitable for development environments ## Best Practices ### Production Deployments #### 1. Use Consistent Configuration ```bash # Create shared configuration script cat > /etc/openzim-mcp/config.sh << 'EOF' export OPENZIM_MCP_CACHE__MAX_SIZE=500 export OPENZIM_MCP_CACHE__TTL_SECONDS=14400 export OPENZIM_MCP_LOGGING__LEVEL=INFO export OPENZIM_MCP_INSTANCE__CONFLICT_DETECTION=strict EOF # Source in all deployments source /etc/openzim-mcp/config.sh openzim-mcp /path/to/zim/files ``` #### 2. Monitor Instance Health ```bash # Regular health checks curl -X POST http://localhost:8000/mcp \ -d '{"name": "get_server_health"}' | \ jq '.instance_tracking' ``` #### 3. Automated Conflict Resolution ```bash # Scheduled cleanup (cron job) 0 */6 * * * curl -X POST http://localhost:8000/mcp \ -d '{"name": "resolve_server_conflicts"}' > /dev/null ``` ### Development Environments #### 1. Use Relaxed Detection ```bash export OPENZIM_MCP_INSTANCE__CONFLICT_DETECTION=relaxed ``` #### 2. Separate Tracking Directories ```bash # Developer 1 export OPENZIM_MCP_INSTANCE__TRACKING_DIR="/tmp/dev1_instances" # Developer 2 export OPENZIM_MCP_INSTANCE__TRACKING_DIR="/tmp/dev2_instances" ``` #### 3. Quick Cleanup ```bash # Clean all instances for fresh start rm -rf ~/.openzim_mcp_instances/* ``` ## Troubleshooting ### Common Issues #### Issue: False Conflict Warnings **Symptoms**: Warnings about conflicts when only one server is running **Cause**: Stale instance files from previous sessions **Solution**: ```json {"name": "resolve_server_conflicts"} ``` #### Issue: Configuration Mismatch Errors **Symptoms**: High-severity conflicts between instances **Cause**: Different environment variables or configuration **Solution**: 1. Standardize configuration across instances 2. Use configuration management tools 3. Document configuration requirements #### Issue: Instance Tracking Disabled **Symptoms**: No conflict detection, missing health information **Cause**: `OPENZIM_MCP_INSTANCE__TRACKING_ENABLED=false` **Solution**: ```bash export OPENZIM_MCP_INSTANCE__TRACKING_ENABLED=true ``` ### Diagnostic Commands #### Check Instance Files ```bash ls -la ~/.openzim_mcp_instances/ cat ~/.openzim_mcp_instances/server_*.json ``` #### Verify Process Status ```bash ps aux | grep openzim-mcp ``` #### Test Configuration Hash ```bash # Compare configuration between instances curl -X POST http://localhost:8000/mcp \ -d '{"name": "get_server_configuration"}' | \ jq '.configuration.config_hash' ``` ## Advanced Configuration ### Custom Instance Tracking For specialized deployments, you can customize instance tracking behavior: ```bash # Extended heartbeat interval export OPENZIM_MCP_INSTANCE__HEARTBEAT_INTERVAL=300 # Custom instance naming export OPENZIM_MCP_SERVER_NAME="production-server-01" # Enhanced conflict logging export OPENZIM_MCP_LOGGING__LEVEL=DEBUG ``` ### Integration with Monitoring Systems #### Prometheus Metrics (Future) ```bash # Enable metrics endpoint export OPENZIM_MCP_METRICS__ENABLED=true export OPENZIM_MCP_METRICS__PORT=9090 ``` #### Health Check Endpoints ```bash # Configure health check URL curl http://localhost:8000/health/instances ``` --- **Need help with deployment?** Check the [Configuration Guide](Configuration-Guide) for detailed setup instructions.

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/cameronrye/openzim-mcp'

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