Skip to main content
Glama
ext-sakamoro

Aseprite MCP Tools

by ext-sakamoro

batch_process_custom

Apply custom Lua scripts to multiple Aseprite files for automated pixel art processing and manipulation in batch operations.

Instructions

Apply a custom Lua script to multiple Aseprite files.

Args: input_dir: Directory containing input files lua_script: Lua script to execute on each file output_dir: Optional output directory for modified files file_pattern: File pattern to match (default: "*.aseprite")

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
input_dirYes
lua_scriptYes
output_dirNo
file_patternNo*.aseprite

Implementation Reference

  • The tool handler `batch_process_custom` implementation.
    async def batch_process_custom(
        input_dir: str,
        lua_script: str,
        output_dir: Optional[str] = None,
        file_pattern: str = "*.aseprite"
    ) -> str:
        """Apply a custom Lua script to multiple Aseprite files.
    
        Args:
            input_dir: Directory containing input files
            lua_script: Lua script to execute on each file
            output_dir: Optional output directory for modified files
            file_pattern: File pattern to match (default: "*.aseprite")
        """
        try:
            # Validate inputs
            input_path = validate_file_path(input_dir, must_exist=True)
            
            if not input_path.is_dir():
                raise ValidationError("input_dir", str(input_path), "Must be a directory")
            
            if output_dir:
                output_path = validate_file_path(output_dir, must_exist=True)
                if not output_path.is_dir():
                    raise ValidationError("output_dir", str(output_path), "Must be a directory")
            else:
                output_path = None
            
            # Find all matching files
            files = list(input_path.glob(file_pattern))
            if not files:
                return f"No files matching '{file_pattern}' found in {input_path}"
            
            # Process each file
            results = []
            errors = []
            
            for file in files:
                try:
                    # Build complete script
                    builder = LuaBuilder()
                    builder.add_comment(f"Processing {file.name}")
                    builder.add_line()
                    
                    # User script (wrapped in safety checks)
                    builder.add_line("-- User script begins --")
                    builder.add_line(lua_script)
                    builder.add_line("-- User script ends --")
                    builder.add_line()
                    
                    # Save to output if specified
                    if output_path:
                        output_file = output_path / file.name
                        builder.save_sprite(str(output_file))
                    else:
                        builder.save_sprite()
                    
                    # Execute
                    cmd = get_command()
                    success, output = cmd.execute_lua_script(builder.build(), str(file))
                    
                    results.append(f"Processed: {file.name}")
                    
                except Exception as e:
                    errors.append(f"Failed {file.name}: {e}")
                    if not get_config().batch.continue_on_error:
                        break
            
            # Summary
            summary = f"Batch custom processing completed:\n"
            summary += f"- Processed: {len(results)} files\n"
            summary += f"- Failed: {len(errors)} files\n"
            
            if output_path:
                summary += f"- Output directory: {output_path}\n"
            
            if results:
                summary += "\nSuccessful:\n" + "\n".join(results[:10])
                if len(results) > 10:
                    summary += f"\n... and {len(results) - 10} more"
            
            if errors:
                summary += "\n\nErrors:\n" + "\n".join(errors[:5])
                if len(errors) > 5:
                    summary += f"\n... and {len(errors) - 5} more"
            
            return summary
            
        except (ValidationError, AsepriteError) as e:
            return f"Failed to batch process: {e}"
        except Exception as e:
            return f"Unexpected error: {e}"

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/ext-sakamoro/AsepriteMCP'

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