Aseprite Asset MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ASEPRITE_PATH | No | Path to the Aseprite executable. Required if Aseprite is not in the PATH. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| server_capabilitiesA | List the typed TypeScript MCP capabilities available to the current server. |
| get_tools_listB | List tool folders and counts. Use this before loading a tool folder. |
| get_tools_by_folderC | List concise tools in one folder. Use a parent folder to inspect its subfolders. |
| get_tools_searchA | Search a compact subset of tools by name, description, or folder to reduce context usage. |
| convert_image_to_pixel_artB | Convert one image to pixel art with a deterministic shared palette. |
| convert_animation_to_pixel_artB | Convert all image frames to pixel art and preserve animation delays. |
| upscale_pixel_artB | Upscale one image or animation with deterministic nearest-neighbor pixels and preserved transparency. |
| harmonize_asset_paletteA | Apply a deterministic accent palette to a PNG or GIF, preserve transparency and timing, and cap output colors without overwriting the source. |
| build_contact_sheetC | Fit heterogeneous sprite previews into a deterministic nearest-neighbor contact sheet and write a navigable JSON manifest. |
| export_animation_gifB | Convert a PNG, GIF, or animated image into a GIF while preserving frames. |
| inspect_asset_bundleC | Inspect one asset and return compact quality violations and deterministic recommendations in one call. |
| inspect_asset_batchB | Inspect up to 32 sprites in one deterministic quality pass and return a compact collection summary. |
| inspect_animation_qualityB | Audit an animation for duplicate frames, timing, palette drift, movement bounds, and loop seam issues. |
| normalize_spriteA | Crop one or more raster frames to shared alpha bounds, add deterministic padding and write pivot metadata without overwriting the source. |
| build_animation_sheetA | Assemble all frames of a PNG or GIF into a deterministic PNG spritesheet and write coordinates, bottom-center pivots, and delays to a manifest. |
| inspect_sprite_geometryA | Inspect per-frame alpha bounds, connected components, baseline, and bottom-center pivots for scene placement. |
| generate_sprite_hitboxesB | Generate a deterministic collision manifest from sprite geometry using component or union hitboxes with bounded padding. |
| build_sprite_runtime_bundleC | Build one deterministic runtime bundle with an animation sheet, timing manifest, and sprite hitbox manifest. |
| generate_sprite_anchorsC | Generate deterministic placement anchors from sprite geometry for scene composition and game-engine transforms. |
| export_asset_packC | Export an atlas PNG and a compact JSON manifest in one call. |
| run_asset_recipeC | Run one compact asset recipe or return its dry-run plan. |
| batch_asset_jobC | Run several compact asset recipes in order or return one batch plan. |
| create_style_bibleC | Create a deterministic visual style contract for sprites and maps. |
| inspect_referenceB | Analyze reference dimensions, dominant colors, contrast, edges, and transparency. |
| run_asset_quality_gateC | Run compact pixel-art quality checks before export. |
| build_terrain_tilesetC | Build a deterministic terrain tileset with adjacency variants and metadata. |
| generate_world_mapB | Generate a seeded multi-biome map manifest and optional preview. |
| generate_beach_sceneC | Generate a seeded beach map, preview, and animated wave GIF. |
| extend_sceneB | Extend an existing deterministic scene around its borders while preserving the original layers and landmarks. |
| generate_biome_transitionA | Generate deterministic transition metadata and a preview overlay between adjacent map biomes without mutating the source map. |
| apply_material_textureC | Apply deterministic water, earth, grass, stone, or snow granularity while preserving transparency and source data. |
| apply_depth_lightingA | Apply deterministic depth-aware directional lighting to a sprite while preserving transparency and source data. |
| generate_environment_packC | Generate a complete beach, forest, village, or cave asset pack. |
| apply_pixel_outlineC | Add a deterministic pixel outline around opaque sprite edges. |
| apply_color_gradeC | Apply deterministic brightness, contrast, and saturation grading to a sprite. |
| generate_sprite_shadowC | Generate a deterministic clipped sprite shadow from alpha data. |
| generate_particle_burstB | Generate a deterministic animated particle burst GIF for impact, healing, magic, or dust. |
| generate_normal_mapC | Generate a deterministic tangent-space normal map from sprite alpha depth. |
| generate_rain_overlayC | Generate a deterministic rain overlay while preserving the source dimensions and frame timing. |
| generate_motion_packB | Generate a deterministic idle, walk, run, jump, or attack cycle from a static or animated sprite. |
| generate_seamless_textureC | Make opposite texture borders match deterministically for repeatable water, earth, stone, or grass backgrounds. |
| generate_water_reflectionC | Generate a deterministic animated reflection below a waterline for oceans, beaches, and wave scenes. |
| generate_water_causticsB | Generate deterministic animated light caustics over opaque water pixels for oceans, pools, beaches, and flooded interiors. |
| generate_day_night_cycleC | Generate a deterministic animated day, sunset, night, and sunrise cycle while preserving transparency and source dimensions. |
| generate_source_variant_packB | Generate a deterministic multi-output environmental variant pack for one source asset: rain, fire, earthquake, birds, night, movement, and water effects. |
| generate_asset_presetC | Generate one executable world preset with terrain, map, preview, and deterministic time-of-day artifacts. |
| generate_scene_effect_stackC | Generate a deterministic compact package of selected scene effects while preserving the source: rain, particles, water motion, day/night, material grain, and directional lighting. |
| create_asset_recipeA | Compose a deterministic, reviewable multi-effect asset recipe without executing it. |
| execute_asset_recipeC | Execute a deterministic composed asset recipe through the shared visual services. |
| get_asset_libraryC | Search the deterministic asset/preset library with compact results for humans and agents. |
| get_asset_library_itemA | Resolve one library item and its README, preview, sprite sheet, and variants. |
| get_asset_presetC | Resolve a ready-to-compose scene preset and its recommended MCP tools. |
| compose_asset_presetB | Compose one scene preset into compact assets and ordered layers for a single low-token request. |
| audit_asset_libraryA | Audit library ids, preset references, categories, folders, and navigable asset paths before composing a scene. |
| summarize_asset_libraryA | Return compact category and preset navigation metadata for the asset library with minimal tokens. |
| plan_asset_sceneA | Plan ordered scene layers from selected asset library ids without generating files or loading full asset details. |
| compose_asset_sceneC | Compose selected library previews into a deterministic PNG and navigable manifest. |
| compose_asset_scene_animationC | Compose selected animated library previews into a deterministic GIF and frame manifest. |
| generate_library_variant_packB | Generate deterministic environmental variants for multiple asset library ids with one compact request. |
| audit_asset_manifestA | Audit files referenced by a generated manifest, including missing, empty, format, and SHA-256 metadata. |
| recommend_asset_sceneC | Recommend a compact, deterministic set of compatible library assets for a scene, with explainable reasons and covered tags/effects. |
| build_scene_bundleC | Build a static PNG scene, animated GIF scene, and both navigation manifests through one deterministic operation. |
| suggest_enhancement_planA | Inspect one image and return a deterministic, non-destructive enhancement plan for an agent or human review. |
| apply_enhancement_planB | Apply a deterministic enhancement plan to a new output file while preserving the source asset. |
| apply_enhancement_batchA | Enhance up to 24 assets in one deterministic batch, isolating per-file failures and preserving every source. |
| start_asset_jobB | Start a compact asynchronous batch asset job and return its job id. |
| get_asset_job_statusC | Read one asynchronous asset job without returning raw pixels. |
| cancel_asset_jobA | Request cancellation of a queued or running asset job. |
| create_canvasC | Create a new Aseprite canvas. |
| add_groupC | Add a named layer group to an Aseprite document. |
| add_layerC | Add a named layer, optionally inside a group. |
| delete_layerC | Delete a named layer from an Aseprite document. |
| rename_layerC | Rename a named layer. |
| duplicate_layerC | Duplicate a layer and its cels across all frames. |
| reorder_layerC | Move a layer to a one-based stack position. |
| set_layer_blend_modeC | Set a layer blend mode supported by Aseprite. |
| merge_layer_downC | Merge a layer into the layer below it. |
| flatten_spriteB | Flatten all layers into one layer. |
| add_frameC | Add one animation frame. |
| add_framesC | Add a deterministic number of animation frames. |
| set_frameB | Set the active animation frame by one-based index. |
| set_frame_durationB | Set one animation frame duration in milliseconds. |
| set_frame_duration_allC | Set all animation frame durations in milliseconds. |
| set_layer_visibilityC | Set a named layer visibility. |
| set_layer_opacityB | Set a named layer opacity from 0 to 255. |
| draw_pixelsC | Draw explicit pixels on the active cel. |
| draw_lineC | Draw a Bresenham line with optional pixel thickness. |
| draw_rectangleC | Draw a filled or outlined pixel-art rectangle on the active Aseprite layer. |
| fill_areaC | Fill a contiguous area from a seed pixel. |
| draw_circleC | Draw an ellipse-bounded circle. |
| draw_pixels_atC | Draw explicit pixels on a named layer and animation frame, creating the cel when requested. |
| draw_line_atB | Draw a Bresenham line on a named layer and animation frame. |
| draw_rectangle_atB | Draw a filled or outlined rectangle on a named layer and animation frame. |
| fill_area_atC | Fill a contiguous area on a named layer and animation frame. |
| draw_circle_atC | Draw an ellipse-bounded circle on a named layer and animation frame. |
| draw_polygonC | Draw a filled or outlined polygon on a named layer and animation frame. |
| draw_pathD | Draw a polyline on a named layer and animation frame. |
| apply_gradient_rectA | Apply a horizontal or vertical linear gradient to a rectangle on a named layer and animation frame. |
| draw_ellipse_atC | Draw a filled or outlined ellipse on a named layer and animation frame. |
| export_spriteC | Export a sprite to a selected image format and confirm that Aseprite wrote an output file. |
| copy_spriteA | Copy a sprite to another Aseprite document, refusing to overwrite by default. |
| export_frameC | Export one animation frame as a PNG with nearest-neighbor integer scaling. |
| export_layersC | Export each layer as a PNG and confirm that at least one new layer file was written. |
| export_tagC | Export an animation tag as an image or animation file after validating that the tag exists. |
| import_image_as_layerC | Import an image into a named layer and frame, creating the layer when it does not exist. |
| create_celA | Create an empty cel at a layer and frame when one does not already exist. |
| clear_celC | Delete a cel from a named layer and frame. |
| copy_celB | Copy one layer cel to another frame, replacing the destination by default. |
| copy_frameC | Copy all cels from one frame to another frame or append a new frame. |
| set_cel_positionC | Set one cel position, optionally creating it from a source cel. |
| tween_cel_positionsB | Tween cel positions linearly across a frame range. |
| offset_cel_positionsC | Offset cel positions across a frame range. |
| propagate_frame_to_rangeC | Propagate all source-frame cels to a frame range. |
| delete_frameB | Delete one animation frame while keeping at least one frame in the sprite. |
| delete_tagC | Delete an existing animation tag. |
| set_onion_skinC | Validate onion-skin settings for batch workflows; Aseprite UI-only settings are reported explicitly. |
| render_onion_skinC | Render neighboring animation frames as translucent onion-skin ghosts into a PNG. |
| compare_framesA | Compare two flattened animation frames and return changed-pixel metrics as JSON. |
| set_cel_opacityB | Set one cel opacity from 0 to 255. |
| get_color_statsC | Return JSON color usage statistics for one flattened frame. |
| get_paletteB | Return the active sprite palette as a JSON color array. |
| set_paletteC | Apply a controlled hexadecimal palette to a document. |
| extract_paletteC | Extract and persist an optimized palette with a bounded color count. |
| remap_colors_in_cel_rangeB | Remap explicit RGB colors across a layer frame range while preserving alpha. |
| list_palette_presetsA | List built-in retro palette presets. |
| apply_palette_presetC | Apply a built-in retro palette preset to the sprite. |
| generate_color_rampC | Generate a hue-shifted dark-to-light pixel-art color ramp. |
| quantize_to_paletteC | Snap opaque pixels to the nearest color in the active palette. |
| set_color_modeC | Convert a sprite to RGB, grayscale, or indexed color mode. |
| get_pixel_colorC | Read one RGBA pixel from a cel. |
| get_pixels_rectB | Read a rectangular RGBA region from a cel as JSON. |
| get_composite_pixelC | Read one RGBA pixel from the visible flattened composite. |
| get_composite_rectC | Read a visible flattened composite region as JSON. |
| move_regionC | Move a rectangular region within a cel, clearing its source. |
| copy_regionC | Copy a rectangular region to a layer and frame destination. |
| erase_regionC | Erase a rectangular region to transparency. |
| erase_colorB | Erase opaque pixels matching a color within channel tolerance. |
| flip_layerC | Flip a layer cel horizontally or vertically. |
| rotate_layerB | Rotate a layer cel 90, 180, or 270 degrees clockwise. |
| resize_canvasC | Resize the sprite canvas and its content. |
| crop_canvasC | Crop the sprite canvas to a rectangle. |
| list_text_fontsA | List discoverable TrueType and OpenType fonts. |
| measure_textA | Measure a text run without changing a sprite. |
| draw_textB | Rasterize and draw text into a sprite layer and frame. |
| draw_on_tileC | Draw pixels onto a tilemap tileset tile. |
| set_tilesC | Place tile indices on a tilemap frame by grid coordinates. |
| get_tile_atB | Read the tile index at a tilemap grid coordinate. |
| get_tilemap_infoB | Read tile size, tileset count, and map dimensions. |
| create_sliceC | Create a named rectangular slice. |
| set_slice_centerC | Set a slice 9-patch center rectangle. |
| set_slice_pivotC | Set a slice pivot point. |
| list_slicesB | List slice bounds, centers, and pivots as JSON. |
| delete_sliceC | Delete a named slice. |
| ensure_layers_presentC | Ensure cels exist for named layers across a frame range. |
| audit_animationC | Audit animation cels, overlaps, and declared frame ranges. |
| animation_sanitizeD | Normalize animation cels and optionally repair out-of-range activity. |
| start_preview_serverC | Serve a validated local directory over HTTP for visual asset preview. |
| stop_preview_serverA | Stop a preview server started by this MCP process. |
| copy_layers_between_spritesC | Copy selected animation layers and cels from one Aseprite document into another. |
| get_sprite_infoA | Read sprite dimensions, color mode, frame durations, layers, and tags as JSON. |
| duplicate_frame_rangeC | Append one or more copies of an inclusive animation frame range. |
| propagate_celsC | Copy selected layer cels from one source frame across a frame range. |
| tween_cel_positions_easedC | Tween cel positions across frames with deterministic easing. |
| oscillate_cel_positionsC | Apply sine-wave position offsets to cels across frames. |
| tween_cel_opacity_easedC | Tween cel opacity from 0 to 255 across frames with easing. |
| tween_cel_scale_easedA | Scale a source cel across frames with easing and a stable anchor. |
| set_layerC | Set the active layer by name, optionally creating it. |
| animation_workflow_guideA | Return a concise deterministic guide for character, environment, or general animation workflows. |
| run_lua_scriptB | Run a bounded, trusted Aseprite Lua script as an escape hatch; dedicated tools are preferred. |
| create_character_planC | Create a deterministic, auditable TypeScript plan for a layered character and its Godot exports. |
| create_scene_planC | Create a deterministic, auditable TypeScript plan for a tilemap scene and its Godot exports. |
| outline_nativeC | Apply Aseprite native outline to a selected layer and frame. |
| adjust_hsl_nativeC | Apply Aseprite native hue, saturation, and lightness adjustment. |
| adjust_brightness_contrastC | Apply Aseprite native brightness and contrast adjustment. |
| invert_colorsC | Apply Aseprite native color inversion. |
| replace_colorB | Replace a cel color while preserving alpha and allowing channel tolerance. |
| adjust_hslA | Shift hue, saturation, and lightness on an opaque cel while preserving alpha. |
| apply_convolutionC | Apply a built-in Aseprite convolution matrix to a layer and frame. |
| list_convolution_matricesA | List the built-in convolution matrices supported by Aseprite. |
| apply_dither_gradientC | Fill a rectangle with a two-color Bayer-dithered gradient. |
| apply_dither_patternC | Fill a rectangle with a uniform Bayer-dithered mix of two colors. |
| set_tagC | Create or update an animation tag. |
| create_tilemap_layerC | Create a tilemap layer and set the Aseprite grid. |
| validate_sceneA | Validate required layers and the requested frame range before export. |
| export_spritesheetC | Export a spritesheet and optional frame metadata for Godot. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 185 tools
Many tools perform nearly the same operation with small variations, such as draw_pixels/draw_pixels_at, adjust_hsl/adjust_hsl_native, apply_dither_gradient/apply_dither_pattern, and numerous generate_*_pack/compose_*_scene generators. The descriptions help, but the boundaries are not obvious from names alone, so an agent can easily pick the wrong variant.
The overwhelming majority of tools use a readable snake_case verb_noun pattern (create_canvas, export_sprite, get_palette, set_frame_duration), and _at suffixes consistently mark layer/frame-targeted variants. Minor exceptions like server_capabilities, animation_workflow_guide, and outline_native break the pattern but do not obscure the overall scheme.
185 tools is far beyond a well-scoped MCP surface; even a comprehensive Aseprite workflow does not need this many first-class entry points. This is an extreme count that will force agents to spend excessive tokens and effort on tool selection.
The surface is unusually broad: document/layer/frame/cel editing, palettes, tilemaps, text, slices, animation, exports, batch jobs, and procedural asset generation are all covered. Minor lifecycle gaps such as no explicit document save/close/delete and only validated onion-skin settings remain, but run_lua_script and export tools provide workarounds.