mcpField
A
Aseprite Live

Aseprite Live

本地服务
github.com/oaktreegames媒体与设计813 周前更新

关于 Aseprite Live

Aseprite Live 是用于实时 Aseprite 编辑器或无头模式的 MCP 服务,面向像素美术与游戏开发工作。它将精灵编辑与 Unity 导出、美术 QA、瓦片地图和编辑器内交互结合起来。

主要功能

  1. 01实时及无头 Aseprite 编辑
  2. 02导出 Unity 精灵表和 .meta
  3. 03精灵美术 QA 检查
  4. 04等距绘图图元
  5. 05瓦片地图编辑
  6. 06每次修改对应命名撤销步骤

适用场景

  1. 01通过 Agent 创建或编辑精灵
  2. 02向 Unity 导出切片精灵和轴心
  3. 03检查精灵尺寸、颜色数和边距
  4. 04制作瓦片地图或等距素材

MCP 相关

该服务提供类型化的 Aseprite 编辑工具,以及 MCP 资源和提示词。它既可操作运行中的编辑器,也可在无头模式下处理文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"oaktreegames-aseprite-live": {
"command": "uvx",
"args": [
"aseprite-live-mcp"
],
"env": {
"ASEPRITE_MCP_BACKEND": "<ASEPRITE_MCP_BACKEND>",
"ASEPRITE_PATH": "<ASEPRITE_PATH>",
"ASEPRITE_RELAY_URL": "<ASEPRITE_RELAY_URL>",
"ASEPRITE_MCP_NO_UPDATE_CHECK": "<ASEPRITE_MCP_NO_UPDATE_CHECK>"
}
}
}
}
启动命令uvx aseprite-live-mcp
需要配置的环境变量
ASEPRITE_MCP_BACKENDlive (default) or headless
ASEPRITE_PATHPath to the Aseprite executable (auto-detected if unset)
ASEPRITE_RELAY_URLRelay HTTP base for the live backend (default http://127.0.0.1:9878)
ASEPRITE_MCP_NO_UPDATE_CHECKSet to disable the daily PyPI update check

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiaseprite-live-mcp0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

aseprite-live-mcp

PyPI Downloads CI license python MCP tools

让 AI Agent 在你正在运行的 Aseprite 编辑器中绘图——每次编辑都可通过一个命名撤销操作回退,并配备以 Unity 为先的游戏开发工具集。

一个用于 Aseprite 的开源 Model Context Protocol 服务。它可驱动正在运行的编辑器(所有打开的文档、未保存的标签页、编辑器内的对话框,甚至可以请你点击画布上的某个点),也可对磁盘上的文件进行无界面处理(aseprite --batch)。一键导出 Unity 精灵表和 .meta 文件,并为每个切片设置轴心点;按项目规范进行美术 QA 检查;提供等距图元和图块地图;还能在版本过时时通知你。

实际演示

以下示例均由 AI Agent 通过 MCP 驱动正在运行的 Aseprite 画布完成——每一步都可通过一个命名撤销操作回退。

构建等距机器
等距图元
等距方盒 → 凹入端口 → 水箱 → 描边
绘图工具集
绘图工具集
矩形 · 抖动渐变 · 椭圆 · 圆形 · 抖动 · 描边
沿调色板渐变步进着色
渐变步进着色
平涂 → 体积感着色,沿手动排序的调色板渐变
编辑图块地图
图块地图
逐块绘制图块集 → 逐行排布地图
印章绘制
印章绘制
只绘制一次花朵 → 沿弧线散布,一个撤销操作即可回退
Aseprite 中的 Claude Bridge 面板
桥接面板
实时状态、活动日志、暂停开关——都在 Aseprite 中

还有无界面服务无法实现的部分——Agent 在你的编辑器内向你发起请求(真实屏幕截图,并非模型图):

Aseprite 内由 MCP 驱动的确认对话框

## 一次完整构建,一场实时会话

以下所有内容都来自针对一个正在运行的编辑器的一次会话:构建了五个精灵,完成 QA,组装成图集、切片并导出到 Unity — 最后通过编辑器内的审批对话框完成确认。.aseprite 源文件位于 examples/showcase/;打开它们,然后按 Ctrl-Z 向后查看构建过程。

组装后的展示图集:等距建筑、瓦片地图、动作 QA 渲染、信标脉冲条

等距视角的精炼厂初步构图
完成 QA 的等距初步构图
面多边形 → 凹入式接口 · 坡道 + 锁定调色板的明暗处理 · 一次撤销即可盖上铆钉 · qa_sweep 4/4
信标脉冲动画
信标脉冲
加色辉光 · 缓动的 tween_cel_opacity 循环 · 已添加标签并设定时长
无人机冲刺动画
无人机冲刺
tween_frames 平滑插值 · smear_frame 拖影 · 已用 frame_diff 验证端点

QA 工具可不是摆设。构建过程中,frame_diff 的变更边界框捕捉到了一处肉眼未察觉的动作补间问题 — 每个 cel 都因图像原点而发生位移,并在画布边缘被裁切。一次事务就修复了问题;同一差异工具还再次验证了修复结果:

无人机飞行轨迹的洋葱皮合成图
render_onion_composite — 较早的帧为红色,较晚的帧为蓝色,整条轨迹合成在一张图中

图集的十个切片通过一次操作导入 Unity — examples/showcase/unity/ 中包含图集 PNG 和生成的 .meta:十个 Multiple 模式的精灵,矩形区域已翻转 y 轴,每个枢轴点都已烘焙。

安装

一条命令,无需克隆:

uvx aseprite-live-mcp        # or: pipx run aseprite-live-mcp

需要 Python 3.10+ 和 Aseprite 1.3+。无头模式只需这些;实时编辑器还需要一个额外步骤(见下文)。

在 VS Code 中安装 在 Cursor 中安装

Claude Code
claude mcp add aseprite-live -- uvx aseprite-live-mcp
Claude Desktop / 任意 JSON 配置客户端
{
  "mcpServers": {
    "aseprite-live": {
      "command": "uvx",
      "args": ["aseprite-live-mcp"],
      "env": {
        "ASEPRITE_MCP_BACKEND": "headless",           // or "live" — see below
        "ASEPRITE_PATH": "C:/Program Files/Aseprite/Aseprite.exe"
      }
    }
  }
}

如果省略 ASEPRITE_PATH,系统会自动检测常见安装位置(Steam 和独立安装版)。

从源代码安装
git clone https://github.com/oaktreegames/aseprite-live-mcp
cd aseprite-live-mcp
pip install -e .

快速开始 — 无头模式(2 分钟,无需打开编辑器)

添加服务时设置 "ASEPRITE_MCP_BACKEND": "headless"(见上文)。在无头模式下,工具需要一个 file 参数 — 即要操作的 .aseprite 文件。让你的 Agent 运行 status 以确认连接,然后试试:

“在 C:/art/coin.aseprite 创建一个 32×32 的精灵,画一个金色圆形,并将其导出为 coin.png。”

快速入门 — 实时编辑器(操作当前打开的画布)

实时后端会编辑正在运行的 Aseprite,每次编辑对应一个撤销步骤。桥接脚本和中继服务器位于此仓库中(不包含在 pip 包内),因此请先获取它们:git clone https://github.com/oaktreegames/aseprite-live-mcp — 或者只下载 claude-bridge.lua 和 relay_server.py。

  1. 将桥接脚本安装到 Aseprite 中 — 在 Aseprite 中选择 File → Scripts → Open Scripts Folder,将 aseprite_client/claude-bridge.lua 复制到该文件夹,然后重启 Aseprite(或选择 File → Scripts → Rescan Scripts Folder)。
  2. 启动中继服务器: python bridge/relay_server.py(需要 pip install websockets)。
  3. 连接: 在 Aseprite 中选择 File → Scripts → claude-bridge,并在提示时授予脚本信任权限。面板会显示 "connected to Claude"、实时活动,以及暂停切换按钮。
  4. 在 MCP 配置中将后端切换为 live("ASEPRITE_MCP_BACKEND": "live")。

现在,工具会操作当前活动文档;观察编辑效果,并按 Ctrl-Z 撤销每项编辑。有关其工作原理,请参阅 docs/ARCHITECTURE.md。

你可以让它做什么

  • “创建一个 32×32 的精灵,画一个红色圆圈,并将其导出为 icon.png。”
  • “将 machines.aseprite 导出为 Unity 精灵表,像素与单位的比例设为 16。” → 直接将精灵表和预切片的 .meta 文件放入你的 Unity 项目。
  • “切分这个图集,设置每个切片的枢轴点,并将其导出到 Unity,同时烘焙枢轴点信息。”
  • “执行一轮 QA 检查:尺寸必须为 64×64,颜色不超过 16 种,与网格对齐,并留出 2px 的贴纸边距。”
  • “为 1×1 的机器底座画一个等距视角方块,并在其正面开一个凹陷接口。”
  • “设置一个 16×16 的图块地图图层,绘制草地和泥土图块,并铺设一条 10×6 的地面带。”
  • “将我的导出内容整合到一张带标签的精灵表中,切分每个部分,设置枢轴点,然后把图集交给 Unity。”
  • “在我的编辑器中弹出一个对话框:批准或重做。然后等我点击锚点。”
  • “在我润色精灵时监视它;我停下来后,重新执行一轮 QA 检查。”
  • “比较第 3 帧和第 4 帧——手臂真的动了吗?”

本项目的定位(实事求是)

目前已经有不错的 Aseprite MCP 服务。本项目并非首个, 也不自称是首个。我们主张——并且有依据的是:

能力现状本项目
绘制 / 图层 / 帧 / 调色板 / 选区 / 导出、抖动、渐变、轮廓、滤镜、补间、瓦片地图无头模式的领先方案(diivi 约 113 个工具、pixel-mcp、ext-sakamoro)和商业实时服务(Aseprite MCP Pro,以 Godot 为主)已涵盖得很全面功能对等——经过精选、类型完整的功能集
一步完成 Unity 导出——精灵表 + .meta,并预先写入每个切片的轴心点我们找到的其他所有 Aseprite→Unity 流程,都需要单独使用引擎端导入器;没有一个能导出轴心点差异化优势 ✅
美术 QA 扫描,包括依据项目规范测量透明贴纸边距我们没有找到其他将精灵边距 / 留白检查作为打包扫描功能的服务差异化优势 ✅
等距绘图基元(2:1 盒体 / 圆柱体、自动面部着色、凹陷面板)在我们调查过的所有 Aseprite MCP 中,这是唯一提供等距绘图基元的方案差异化优势 ✅
编辑器内交互:在 Aseprite 中显示对话框、让美术师选取点位、监视美术师的编辑操作、控制对称与视口已有实时 GUI 服务(商业版 Pro;两个初创开源项目);我们调查过的方案都没有提供编辑器内对话框或人在回路中的工具差异化优势 ✅
更新提示——服务自身会告知你是否有更新版本据我们所知(检查日期:2026-07-16),没有其他 MCP 服务会通过会话报告自身的更新状态差异化优势 ✅
实时瓦片地图编辑无头模式的领先方案会在磁盘上编辑瓦片地图;我们找到的唯一实时瓦片地图编辑方案是闭源的开源优势 ✅
MCP 资源 + 提示词在我们调查过的开源 Aseprite MCP 项目中,这是 MCP 原生功能最丰富的方案(实时状态资源 + 引导式工作流提示词)差异化优势(审慎表述)

通过服务执行的每项编辑,都会恰好成为一个带有命名的撤销步骤 (app.transaction)——你可以观察 Agent 的操作,并通过 Ctrl-Z 逐步撤销其所做的任何更改。 我们确认,其他开源实时桥接服务并未在其全部功能中坚持这一做法(其中一个只为 57 个工具中的 3 个提供事务封装)。

了解何时更新

status 工具会报告服务版本,并且每天最多通过 PyPI 检查一次是否有更新版本。你的 Agent 能看到,所以你也能看到:

{ "backend": "live", "connected": true,
  "server": { "current": "0.2.0", "latest": "0.2.1", "update_available": true,
              "how": "pip install -U aseprite-live-mcp (uvx users: run uvx aseprite-live-mcp@latest once — uvx reuses its cached version otherwise)" } }

此信息还会通过 aseprite://update 资源、stderr 中的一行日志,以及 MCP serverInfo 握手中的实际版本呈现。使用 ASEPRITE_MCP_NO_UPDATE_CHECK=1 禁用(在 CI 中会自动禁用)。不收集遥测数据——检查只会通过 HTTP GET 请求读取 PyPI 的公开 JSON;不会发送任何关于你、你的机器或你的美术作品的信息。

工具(139)

每个工具都有类型和注解(readOnlyHint/destructiveHint/idempotentHint/openWorldHint);如果会修改内容,则会通过带有名称的 app.transaction 封装,因此在编辑器中每次编辑都恰好对应一个带标签的撤销步骤。

检查与元数据(6)
  • status — 报告后端运行状况、本服务的版本,以及是否有更新版本。
  • get_sprite_info — 获取当前精灵的尺寸、颜色模式,以及图层 / 帧 / 标签列表。
  • get_pixel — 读取 (x, y) 处合成后的单个像素(所有图层),格式为 #rrggbbaa。
  • set_sprite_metadata — 为精灵添加带类型的键值元数据(Aseprite 的 Properties 系统——直接存储在 .aseprite 文件中)。
  • get_sprite_metadata — 读取精灵的带类型键值元数据(Properties)。
  • get_pixels — 以 #rrggbbaa 字符串网格的形式读取合成后的像素区域——为 AI 提供反馈循环,让它了解“当前画布是什么样”。
文档与会话(5) - **`open_sprite`** — 打开精灵文件并将其设为活动文档;返回文件名、尺寸以及帧数和图层数。 - **`save_sprite`** — 将活动精灵保存到磁盘:若提供 ``path``,则保存到该路径(另存为;文档的文件名也会随之更新);否则保存到其自身文件名。若精灵尚未命名且未提供 ``path``,则报错。 - **`close_sprite`** — 关闭活动精灵。 - **`set_active_sprite`** — 仅限实时编辑器:按完全匹配的文件名或基本名(例如 “turret.aseprite”)将某个已打开的文档设为活动文档。 - **`list_sprites`** — 仅限实时编辑器:列出所有已打开的文档——文件名(或 “(unsaved)”)、尺寸、帧数和图层数、未保存更改标记,以及哪个文档处于活动状态。
画布 (3)
  • create_sprite — 创建新精灵。
  • expand_canvas — 按每一侧扩展(或使用负值缩小)画布,但不缩放内容——现有像素相对于旧原点的位置保持不变。
  • import_spritesheet — 将精灵表 PNG 切分为动画帧:按给定帧尺寸逐行读取单元格,放入新的 “imported” 图层,并根据需要添加帧。
图层与组 (14)
  • add_layer — 在图层堆栈顶部添加一个新的空图层(可选择命名)。
  • add_group — 添加图层组。
  • move_layer_to_group — 将图层移入图层组。
  • list_layers — 列出完整图层树,按堆栈从顶到底排序:名称、路径、类型(image/group/tilemap)、可见性和不透明度;包括嵌套在组中的图层(get_sprite_info 仅列出顶层图层)。
  • delete_layer — 删除指定名称的图层。
  • rename_layer — 重命名图层。
  • set_layer_visibility — 显示或隐藏图层。
  • set_layer_opacity — 设置图层的不透明度(0-255)。
  • flatten_sprite — 将所有图层合并为一个图层。
  • set_layer_blend_mode — 设置图层的混合模式。
  • duplicate_layer — 在原图层上方复制该图层(包括其 cel)。
  • merge_layer_down — 将图层合并到正下方的图层中。
  • move_layer — 调整图层在堆栈中的顺序。
  • import_image_as_layer — 将外部图像文件(PNG 等)以 (x, y) 为位置导入为新图层——用于概念美术导入的参考/描摹图层。
帧 (8)
  • add_frame — 在末尾追加一个新的空帧。
  • duplicate_frame — 复制 number 帧(从 1 开始计数)。
  • delete_frame — 删除 number 帧(从 1 开始计数)。
  • set_frame_duration — 设置 number 帧的持续时间(毫秒)。
  • add_frames — 在一个撤销步骤中追加 count 个空帧。
  • set_frame_durations — 将 [from_frame..to_frame] 中的每一帧设为 ms 毫秒。
  • reverse_frames — 反转帧顺序(包括所有图层上的 cel 及其持续时间)——默认处理整个精灵,也可处理包含起止帧的 [from_frame..to_frame] 范围。
  • set_onion_skin — 配置编辑器的洋葱皮视图:开启/关闭、两个方向上的残影数量,以及残影是否限制在当前标签内。
Cel (3)
  • clear_cel — 清空指定图层和帧上的 cel(设为透明)。
  • set_cel_position — 将 cel 的左上角原点移动到 (x, y)。
  • set_cel_opacity — 设置 cel 的不透明度(0-255)。
绘图 (10) - **`draw_pixels`** — 设置单个像素:``pixels`` 是一个列表,包含 ``{"x": int, "y": int, "color": "#rrggbb[aa]"}``。 - **`draw_polyline`** — 沿 ``points`` 中的点(按顺序排列的 [x, y] 对)绘制相连的线段;``close=True`` 会将最后一个点与第一个点相连。 - **`draw_rectangle`** — 在当前图层和帧上绘制矩形。 - **`draw_line`** — 绘制一条从 (x1,y1) 到 (x2,y2) 的 1px 线段。 - **`draw_circle`** — 绘制一个以 (center_x, center_y) 为圆心的圆。 - **`fill_area`** — 对 (x, y) 处颜色相同的连通区域进行泛洪填充。 - **`draw_ellipse`** — 绘制一个以 (center_x, center_y) 为中心、x/y 半径各自独立的椭圆。 - **`draw_gradient`** — 使用从 ``color1`` 到 ``color2`` 的线性渐变填充矩形。 - **`apply_dither`** — 使用均匀的有序(Bayer 4x4)抖动混合 ``color1`` 和 ``color2``,填充矩形。 - **`add_outline`** — 在当前 cel 的不透明像素周围添加 1px 的 ``color`` 描边,使其在复杂背景上更易辨认。
调色板(12)
  • get_palette — 以 #rrggbbaa 十六进制字符串的形式返回当前精灵的调色板。
  • set_palette_color — 将调色板的 index 项设为 color(#rrggbb 或 #rrggbbaa)。
  • add_palette_color — 将 color 追加到调色板,并返回其新索引。
  • set_palette — 使用 colors(#rrggbb/#rrggbbaa 列表)替换整个调色板。
  • apply_preset_palette — 将调色板替换为内置预设:gameboy | pico8 | cga。
  • generate_color_ramp — 根据 base_color 生成从深到浅的明暗色阶,并按顺序追加到调色板末尾,供 palette_ramp_walk 使用。
  • extract_palette_from_image — 从外部图像文件提取调色板(中位数切分),并默认将其设为当前精灵的调色板——这是从概念设计到锁定调色板的步骤。
  • sort_palette — 按 luminance(默认)、hue 或 saturation 对调色板色块重新排序。
  • palette_from_sprite — 根据精灵的实际像素生成调色板(Aseprite 的颜色量化)——与 quantize_to_palette 的作用相反。
  • load_palette — 从调色板文件(.gpl、.pal、.ase、.png 色带——Aseprite 能读取的任何格式)替换精灵的调色板。
  • save_palette — 将精灵的调色板写入文件(.gpl、.pal、.png——由扩展名决定)。
  • apply_bundled_palette — 按资源 ID 应用 Aseprite 自带扩展调色板之一,例如 DB16、DB32、ARQ4、EDG16(是否可用取决于已安装的调色板扩展)。
颜色(4)
  • replace_color — 在当前 cel 中,将所有匹配 from_color 的像素(在 tolerance 范围内,该值表示 0-255 的 RGB 距离)替换为 to_color;除非 to_color 自带 Alpha 值,否则保留每个像素原有的 Alpha 值。
  • quantize_to_palette — 将当前 cel 中每个不透明像素转换为精灵调色板中与之最接近的颜色(保留 Alpha 值)——在导入或着色后保持调色板规范。
  • adjust_hsl — 在 HSL 空间调整当前 cel 的颜色:hue_shift 为角度(-360..360),saturation 为倍率(1.0 表示不变),lightness 为增量(-1..1)。
  • get_color_stats — 返回合成精灵的颜色直方图:不重复的不透明颜色数量、不透明像素总数,以及使用频率最高的 top 种颜色及其计数——用于美术 QA 流程中的调色板漂移检查。
着色(2)
  • apply_shading — 受调色板约束的着色:朝光源方向提亮,背光方向变暗,并将每个像素映射为最接近的调色板颜色。
  • palette_ramp_walk — 按光照方向沿已排序的调色板向更亮或更暗的方向移动 ±N 个索引来着色,而不是映射到亮度最接近的颜色——这样可以遵循手动排序的明暗色阶。
滤镜(5) - **`adjust_brightness_contrast`** — 调整当前 cel 的亮度和对比度,范围均为 -100..100(0 = 不变)。 - **`invert_colors`** — 反转当前 cel 的 RGB(不影响 alpha)。 - **`desaturate`** — 将当前 cel 转换为灰度(Rec. 601 亮度),保留 alpha。 - **`box_blur`** — 使用 alpha 加权方框核模糊当前 cel。 - **`sharpen`** — 锐化当前 cel(基于 3x3 邻域的反遮罩)。
印章绘制 (1)
  • paint_with_stamp — 在 points 中的每个 [x, y] 位置盖上图像印章(点表示印章中心)。
等距 (4)
  • draw_iso_box — 绘制一个 2:1 等距盒体。
  • draw_iso_cylinder — 绘制一个垂直等距圆柱体(储罐/筒仓/烟囱):包含顶部椭圆、阴影主体和前沿,并根据 color 自动添加阴影。
  • fill_polygon — 根据 points(按顺序排列的 [x, y] 对列表)对任意多边形进行扫描线填充。
  • iso_recessed_panel — 在等距表面绘制一个内凹的对接插座/端口——以明亮的受光边缘框住暗色内凹部分。
选区 (8)
  • select_rectangle — 设置矩形选区。
  • select_all — 选择整个画布。
  • deselect — 清除当前选区。
  • select_ellipse — 选择给定矩形内切的椭圆。
  • select_by_color — 选择所有与 color 匹配的像素(合成后的颜色,各通道容差为 0-255)——全局魔棒。
  • invert_selection — 根据画布边界反转当前选区。
  • get_selection — 报告是否存在选区及其边界矩形。
  • erase_area — 将像素擦除为透明。
变换 (6)
  • flip_sprite — 水平或垂直翻转整个精灵图。
  • resize_sprite — 将整个精灵图缩放到新的像素尺寸。
  • crop_sprite — 将精灵图裁剪到给定矩形。
  • rotate_sprite — 将整个精灵图顺时针旋转 90、180 或 270 度(无损)。
  • autocrop_sprite — 修剪透明边框:将画布缩小至所有图层和帧中可见内容的并集(Sprite > Trim)。
  • set_color_mode — 在 rgb | gray | indexed 色彩模式之间转换精灵图。
切片 (5)
  • create_slice — 在给定矩形处创建一个命名切片(图集区域)。
  • set_slice_pivot — 设置切片的轴心点,单位为像素,相对于切片左上角。
  • set_slice_center — 设置切片的 9-patch 可拉伸中心矩形(相对于切片)。
  • list_slices — 列出所有切片及其边界、轴心点和 9-patch 中心。
  • delete_slice — 删除指定名称的切片。
标签 (7)
  • create_tag — 创建名为 name 的动画标签,范围为第 from_frame..to_frame 帧(从 1 开始)。
  • delete_tag — 删除名为 name 的动画标签。
  • list_tags — 列出动画标签及其帧范围。
  • rename_tag — 将动画标签 old_name 重命名为 new_name。
  • set_tag_color — 设置标签 name 的时间轴标签颜色(#rrggbb 或 #rrggbbaa)。
  • set_tag_range — 将标签 name 的范围设为第 from_frame..to_frame 帧(从 1 开始,包含首尾;根据精灵图的帧数进行验证)。
  • set_tag_direction — 设置标签 name 的播放方向:forward | reverse | pingpong | pingpong_reverse。
瓦片地图 (6) - **`create_tilemap_layer`** — 在 tile_width x tile_height 网格上创建一个拥有独立 tileset 的 tilemap 图层。 - **`add_tile`** — 向 tilemap 图层的 tileset 追加一个空白 tile;返回新 tile 的索引和 tileset 大小。 - **`draw_on_tile`** — 在 tilemap 图层 tileset 的一个 tile 上设置像素。 - **`set_tiles`** — 在 tilemap 图层的 cel 上放置 tile 引用。 - **`get_tilemap_info`** — 读取 tilemap 图层信息:tile 大小、tileset 长度,以及 cel 的网格大小、像素位置和 tile 索引网格(``tiles`` 按行列排列,已去除翻转标记;上限为 64x64,并设置 ``truncated``)。 - **`export_tileset`** — 将 tilemap 图层的 tileset 导出为水平 PNG 条带(如果提供 ``data_path``,还会导出 Aseprite JSON 图集)。
动画(5)
  • tween_frames — 在 from_frame 和 to_frame 之间插入 count 个中间帧,对 cel 的位置进行插值(对起始 cel 的图像进行运动补间)。
  • tween_cel_opacity — 在 [from_frame..to_frame] 范围内淡入或淡出图层的 cels:使用所选缓动方式,将不透明度从 from_opacity 插值到 to_opacity(0-255)。
  • smear_frame — 添加一个运动模糊帧,混合 from_frame 和 to_frame:重叠像素取平均值,仅出现在单帧中的区域以半透明度残影呈现——这是像素内容的拖影效果。
  • frame_diff — 对两个合成帧进行逐像素精确比较:返回变化像素数量及比例、变化边界框,以及两帧是否相同。
  • render_onion_composite — 写入 frame 的 PNG,将最多 prev 个较早帧以红色残影显示,将最多 next 个较晚帧以蓝色残影显示(遵循 Aseprite 的洋葱皮惯例),并采用指定的残影 opacity——以便在一张图像中查看运动轨迹。
导出(4)
  • export_sprite — 将当前活动精灵导出到文件;格式由 out_path 扩展名决定(.png、.gif 等)。
  • export_spritesheet — 将所有帧打包为一张精灵图(可选将 JSON 图集写入 data_path)。
  • export_layers — 将每个图像图层(递归处理组)分别导出为 out_dir 中的 PNG,文件名为 <sanitized-layer-name>.png。
  • export_tags — 将每个动画标签的帧范围分别导出为 out_dir 中的文件:动画 <tag-name>.gif(format="gif",默认)或水平 <tag-name>.png 条带(format="png")。
Unity 导出(2)
  • export_unity_sprite — 导出水平精灵图,并在其旁写入 Unity .meta,预先切分为命名的 Multiple 模式精灵(每帧一个)——一步完成,无需手动使用 Sprite Editor。
  • export_unity_slices — 将精灵导出为单张 PNG,并写入包含多个 Multiple 模式精灵的 Unity .meta(每个命名切片对应一个精灵),每个精灵均保留该切片的轴心点——这样,带切片布局的图集导入 Unity 后即可完成切片并设置轴心点。
美术 QA(2)
  • measure_padding — 测量内容周围透明的“贴纸”边距:内容边界框、各侧边距(左/右/上/下)、填充率和不透明颜色种类数。
  • qa_sweep — 根据项目规范检查当前活动精灵,并返回每项检查的通过/失败结果。
批处理(整个文件夹)(3)
  • batch_export — 将 folder 中每个 .aseprite 的第一帧导出为图像,可选按 scale 整数倍放大。
  • batch_resize — 调整 folder 中每个 .aseprite 的大小(第一帧,使用最近邻插值),并将图像写入 out_dir。
  • batch_apply_palette — 将 folder 中每个 .aseprite 的颜色锁定到调色板:将每个精灵(第一帧,保留 alpha)映射到调色板,并将图像导出到 out_dir。
撤销 / 重做(2) - **`undo`** — 撤销当前精灵图上的上一次编辑(实时编辑器)。 - **`redo`** — 重做上一次撤销的编辑(实时编辑器)。
实时编辑器(交互式)(11)
  • get_editor_state — 仅限实时编辑器:获取当前缩放、滚动位置,以及鼠标所在的精灵图像素位置,让 Agent 知道艺术家正在查看什么。
  • set_editor_view — 仅限实时编辑器:设置视口缩放(1.0 = 100%)和/或滚动位置,例如,放大即将编辑的区域,让艺术家可以观看。
  • set_symmetry — 仅限实时编辑器:设置镜像绘制对称模式;mode 可以是 none、horizontal(沿垂直轴镜像)、vertical 或 both;还可以选择放置对称轴线。
  • ask_point — 仅限实时编辑器:请求艺术家在画布上单击一个点(轴心、锚点、绘制原点)。
  • get_asked_point — 轮询 ask_point 的结果:等待时 done 为 false,之后返回单击位置的 x/y(如果艺术家按下 Esc,则返回 cancelled)。
  • cancel_ask_point — 撤销待处理的 ask_point 请求(例如,艺术家暂时离开了,你要继续进行其他操作)。
  • show_choice_dialog — 仅限实时编辑器:在 Aseprite 中弹出一个小对话框,显示消息并提供最多 4 个选项按钮(例如,批准/重做)。
  • get_dialog_choice — 轮询 show_choice_dialog 的结果:对话框打开时 done 为 false,之后返回所选按钮的文本。
  • watch_changes — 仅限实时编辑器:开始统计艺术家对当前精灵图所做的编辑(通过 Sprite.events)。
  • get_watched_changes — 轮询由 watch_changes 开始的更改计数器(reset=True 会在读取后将其清零)。
  • stop_watching_changes — 移除 watch_changes 监听器。
高级(1)
  • run_lua — 在 Aseprite 中运行任意 Lua 并返回结果(高级逃生通道,相当于在本地执行代码)。

资源

无需调用工具即可读取编辑器状态:

  • aseprite://sprite/active — 当前文档的尺寸、颜色模式、图层/帧/标签名称
  • aseprite://palette/active — 当前调色板的十六进制颜色值
  • aseprite://docs — 所有打开的文档,包括未保存/未命名的标签页(实时)
  • aseprite://qa/last — 最近一次 qa_sweep/measure_padding 的结果
  • aseprite://export/last — 最近一次 Unity 导出的结果(写入的文件 + 精灵清单)
  • aseprite://update — 此服务的版本 + 是否存在更新的版本

提示词(引导式工作流)

通过一次调用串联多个工具,完成艺术创作任务:

  • unity_qa_gate — 运行可交付版本的 QA 检查,然后导出 Unity 图集 + .meta
  • iso_building_to_spec — 根据占地规格构建 2:1 等距建筑
  • shade_along_ramp — 沿着手动排序的调色板色阶为精灵图添加阴影
  • autoslice_to_unity — 将多帧精灵图转换为可导入 Unity 的图集 + 预切片 .meta
  • concept_to_placeholder — 将外部概念图转换为边距正确、颜色符合调色板的占位图
  • tileset_and_map — 根据地形规格制作图块集、布局地图并导出图块条
  • live_review_loop — 等待艺术家完成润色,重新执行 QA,并在编辑器中询问是否可以交付

局限性(如实说明)

  • 无头调用会启动独立的 Aseprite 进程——编辑器会话状态(选区、视图、对称设置)不会在不同的无头调用之间保留。像素、图层、帧、调色板、瓦片地图、元数据都会保留(它们都在文件中)。
  • 交互式工具需要运行中的编辑器——在 headless 模式下,对话框、点选、监视和视口控制都会干净地报错。
  • 动画 .gif 导出仅支持无头模式。 在运行中的编辑器中保存 .gif 会打开 Aseprite 的 GIF 选项对话框,在关闭对话框前,桥接程序会一直被阻塞。在运行中的编辑器里,请使用 export_spritesheet 导出条带图,或导出逐帧 PNG;本 README 中的动画 GIF 都是从相同文件以无头模式导出的。
  • Windows 是主要的开发平台。 CI 会在 Linux/macOS/Windows 上运行单元测试和线路验证测试套件,但 CI 没有 Aseprite 二进制文件——所有涉及真实 Aseprite 的操作(无头批处理或运行中的桥接程序)都在 Windows 上手动测试。请将 mac/linux 视为预计可用,而非已验证可用。
  • run_lua 按设计会执行本地代码(这是应急出口)。中继仅绑定到 127.0.0.1。请阅读 SECURITY.md。
  • 不生成生成式艺术。 此服务使用确定性图元绘制指定内容;审美由艺术家决定。

验证功能

python tests/smoke_headless.py 会针对一个临时精灵图,在进程内调用每个工具(以及资源和提示词)。python -m pytest 会运行单元测试套件,以及线路验证测试;后者通过真实的 MCP 客户端会话测试结构化输出——这正是用户实际接触的边界(请先运行 pip install -e ".[dev]")。README 中的工具列表由代码生成(python scripts/gen_docs.py),如果列表出现偏差,CI 会失败。

更新日志与发行版

请参阅 CHANGELOG.md——每个发行版也会作为 GitHub Release 发布,并附上相同的说明。版本遵循 semver(1.0 之前:次版本号递增可能会改变工具行为,修订版本号递增则用于修复问题)。

关于

由 Kyle Ocheltree(OakTree Games)独自开发,用于真实的生产流水线——Unity 导出、填充 QA 和等距视角工具,都是因为等距视角工厂游戏 Cosmic Scale 需要这些功能而开发的。采用 AI 原生工作流开发:AI 协助编写代码;每个工具都会经过审查、针对真实编辑器进行测试,并经过审慎发布。

贡献

欢迎提交问题和 PR——请参阅 CONTRIBUTING.md。提交前请运行 ruff check .、pytest 和 python tests/smoke_headless.py。

许可证

MIT——请参阅 LICENSE。© 2026 Kyle Ocheltree / OakTree Games。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。