ase-mcp
Puente MCP entre un agente de IA y una sesión activa de Aseprite, misma máquina o agente en una máquina virtual.
Documentación
ase-mcp
Permite que un agente de IA controle una sesión de Aseprite en vivo mediante el Protocolo de Contexto de Modelo (MCP).
Dibuja, anima, etiqueta y exporta dentro de un archivo .aseprite real y editable, desde un
agente que se ejecuta en una máquina virtual o en la misma máquina.
https://github.com/user-attachments/assets/1ed1c882-1fee-4d09-974f-673eb77eb70a
Un solo prompt construye una escena completa, casa, jardín y un ciclo de caminata de bebé de 12 fotogramas, en vivo en Aseprite, en una sola transacción Lua. No es un PNG aplanado: es un archivo
.asepritereal con capas, etiquetas y animación que puedes seguir editando.
A diferencia de un puente por lotes o sin interfaz, ase-mcp actúa sobre la sesión que ya tienes abierta, por lo que lo que hace el agente aparece en tu lienzo a medida que ocurre.
Instalación (usuario)
Un solo archivo para instalar: ase-mcp-bridge.aseprite-extension (incluye el complemento
Y el servidor).
- Aseprite:
Edit > Preferences > Extensions > Add Extension-> eligease-mcp-bridge.aseprite-extension-> Aceptar. - La primera vez, Aseprite pide permiso para ejecutar un comando / usar la red ->
Permitir (o concede confianza total en
Edit > Preferences > Scripts).
Eso es todo. Al cargar, el complemento inicia el servidor incluido y se conecta; cada inicio posterior de Aseprite es automático.
Lado del agente (cualquier cliente MCP; el token de autenticación es obligatorio incluso en la misma máquina):
-
Máquina virtual: ejecuta
scripts/ase-mcp-setup.ps1como administrador en el HOST. Hace todo el cableado (portproxy, firewall con ámbito, generación de token) y escribe un.mcp.jsonlisto para usar en la raíz del repositorio. Detalles enINSTALL.md. -
Misma máquina: copia
.mcp.json.example, establece el host de la URL en127.0.0.1y pega el token de%APPDATA%/ase-mcp/token(generado en el primer inicio del servidor). -
Misma máquina: ejecuta
scripts/ase-mcp-setup.ps1 -Local(sin administrador). Omite el portproxy y el firewall, genera el token y escribe.mcp.jsonen127.0.0.1.
Arquitectura
MCP agent (VM) --HTTP:8001--> ase-mcp server (HOST) --WS :8767--> Aseprite plugin (HOST)
(portproxy) launched by the plugin dials OUT (WS client)
El servidor se vincula a 127.0.0.1 (8001 HTTP para el MCP, 8767 WebSocket para el
complemento). Para una máquina virtual, un portproxy y un firewall con ámbito (scripts/ase-mcp-setup.ps1)
exponen el 8001. El Lua de Aseprite es solo un CLIENTE WebSocket, por lo que el complemento marca hacia AFUERA;
el servidor no puede vivir dentro de Aseprite, por lo que la extensión lo incluye y
lo inicia automáticamente (os.execute).
Diseño
ase-mcp/
ase-mcp-bridge.aseprite-extension the deliverable (plugin + bundled exe)
ase-mcp-server.exe standalone server (PyInstaller onefile)
server.py server source (FastMCP HTTP + WebSocket + tools)
build_exe.bat rebuild the exe (needs Python + pyinstaller)
aseprite-plugin/ extension source (package.json + ase_bridge.lua + exe)
scripts/ ase-mcp-setup / remove / status / test
build_package.py requirements.txt INSTALL.md SECURITY.md
Herramientas
33 herramientas. Cada herramienta que modifica el sprite termina su Lua con app.refresh(),
para que el lienzo se repinte de inmediato (no es necesario mover el mouse sobre Aseprite).
aseprite_status()- ¿puente conectado? información del sprite activo.run_lua(code)- ejecuta Lua arbitrario de Aseprite en la sesión en vivo (herramienta avanzada).new_sprite(w, h, mode),save_png(path),save_aseprite(path).- Dibujo:
draw_pixel,draw_pixels(lote: pares [x, y], un color, un paso de deshacer, máximo 4096),draw_rect,draw_line,draw_ellipse,bucket_fill,get_pixel(x, y, frame, layer)(lee de vuelta hex/gris/índice). - Capas y cels:
add_layer,duplicate_layer,get_cels(layer),copy_cel(from_frame, to_frame, layer, to_layer),move_cel(...)(misma firma),delete_cel(frame, layer). - Fotogramas:
add_frame,insert_frame(frame),duplicate_frame(frame),delete_frame(frame),set_active_frame(frame),set_frame_duration(frame, duration_ms),set_frame_durations(durations_ms)(lote, fotograma 1..N). - Etiquetas:
create_tag(name, from_frame, to_frame, direction)(hacia adelante, hacia atrás, ping_pong, ping_pong_reverse),update_tag(name, new_name, direction),delete_tag(name). - Paleta e información:
set_palette(colors),sprite_info()(tamaño, duraciones de fotogramas en ms, capas, etiquetas). - Exportación:
export_spritesheet(path, data_path, sheet_type, border_padding, shape_padding)(sheet_type: horizontal, vertical, rows, columns, packed; data_path escribe un archivo de datos hash JSON). - Depuración:
enable_debug_log()/disable_debug_log().
Las rutas de guardado y exportación están restringidas por ASE_OUTPUT_ROOT (ver SECURITY.md B-2):
la extensión debe coincidir con la herramienta, y cuando la variable está establecida, la ruta resuelta
debe permanecer dentro de esa raíz.
Registro de depuración
Dos interruptores independientes, uno por lado del puente:
- Lado del host (Aseprite):
File > Scripts > ase-mcp: Enable debug logimprime cada comando entrante y su respuesta en la consola de Aseprite.ase-mcp: Disable debug loglo desactiva. - Lado del agente (herramientas MCP):
enable_debug_log()/disable_debug_log()imprimen cada acción enviada, sus parámetros y la respuesta de Aseprite en la consola del servidor ase-mcp.
Seguridad
run_lua es ejecución de código arbitrario dentro de Aseprite, e instalar la
extensión inicia un ejecutable incluido en el host (Aseprite solicita permiso una vez). El
puente está construido en torno a eso: se requiere un token compartido en ambos transportes
(comparación de tiempo constante), las rutas de guardado y exportación están confinadas por ASE_OUTPUT_ROOT,
el servidor se vincula a 127.0.0.1, y una máquina virtual solo lo alcanza a través del
portproxy y firewall con ámbito. El modelo de amenazas completo y una auditoría por hallazgo están en
SECURITY.md. Léelo antes de exponer el puerto más allá de una sola máquina.
Estado
Funcionando, probado de extremo a extremo en una máquina virtual y en la misma máquina (-Local): un agente controla una sesión de Aseprite
en vivo en el host de Windows, generando y animando una escena completa (ver el
video anterior). Dirigido a Aseprite 1.3+; algunas llamadas Lua pueden necesitar pequeños ajustes en
otras versiones de Aseprite; abre un issue si encuentras alguna.
Licencia
Apache-2.0. Ver LICENSE.