Aseprite MCP Tools について
Aseprite MCP Toolsは、Asepriteでピクセルアートやアニメーションスプライトを作るAIアシスタント向けのPython製MCPサーバーです。描画、アニメーション、パレット、書き出し、ビジュアル分析に対応し、Luaを直接実行する手段も備えています。
主な機能
- 01キャンバス、レイヤー、ピクセル描画
- 02フレーム、セル、アニメーション編集
- 03パレット、グラデーション、ディザリング
- 04PNG、GIF、スプライトシートの入出力
- 05プレビュー、フレーム差分、品質検査
- 06Luaスクリプトの直接実行
活用シーン
- 01ゲーム用キャラクターや背景のピクセルアート制作
- 02アニメーションのフレーム列の作成と確認
- 03レトロパレットや陰影ランプの適用
- 04スプライトシートやアニメーションの書き出し
MCP 対応
MCPサーバーとして、描画、レイヤー、アニメーション、パレット、入出力、分析など、Asepriteを操作するツールをAIアシスタントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Aseprite MCP ツール
AI アシスタントが Aseprite を自在に操作し、ピクセルアートやアニメーションスプライトを作成できる Python MCP サーバーです。
18 カテゴリにわたる 123 個のツール — キャンバス、描画、レイヤー、アニメーション、パレット、エフェクト、スライス、タイルマップ、エクスポート、視覚的なフィードバック/分析ツール、そして Lua を直接実行できるエスケープハッチを備えています。このツールセットは、LLM が基本的な図形を描くだけでなく、質の高いピクセルアートを作成するために必要なものをすべて提供できるよう設計されています。色相をずらしたシェーディング用の色階調、順序付きディザリング、輪郭線、量子化機能付きのレトロなパレットプリセット、オニオンスキン表示、フレーム差分、アニメーション作業用の境界チェックやリントチェックなどを備えています。
例
居心地のよい部屋(Opus 5.5)
![]() |
| 夕暮れのアイソメトリックな寝室で、女の子が宿題をする様子をローファイ風のループアニメーションにしました。 128×128、16 フレームのループ、4×でエクスポート。 |
剣士:Fable 5 と Opus 5.5 の比較
| Fable 5 | Opus 5.5 |
|---|---|
![]() | ![]() |
![]() | ![]() |
| ベンチマーク用の剣士と、構えから振り抜きまでの斬撃。 48×48、4フレームの斬撃。 | Opus 5.5 は Fable 5 のスプライトを評価し、同じサイズで描き直しました。 48×48、8フレームの斬撃。 |
Fable 5 のタスクは、Lj Miranda による Draw Me a Swordsman のベンチマークを再現したものです。その研究結果が、このサーバーのツールセット拡張の着想となりました。
スライム(Opus 5.5)
![]() |
| 緑色のスライム。 32×32の静止画、8×でエクスポート。 |
![]() |
| スクワッシュ&ストレッチを使って右へ跳ねるスライム。 43フレームのアニメーション、4×でエクスポート。 |
剣士対スライム(Opus 5.5)
![]() |
| 剣士がスライムを斬りつけます。スライムは赤く点滅して体力が減り、ダメージ数値が飛び出します。 80×58、15フレーム、5×でエクスポート。 |
関連プロジェクト
Aseprite Live — AI エージェントが Aseprite でピクセルアートを描く様子を、ブラウザー上でリアルタイムに見られます
ツールのカテゴリ
| カテゴリ | ツール数 | 説明 |
|---|---|---|
| キャンバス | 7 | スプライトの作成、レイヤーやフレームの管理、アクティブ状態の設定 |
| 描画 | 16 | ピクセル、テキスト行、線、長方形、円、楕円、多角形、パス、塗りつぶし、グラデーション、アイソメトリックボックス |
| テキスト | 3 | ビットマップのスプライトシートまたは TrueType フォントを使ったテキストの描画と計測 |
| レイヤー | 7 | 削除、名前変更、複製、並べ替え、ブレンドモード、統合、フラット化 |
| 選択範囲と領域 | 4 | 長方形の領域や色の移動、コピー、消去 |
| エフェクト | 12 | 輪郭線、色の置換、HSL 調整、組織的ディザリング、ネイティブの Aseprite フィルター |
| アニメーション | 24 | フレーム、セル、タグ、イージング付きのトゥイーン、伝播 |
| パレット | 8 | パレットの取得・設定、レトロなプリセット、カラーレamp、量子化、カラーモード |
| 変形 | 4 | 反転、回転、サイズ変更、切り抜き |
| スライス | 5 | 名前付き領域、9パッチの中心、ピボットポイント |
| タイルマップ | 5 | タイルマップレイヤー、タイルセットの編集、タイルの配置 |
| エクスポートとインポート | 8 | PNG、GIF、スプライトシート、レイヤー別・タグ別エクスポート、背景上のプレビュー、画像のインポート |
| 検査 | 6 | ピクセル(1つのレイヤー、表示中の合成画像、またはテキスト行形式)の読み取りとスプライトのメタデータ |
| 分析と視覚的フィードバック | 6 | モデルが確認できるスプライトプレビュー、オニオンスキンのレンダリング、フレーム差分、境界、リント、色の統計 |
| 品質 | 4 | アニメーションの一貫性の検証とサニタイズ |
| シーン | 1 | スプライトファイル間でのレイヤーのコピー |
| プレビューとガイド | 3 | ローカル HTTP プレビューサーバー、ワークフローガイド |
| スクリプト | 1 | 上記で対応していないあらゆる操作に使える、Lua を直接実行する手段 |
キャンバス
| ツール | 説明 |
|---|---|
create_canvas | 指定した寸法で新しいスプライトを作成します |
add_layer | 新しいレイヤーを追加します。名前付きグループ内にも追加できます |
add_group | 新しいグループレイヤーを追加します。ネストも可能です |
add_frame | 新しいフレームを追加します |
set_frame | アクティブなフレームを設定します |
set_frame_duration | 1つのフレームの長さをミリ秒単位で設定します |
set_layer | アクティブなレイヤーを設定します。必要に応じて作成することもできます |
描画
すべての _at バリエーションは特定のレイヤー/フレームを対象とし、必要に応じてセルを作成できます。座標はスプライト全体を基準とします。
draw_rows(filename="mug.aseprite", layer_name="mug", frame_index=1, x=4, y=2,
rows=[".WWWW..",
".WWWWKK",
".WWWW.K",
"..WW.K."],
legend={"W": "#F4F4F4", "K": "#8B5A2B"}, outline="#1A1C2C")
.(または凡例にない文字)はピクセルを変更せず、read_rows は同じ形式でピクセルを返します。そのため、編集時は読み取った内容の数文字を変更して、再度描画できます。
| ツール | 説明 |
|---|---|
draw_pixels | ピクセルごとの色を指定して、個々のピクセルを描画します |
draw_pixels_at | 特定のレイヤー/フレームにピクセルを描画します |
draw_line / draw_line_at | 太さを指定した線 |
draw_rectangle / draw_rectangle_at | 輪郭線のみ、または塗りつぶしの長方形 |
draw_circle / draw_circle_at | 輪郭線のみ、または塗りつぶしの円 |
draw_ellipse_at | x/y の半径を個別に指定した、輪郭線のみ、または塗りつぶしの楕円 |
draw_polygon | 点のリストから輪郭線のみ、または塗りつぶしの多角形を描画します |
draw_path | 点のリストに沿って、指定した太さの折れ線を描画します |
fill_area / fill_area_at | バケツツールによる塗りつぶし |
apply_gradient_rect | 長方形を滑らかな線形グラデーションで塗りつぶします |
draw_rows | 文字の行と色の凡例を使ってピクセルを描画します。ASCII アートのように扱え、1px の輪郭線も任意で付けられます。顔、手、動物、取っ手など、手作業で選んだディテールを配置するのに適したコンパクトな方法です |
draw_iso_box | 家具や小道具向けに、各面の色を指定した、輪郭が滑らかな 2:1 のアイソメトリックボックスを描画します |
テキスト
Aseprite の Lua API にはテキスト描画機能がないため、サーバー上でグリフをラスタライズし、スプライトに合成します。サポートされているフォントバックエンドは 2 種類です。ビットマップスプライトシートフォント(ピクセルアートに最適です。グリフはすでにピクセルで構成されており、size は整数倍で拡大します)と、アンチエイリアスを指定しない限りアンチエイリアスなしでレンダリングされる TrueType の .ttf/.otf ファイルです。
フォントは ~/.aseprite-mcp/fonts から検出されます。ビットマップフォントは font.json とシート PNG を含むディレクトリで、TrueType フォントはフォントファイルのみです。インストール済みのシステムフォントも一覧に表示されます。font には直接パスを指定することもできます。
| ツール | 説明 |
|---|---|
list_text_fonts | draw_text で利用できるビットマップフォントと TrueType フォントを一覧表示します |
measure_text | 幅、高さ、送り幅、ベースラインの範囲を取得します。描画し直して確認することなく、パネルのサイズを決めたりラベルを中央揃えしたりできます |
draw_text | アンカー、疑似ボールド、アウトライン、ドロップシャドウ、文字間隔を指定してテキストを描画します |
レイアウトがテキストに依存する場合は、まず measure_text を呼び出してください。draw_text が使用するものと同じメトリクスが返されるため、ラベルの中央揃えやプレートのサイズ調整を 1 回で行えます。
measure_text(text="MODERATOR", font="minecraft", size=2, bold=1)
-> width=115 height=15 advance_width=117 above_baseline=14 below_baseline=1 left_bearing=0
draw_text(filename="badge.aseprite", text="MODERATOR", x=64, y=17,
font="minecraft", size=2, anchor="baseline", bold=1,
color="#FFFFFF", shadow_color="#14237A")
アンカーは topleft/top/topright、left/center/right、bottomleft/bottom/bottomright に加え、複数のラベルを同じベースラインに揃える baselineleft/baseline/baselineright です。アウトラインとシャドウはスタンプのサイズを大きくしますが、グリフの位置は移動しません。
font.json
{
"name": "my-font",
"letter_gap": 1,
"space_width": 3,
"sheets": [{
"file": "sheet.png",
"cell_w": 8, "cell_h": 8,
"ascent": 7,
"chars": [" !\"#$%&'()*+,-./", "0123456789:;<=>?"]
}],
"overrides": {
"86": {"ascent": 7, "rows": ["#...#", "#...#", ".#.#.", "..#.."]}
}
}
各シートには独自の ascent が設定されているため、セルサイズが異なるシート同士でもベースラインが揃います。これにより、コンパクトな ASCII シートと高さのあるアクセント付き文字のシートを組み合わせて、1 つのテキスト列にできます。origin はシートに余白がある場合にセルグリッドをずらします。ink_rule: "dark" は、可変幅グリフのボックスを区切るために不透明な白背景を使用するシートを読み込みます。また、advance: "box" はインク領域ではなくボックスから送り幅を取得します。overrides は個々のグリフを手描きの行に置き換えます。シートに含まれるグリフが中央からずれていたり、行に収まらないほど高かったりする場合に便利です。
レイヤー
| ツール | 説明 |
|---|---|
delete_layer | 名前を指定してレイヤーを削除します |
rename_layer | レイヤーの名前を変更します |
duplicate_layer | すべてのセル、レイヤーの不透明度、ブレンドモードを含めてレイヤーを複製します。グループ内への複製も指定できます |
reorder_layer | スタック内の位置にレイヤーを移動します |
set_layer_blend_mode | ブレンドモードを設定します(乗算、スクリーン、オーバーレイなど、19 種類) |
merge_layer_down | レイヤーを 1 つ下のレイヤーに結合します |
flatten_sprite | すべてのレイヤーを 1 つに統合します |
選択範囲と領域
| ツール | 説明 |
|---|---|
move_region | ピクセルの矩形範囲を切り取り、別の場所に貼り付けます |
copy_region | 矩形範囲を別の位置、レイヤー、またはフレームにコピーします |
erase_region | 矩形範囲を透明にします |
erase_color | マジック消しゴム:許容値を指定して、特定の色のピクセルをすべて透明にします |
効果
ピクセルアート向けのツールボックスです。輪郭をきれいに整え、パレットに配慮した色の混合や、さまざまな陰影を付けられます。
| ツール | 説明 |
|---|---|
outline_cel | 不透明なすべてのピクセルの周囲、または領域内の図形の周囲だけに1pxの輪郭を追加します |
replace_color | アルファ値を維持しながら、ある色を別の色に置き換えます(許容値を指定できます) |
adjust_hsl | セルの色相・彩度・明度を変更します。パレットの置き換え、夜のシーン、影などに使えます |
apply_dither_gradient | Bayer 4×4の組織的ディザリングを使った2色のグラデーションです |
apply_dither_pattern | 指定した密度で2色を均一に混ぜるディザリングです |
ネイティブフィルターは、レイヤーとフレームに対してAseprite独自のエンジンコマンドを実行します。
| ツール | 説明 |
|---|---|
outline_native | 不透明なピクセルの周囲にAsepriteのOutlineコマンドを適用します |
adjust_hsl_native | Asepriteの色相/彩度/明度フィルターです |
adjust_brightness_contrast | 明るさ/コントラストフィルターです |
invert_colors | 色を反転します |
apply_convolution | 畳み込みフィルターです。ぼかし、シャープ化、エッジ、エンボスなどに対応します |
list_convolution_matrices | apply_convolutionで使える組み込みマトリックスを一覧表示します |
extract_palette | スプライトから最適なパレットを作成します(ネイティブの色量子化) |
アニメーション
| ツール | 説明 |
|---|---|
add_frames | 任意の表示時間を指定して、N個のフレームを追加します |
delete_frame | フレームを削除します |
set_frame_duration_all | すべてのフレームの表示時間を設定します |
duplicate_frame_range | フレーム範囲をN回複製します |
copy_frame / propagate_frame_to_range | フレームのすべてのセルをほかのフレームにコピーします |
create_cel / clear_cel / copy_cel | レイヤー/フレーム上のセルを管理します |
propagate_cels | 選択したレイヤーのセルをフレーム範囲全体にコピーします |
set_cel_position | セルをx,yに配置します |
set_cel_opacity | 1つのセルの不透明度を設定します |
offset_cel_positions | フレーム全体でセルを指定した差分だけ移動します |
tween_cel_positions | フレーム間で位置を線形補間します |
tween_cel_positions_eased | イージング(ease_in/out、smoothstep)を使って位置を補間します |
tween_cel_opacity_eased | イージングを使って不透明度を補間します |
tween_cel_scale_eased | アンカーを指定し、イージングを使って拡大縮小を補間します |
oscillate_cel_positions | 正弦波による動き(上下動、呼吸、ホバリング)を付けます |
set_tag / delete_tag | 方向(前進/逆再生/ピンポン)を指定してアニメーションタグを設定/削除します |
set_layer_visibility / set_layer_opacity | レイヤー単位の表示状態と不透明度を設定します |
set_onion_skin | オニオンスキンのUI設定を行います(一括処理についてはrender_onion_skinを参照してください) |
get_sprite_info | スプライトのメタデータ(サイズ、レイヤー、フレーム、表示時間、タグ)を取得します |
パレット
| ツール | 説明 |
|---|---|
get_palette | パレットを16進数カラーとして読み取ります |
set_palette | 16進数カラーのリストからパレットを設定します |
list_palette_presets | 組み込みのレトロパレットを一覧表示します |
apply_palette_preset | プリセットを適用します。gameboy、pico8、c64、cga、dawnbringer16、dawnbringer32、grayscale_4、monochromeに対応します |
generate_color_ramp | ベースカラーから、色相を変化させた暗色から明色への陰影ランプを作成します |
quantize_to_palette | すべてのピクセルを最も近いパレットカラーに合わせます |
remap_colors_in_cel_range | フレーム範囲全体で特定の色を置き換えます |
set_color_mode | RGB、グレースケール、インデックスカラーを相互に変換します |
変形
| ツール | 説明 |
|---|---|
flip_layer | セルを水平方向または垂直方向に反転します |
rotate_layer | セルを90/180/270°回転します |
resize_canvas | スプライトを新しい寸法に拡大縮小します |
crop_canvas | 四角形の範囲に切り抜きます |
スライス
| ツール | 説明 |
|---|---|
create_slice | 名前付きの長方形領域を作成します |
set_slice_center | 9パッチの伸縮可能な中央部分を設定します |
set_slice_pivot | ピボットポイントを設定します |
list_slices | 境界、中央、ピボットを含むすべてのスライスをJSON形式で一覧表示します |
delete_slice | スライスを削除します |
タイルマップ
| ツール | 説明 |
|---|---|
create_tilemap_layer | 独自のタイルセットとタイルグリッドを持つタイルマップレイヤーを追加します |
draw_on_tile | タイルセットのタイルにピクセルを描画します(新しいタイルは自動で追加されます) |
set_tiles | グリッド位置を指定してマップにタイルを配置します |
get_tile_at | グリッドセルを占めるタイルを読み取ります |
get_tilemap_info | タイルサイズ、タイル数、マップの寸法を JSON で取得します |
エクスポートとインポート
| ツール | 説明 |
|---|---|
export_sprite | PNG、GIF、JPG などにエクスポートします |
export_frame | 1 フレームを整数倍に拡大して PNG でエクスポートします(作業内容を見るには view_sprite を使います) |
export_spritesheet | スプライトシート(横方向/縦方向/行/列/パック)を、任意の JSON メタデータとタグごとのフィルタリング付きでエクスポートします |
export_layers | レイヤーごとに 1 つの PNG をエクスポートします |
export_tag | アニメーションタグを GIF または PNG シーケンスとしてエクスポートします |
export_animation | 全フレームまたは 1 つのタグを、拡大し、任意で単色背景を付けて GIF または PNG シーケンスとしてエクスポートします。スプライト自体は変更されません |
import_image_as_layer | PNG をレイヤーにインポートします(参照画像、事前作成したパーツ) |
copy_sprite | .aseprite ファイルを複製します |
インスペクション
| ツール | 説明 |
|---|---|
get_pixel_color | 1 ピクセルの RGBA 値を読み取ります |
get_pixels_rect | ピクセルの矩形領域を JSON として読み取ります |
get_composite_pixel / get_composite_rect | 1 ピクセルまたは矩形領域で表示されている内容(すべてのレイヤーを合成したもの)を読み取ります |
read_rows | 領域を文字の行と凡例で読み取ります。コンパクトな形式で、draw_rows に渡して描画できます |
get_sprite_info | スプライトのメタデータ(アニメーションにも記載) |
分析と視覚的なフィードバック
Aseprite の UI で人間のアーティストが得られる情報に相当する、バッチモードのツールです。
| ツール | 説明 |
|---|---|
view_sprite | フレームの画像を直接モデルに返します。拡大表示され、ピクセルグリッドと座標ルーラーが付くため、正確なピクセルを修正できます |
render_onion_skin | 隣接するフレームの半透明な残像を重ねてフレームをレンダリングします。Aseprite を開かずに動きの連続性を確認できます |
compare_frames | 2 つのフレームを比較します。必要に応じてレイヤーまたは領域を指定できます(足が動いたか?)。変更されたピクセル数、割合、バウンディングボックスを返します |
get_bounds | フレームごとに描画ピクセルのバウンディングボックスを取得します。必要に応じてレイヤーを指定できます。上昇と下降、地面のライン、キャンバスの端を測定できます |
lint_sprite | 座標付きで、切り離されたパーツ、単独のピクセル、孤立したピクセルを検出します |
get_color_stats | フレームのカラーヒストグラムを取得します。パレットのずれや、ほぼ同じ色を検出できます |
view_sprite は描画ループの目となるツールです。画像を MCP の画像コンテンツとして返すため、ファイルをエクスポートして開かなくても、モデルが作業内容を確認できます。また、ローカルファイルを読み取れないクライアントでも動作します。"3"、"1-4"、"1,3,6-8" でフレームを選び、layer_name でレイヤーを分離し、region="x,y,w,h" でルーラーをスプライト座標のままにして詳細を拡大できます。
品質
| ツール | 説明 |
|---|---|
ensure_layers_present | フレーム範囲全体で、レイヤーに不足しているセルを作成します |
validate_scene | 不足しているレイヤー/セルを JSON で報告します |
audit_animation | フレームの重なりと、レイヤーの範囲外の動作を監査します |
animation_sanitize | レイヤーの順序、カバレッジ、重なりを正規化します |
シーン
| ツール | 説明 |
|---|---|
copy_layers_between_sprites | ある .aseprite ファイルから別のファイルへ、名前でレイヤーをコピーします |
プレビューとガイド
| ツール | 説明 |
|---|---|
start_preview_server / stop_preview_server | ローカル HTTP 経由でエクスポートしたファイルを配信します |
animation_workflow_guide | アニメーションを上手に作成する方法を案内します。キーとなるポーズ、予備動作、スクワッシュとストレッチ、タイミング(character、idle、environment)を扱います |
クライアントが接続すると、サーバーはピクセルアートの簡潔なルール(シルエットを優先する、光の方向を 1 つにする、線をきれいに保つ、各工程を確認する)を MCP の instructions として送信します。そのため、モデルは何も呼び出さなくてもルールを確認できます。
スクリプト
| ツール | 説明 |
|---|---|
run_lua_script | バッチモードで任意の Aseprite Lua(API ドキュメント)を実行します。専用ツールで対応できない場合の最後の手段です。1 つのスクリプトで複数の操作をまとめて実行し、Aseprite の起動回数を減らせます。spr:saveAs(spr.filename) を呼び出し、結果を print() で出力することを忘れないでください。⚠️ ホスト上で制限のないコードを実行するため、信頼できるスクリプトのみを渡してください。 |
LLM におすすめのワークフロー
- まずパレットを計画する:素材(肌、鎧、刃)ごとに
generate_color_rampを使うか、レトロな見た目にするにはapply_palette_presetを使います。 - レイヤーごとに作成する:パーツを個別にアニメーション化・編集できるよう、背景/本体/装備/エフェクトに分けます。
- 大まかな形から細部へ進める:
draw_rectangle_at/draw_ellipse_at/fill_area_atでシルエットを作り、その後draw_rowsで調整します。 - 作業内容を確認する:各工程の後に
view_spriteを使い(拡大するにはregionを指定)、修正して繰り返します。get_color_statsでパレットを絞り込み、lint_spriteで不要なピクセルや孤立したピクセルを検出します。 - 意図を持って陰影を付ける:影のレイヤーには
adjust_hsl、色をなじませるにはapply_dither_gradient、見やすくするにはoutline_celを使います。 - セル用ツールでアニメーションを作成する:
propagate_celsの後にtween_cel_positions_eased/oscillate_cel_positionsを使います。view_sprite、compare_frames、get_boundsで確認し、export_animationまたはexport_tagで書き出します。
Docker の使い方
クイックスタート
Docker イメージをビルドして実行します:
docker build -t aseprite-mcp:latest .
docker run -it --rm aseprite-mcp:latest
または、用意されているビルドスクリプトを使います:
- Linux/macOS:
chmod +x build-docker.sh && ./build-docker.sh - Windows:
.\build-docker.ps1
Docker Compose の使用
# Production
docker-compose up aseprite-mcp
# Development mode
docker-compose --profile dev up aseprite-mcp-dev
Docker の詳細なセットアップ手順については、DOCKER.md を参照してください。
オプション:Steam 経由で Aseprite をインストールする
コンテナの起動時に SteamCMD 経由で Aseprite をインストールするには、Steam の認証情報を指定します:
# Create a .env with STEAM_USERNAME/STEAM_PASSWORD (and optional STEAM_GUARD_CODE)
# Then
docker run --rm -i --env-file .env aseprite-mcp:latest
インストールされている場合、バイナリは /opt/steamapps/common/Aseprite/aseprite に配置され、ASEPRITE_PATH が自動的に認識されます。
ローカルインストール
前提条件
- Python 3.13 以降
uvパッケージマネージャー- Aseprite(PATH にない場合は、
.envでASEPRITE_PATHを設定してください)
インストール:
{
"mcpServers": {
"aseprite": {
"command": "/opt/homebrew/bin/uv",
"args": [
"--directory",
"/path/to/repo",
"run",
"-m",
"aseprite_mcp"
]
}
}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。







