Skip to main content
Glama
santoshray02

CSV Editor

by santoshray02

configure_auto_save

Set up automatic saving for CSV editing sessions to prevent data loss by configuring backup frequency, location, and file format.

Instructions

Configure auto-save settings for a session.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
session_idYes
enabledNo
modeNoafter_operation
strategyNobackup
interval_secondsNo
max_backupsNo
backup_dirNo
custom_pathNo
formatNocsv
encodingNoutf-8

Implementation Reference

  • The core implementation of the configure_auto_save tool handler. This function configures auto-save settings for a CSV session by building a config dict and calling session.enable_auto_save().
    async def configure_auto_save(
        session_id: str,
        enabled: bool = True,
        mode: str = "after_operation",
        strategy: str = "backup",
        interval_seconds: Optional[int] = None,
        max_backups: Optional[int] = None,
        backup_dir: Optional[str] = None,
        custom_path: Optional[str] = None,
        format: str = "csv",
        encoding: str = "utf-8",
        ctx: Context = None
    ) -> Dict[str, Any]:
        """
        Configure auto-save settings for a session.
        
        Args:
            session_id: Session identifier
            enabled: Whether auto-save is enabled
            mode: Auto-save mode ('disabled', 'after_operation', 'periodic', 'hybrid')
            strategy: Save strategy ('overwrite', 'backup', 'versioned', 'custom')
            interval_seconds: Interval for periodic saves (default 300)
            max_backups: Maximum number of backup files to keep (default 10)
            backup_dir: Directory for backup files
            custom_path: Custom path for saves (when strategy='custom')
            format: Export format ('csv', 'tsv', 'json', 'excel', 'parquet')
            encoding: File encoding (default 'utf-8')
            ctx: FastMCP context
            
        Returns:
            Dict with success status and configuration
        """
        try:
            manager = get_session_manager()
            session = manager.get_session(session_id)
            
            if not session:
                return OperationResult(
                    success=False,
                    message="Session not found",
                    error=f"No session with ID: {session_id}"
                ).model_dump()
            
            if ctx:
                await ctx.info(f"Configuring auto-save for session {session_id}")
            
            # Build configuration
            config = {
                "enabled": enabled,
                "mode": mode,
                "strategy": strategy,
                "format": format,
                "encoding": encoding
            }
            
            if interval_seconds is not None:
                config["interval_seconds"] = interval_seconds
            if max_backups is not None:
                config["max_backups"] = max_backups
            if backup_dir is not None:
                config["backup_dir"] = backup_dir
            if custom_path is not None:
                config["custom_path"] = custom_path
            
            # Apply configuration
            result = await session.enable_auto_save(config)
            
            if result["success"]:
                if ctx:
                    await ctx.info(f"Auto-save configured: {mode} mode, {strategy} strategy")
                
                return OperationResult(
                    success=True,
                    message=f"Auto-save configured successfully",
                    session_id=session_id,
                    data=result["config"]
                ).model_dump()
            else:
                return OperationResult(
                    success=False,
                    message="Failed to configure auto-save",
                    error=result.get("error")
                ).model_dump()
                
        except Exception as e:
            logger.error(f"Error configuring auto-save: {str(e)}")
            if ctx:
                await ctx.error(f"Failed to configure auto-save: {str(e)}")
            return OperationResult(
                success=False,
                message="Failed to configure auto-save",
                error=str(e)
            ).model_dump()
  • Tool registration for configure_auto_save using @mcp.tool decorator in the main server.py file. Imports the handler from auto_save_operations.py and provides a thin wrapper.
    from .tools.auto_save_operations import (
        configure_auto_save as _configure_auto_save,
        disable_auto_save as _disable_auto_save,
        get_auto_save_status as _get_auto_save_status,
        trigger_manual_save as _trigger_manual_save
    )
    
    @mcp.tool
    async def configure_auto_save(
        session_id: str,
        enabled: bool = True,
        mode: str = "after_operation",
        strategy: str = "backup",
        interval_seconds: Optional[int] = None,
        max_backups: Optional[int] = None,
        backup_dir: Optional[str] = None,
        custom_path: Optional[str] = None,
        format: str = "csv",
        encoding: str = "utf-8",
        ctx: Context = None
    ) -> Dict[str, Any]:
        """Configure auto-save settings for a session."""
        return await _configure_auto_save(
            session_id, enabled, mode, strategy, interval_seconds,
            max_backups, backup_dir, custom_path, format, encoding, ctx
        )

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/santoshray02/csv-editor'

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