mcpField
A
Aseprite Live

Aseprite Live

ローカル
github.com/oaktreegamesメディア・デザイン813 週間前に更新

Aseprite Live について

Aseprite Liveは、起動中のAsepriteエディターまたはヘッドレスモードで使うMCPサーバーです。スプライト編集に加え、Unity向けエクスポート、アートQA、タイルマップ、エディター内操作に対応します。

主な機能

  1. 01ライブおよびヘッドレス編集
  2. 02Unity用スプライトシートと.metaの出力
  3. 03スプライトのアートQA
  4. 04アイソメトリック描画プリミティブ
  5. 05タイルマップ編集
  6. 06編集ごとの名前付き取り消し

活用シーン

  1. 01エージェントでスプライトを作成・編集
  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

Unity を第一に考えたゲーム開発向けツールセットで、AI エージェントが 起動中の Aseprite エディターで描画できます。編集ごとに名前付きの取り消しが記録されます。

Aseprite 向けのオープンソース Model Context Protocol サーバーです。 起動中のエディター(開いているすべてのドキュメント、未保存のタブ、エディター内のダイアログ、キャンバス上の点をあなたにクリックしてもらう操作も含む)を制御するほか、ディスク上のファイルに対してヘッドレス(aseprite --batch)で動作します。スライスごとのピボットを設定できる Unity スプライトシートと .meta のワンアクションエクスポート、プロジェクトの規約に沿ったアート QA チェック、アイソメトリック図形、タイルマップに対応し、さらに更新が必要になると知らせてくれるサーバーです。

実際の動作を見る

以下はすべて、MCP を通じて AI エージェントが 起動中の Aseprite キャンバスを操作している様子です。各ステップは名前付きの取り消しとして記録されます。

アイソメトリック機械の作成
アイソメトリック図形
アイソボックス → くぼんだポート → タンク → 輪郭
描画ツール一式
描画ツール一式
長方形 · ディザリンググラデーション · 楕円 · 円 · ディザリング · 輪郭
パレットのランプに沿ったシェーディング
ランプウォークシェーディング
ベタ塗り → 手作業で順序を決めたパレットに沿った立体的な塗り
タイルマップの編集
タイルマップ
タイルセットを1タイルずつ描画 → 行ごとにマップを配置
スタンプでの描画
スタンプでの描画
花を一度描く → 1回の取り消しで弧に沿って散布
Aseprite 内の Claude Bridge パネル
ブリッジパネル
ライブステータス、アクティビティログ、一時停止切り替え — Aseprite 内に表示

そして、ヘッドレスサーバーにはできないこと — エージェントがあなたにお願いする様子を、エディター内で確認できます(モックアップではなく、実際の画面キャプチャです)。

Aseprite 内に表示された MCP 駆動の承認ダイアログ

## 1 回のライブセッションで完成

以下の内容はすべて、起動中のエディター 1 つでの単一セッションから生まれました。スプライトを 5 つ作成して QA を行い、シートにまとめてスライスし、Unity 用にエクスポートしました。最後はエディター内の承認ダイアログで完了しました。.aseprite ソースは examples/showcase/ にあります。ファイルを開き、Ctrl-Z で制作過程をさかのぼってください。

組み立てたショーケースシート:アイソメトリック建物、タイルマップ、モーション QA レンダリング、ビーコンのパルスストリップ

アイソメトリックな製油所のブロックアウト
アイソメトリックのブロックアウト、QA 済み
面のポリゴン → くぼんだポート · ランプ + パレット固定のシェーディング · リベットを 1 回の取り消し操作でスタンプ · qa_sweep 4/4
ビーコンのパルスアニメーション
ビーコンのパルス
加算発光 · イージングを適用した tween_cel_opacity ループ · タグ付け + タイミング設定済み
ドローンのダッシュアニメーション
ドローンのダッシュ
tween_frames のスムーズステップ · smear_frame の軌跡 · frame_diff で端点を検証済み

QA ツールは飾りではありません。この制作中、frame_diff の変更バウンディングボックスが、目では見逃したモーションのトゥイーンを検出しました。すべてのセルが画像の原点分だけずれており、キャンバスの端でクリッピングされていたのです。1 回のトランザクションで修正し、同じ差分で再検証しました。

ドローンの飛行弧を合成したオニオンスキン
render_onion_composite — 前のフレームは赤、後のフレームは青で、弧全体を 1 枚の画像に表示

シートの 10 個のスライスは、1 回の操作で Unity に送られました。 examples/showcase/unity/ にはアトラス PNG と生成された .meta があり、10 個の Multiple モードのスプライト、Y 軸反転された矩形、すべてのピボットが書き込み済みです。

インストール

クローン不要で、コマンド 1 つです。

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

Python 3.10+ と Aseprite 1.3+ が必要です。ヘッドレスモードではこれだけです。ライブエディターには追加の手順が 1 つあります(以下を参照)。

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"
      }
    }
  }
}

一般的なインストール方法(Steam およびスタンドアロン)では、ASEPRITE_PATH を省略すると自動検出されます。

ソースから
git clone https://github.com/oaktreegames/aseprite-live-mcp
cd aseprite-live-mcp
pip install -e .

クイックスタート — ヘッドレス(2 分、エディター起動不要)

上記のとおり、"ASEPRITE_MCP_BACKEND": "headless" を指定してサーバーを追加します。ヘッドレスモードでは、ツールに操作対象の .aseprite を指定する file 引数があります。エージェントに status を実行させて接続を確認し、次を試してください。

「C:/art/coin.aseprite に 32×32 のスプライトを作成して金色の円を描き、coin.png としてエクスポートしてください。」

クイックスタート — ライブエディター(開いているキャンバスを操作)

ライブバックエンドは、起動中の Aseprite を編集し、編集ごとに 1 回の取り消しステップを作成します。ブリッジスクリプトとリレーはこのリポジトリに含まれており(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 を選び、確認されたらスクリプトを信頼します。パネルには 「Claude に接続済み」、ライブアクティビティ、Pause 切り替えボタンが表示されます。
  4. MCP 設定でバックエンドを live に切り替えます("ASEPRITE_MCP_BACKEND": "live")。

これでツールはアクティブなドキュメントを操作します。編集内容が表示されるのを確認し、Ctrl-Z を押すと編集を 1 つずつ取り消せます。仕組みについては docs/ARCHITECTURE.md をご覧ください。

依頼できること

  • 「32×32 のスプライトを作成し、赤い円を描いて、icon.png として書き出してください。」
  • 「machines.aseprite を、1 ユニットあたり 16 ピクセルの Unity スプライトシートとして書き出してください。」 → シートと、あらかじめスライスされた .meta を Unity プロジェクトに直接出力します。
  • 「このアトラスをスライスし、各スライスのピボットを設定して、ピボットを埋め込んだ状態で Unity に書き出してください。」
  • 「QA チェックを実行してください:サイズは 64×64、色数は 16 色以下、グリッドに整列し、ステッカー用の余白を 2px にしてください。」
  • 「1×1 の機械ベース用にアイソメトリックな箱を描き、正面にくぼんだポートを配置してください。」
  • 「16×16 のタイルマップレイヤーをセットアップし、草と土のタイルを描いて、10×6 の地面の帯を配置してください。」
  • 「書き出した素材を 1 枚のラベル付きシートにまとめ、各パーツをスライスしてピボットを設定し、Unity にアトラスを渡してください。」
  • 「エディターにダイアログを表示してください:承認またはやり直し。その後、アンカーポイントをクリックするまで待ってください。」
  • 「スプライトを見守りながら、私が手直しします。手を止めたら QA チェックをもう一度実行してください。」
  • 「フレーム 3 と 4 を比較してください — 腕は本当に動きましたか?」

このプロジェクトの位置づけ(率直な説明)

すでに優れた Aseprite MCP サーバーは存在します。このプロジェクトが最初ではありませんし、そう主張するつもりもありません。このプロジェクトが主張するのは、次の点です。そして、その主張には根拠があります。

機能現状このプロジェクト
描画/レイヤー/フレーム/パレット/選択範囲/書き出し、ディザリング、グラデーション、輪郭、フィルター、トゥイーン、タイルマップヘッドレス型の主要サーバー(diivi:約113個のツール、pixel-mcp、ext-sakamoro)と商用のライブサーバー(Aseprite MCP Pro、Godot を優先)で十分に対応済みです同等 — 厳選された、完全に型付けされた機能群
Unity へのワンアクション書き出し — スプライトシートと、スライスごとのピボットを組み込んだ .meta私たちが確認した他の Aseprite→Unity の方法はすべて、エンジン側で別途インポーターを使います。ピボットまで書き出せるものはありません差別化要素 ✅
アート品質チェック — プロジェクトの規約に照らした、透明なステッカー余白の測定を含みますスプライトのマージン/余白を一括チェックするサーバーは、ほかに見つかりませんでした差別化要素 ✅
アイソメトリック描画プリミティブ(2:1 の箱/円柱、自動の面シェーディング、凹んだパネル)調査した Aseprite MCP の中で、アイソメトリック描画プリミティブを備えているのはこれだけです差別化要素 ✅
エディター内での操作:Aseprite 内のダイアログ、アーティストへの質問による点の選択、アーティストによる編集の監視、対称描画とビューポート制御ライブ GUI サーバー(商用の Pro と、登場したばかりの OSS サーバーが 2 つ)は存在しますが、調査したものにエディター内ダイアログや人間が関与するツールはありません差別化要素 ✅
アップデート情報 — 新しいリリースがあることをサーバー自身が通知します私たちが調べた限り(2026-07-16 に確認)、セッションを通じて自身のアップデート状況を提示する MCP サーバーはほかにありません差別化要素 ✅
ライブタイルマップ編集ヘッドレス型の主要サーバーはディスク上のタイルマップを編集します。私たちが見つけたライブタイルマップ編集機能は、クローズドソースのものだけですオープンソースとしての強み ✅
MCP リソース+プロンプト調査したオープンソースの Aseprite MCP の中で、MCP ネイティブの機能が最も充実しています(ライブ状態のリソース+ワークフローをガイドするプロンプト)差別化要素(控えめな主張)

サーバー経由で行う編集はすべて、名前付きの undo ステップ(app.transaction)が正確に 1 つだけ作成されます。エージェントの作業を見ながら、その変更を Ctrl-Z で 1 ステップずつ取り消せます。他のオープンソースのライブブリッジは、機能全体でこの規律を守っていないことを確認しました(57 個のツールのうち、1 個だけがこの方法を使います)。

アップデートの確認

status ツールは、サーバーのバージョンと、新しいリリースがあるかどうかを(PyPI 経由で、1 日に最大 1 回)報告します。エージェントに表示されるため、あなたにもわかります。

{ "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 のログ 1 行、および MCP の serverInfo ハンドシェイクで返される実際のバージョンとしても確認できます。ASEPRITE_MCP_NO_UPDATE_CHECK=1 で無効にできます(CI では自動的に無効になります)。テレメトリーはありません。確認処理では、PyPI の公開 JSON に対して HTTP GET を行うだけで、あなたやあなたのマシン、作品に関する情報は送信されません。

ツール(139)

すべてのツールは型付きで、アノテーション(readOnlyHint/destructiveHint/idempotentHint/openWorldHint)が付いています。また、状態を変更するツールはすべて名前付きの app.transaction でラップされているため、編集ごとにエディター上でラベル付きの undo ステップが正確に 1 つ作成されます。

確認・メタデータ(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 — レイヤーツリー全体をスタックの最上部から順に表示します。名前、パス、種類(画像/グループ/タイルマップ)、表示状態、不透明度が含まれます。グループ内にネストされたレイヤーも含みます(get_sprite_info では最上位のレイヤーのみが表示されます)。
  • delete_layer — 指定した名前のレイヤーを削除します。
  • rename_layer — レイヤーの名前を変更します。
  • set_layer_visibility — レイヤーを表示または非表示にします。
  • set_layer_opacity — レイヤーの不透明度を設定します(0-255)。
  • flatten_sprite — すべてのレイヤーを単一のレイヤーに統合します。
  • set_layer_blend_mode — レイヤーのブレンドモードを設定します。
  • duplicate_layer — レイヤーを複製し、そのレイヤーの上に配置します(セルも複製されます)。
  • 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 個の空フレームを、1 回の取り消し操作で末尾に追加します。
  • set_frame_durations — [from_frame..to_frame] のすべてのフレームの表示時間を ms ミリ秒に設定します。
  • reverse_frames — フレームの順序を逆にします(すべてのレイヤーのセルと表示時間も対象です)。デフォルトではスプライト全体が対象ですが、範囲を指定すると両端を含む [from_frame..to_frame] が対象になります。
  • set_onion_skin — エディターのオニオンスキン表示を設定します。有効/無効、各方向のゴースト数、ゴースト表示を現在のタグ内に制限するかどうかを指定します。
セル (3)
  • clear_cel — 指定したレイヤーとフレームのセルを空にします(透明にします)。
  • set_cel_position — セルの左上の原点を (x, y) に移動します。
  • set_cel_opacity — セルの不透明度を設定します(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`** — 長方形を ``color1`` と ``color2`` を混ぜた均一な順序付きディザ(Bayer 4x4)で塗りつぶします。 - **`add_outline`** — アクティブなセルの不透明ピクセルの周囲に ``color`` で 1px のアウトラインを追加します。複雑な背景でも見やすくなります。
パレット (12)
  • get_palette — アクティブなスプライトのパレットを #rrggbbaa 形式の 16 進文字列で返します。
  • 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 — アクティブなセル内で from_color に一致するすべてのピクセルを、tolerance(0~255 の RGB 距離)の範囲内で to_color に置き換えます。to_color にアルファ値が含まれていない限り、各ピクセルのアルファ値は保持されます。
  • quantize_to_palette — アクティブなセルのすべての不透明ピクセルを、スプライトのパレットで最も近い色に合わせます(アルファ値は保持されます)。素材の取り込み後やシェーディング後に、パレットの規律を保つために使用します。
  • adjust_hsl — HSL でアクティブなセルの色を調整します。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`** — アクティブなセルの明るさとコントラストをそれぞれ -100~100 の範囲で調整します(0 = 変更なし)。 - **`invert_colors`** — アクティブなセルの RGB を反転します(アルファは変更しません)。 - **`desaturate`** — アクティブなセルをグレースケールに変換します(Rec. 601 の輝度)。アルファは保持されます。 - **`box_blur`** — アルファで重み付けしたボックスカーネルを使って、アクティブなセルをぼかします。 - **`sharpen`** — アクティブなセルをシャープにします(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 パッチ伸縮可能領域の中央の矩形を設定します(スライスを基準とします)。
  • list_slices — すべてのスライスについて、境界、ピボット、9 パッチの中央を一覧表示します。
  • 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 のグリッド上に、独自のタイルセットを持つタイルマップレイヤーを作成します。 - **`add_tile`** — タイルマップレイヤーのタイルセットに空のタイルを追加し、新しいタイルのインデックスとタイルセットのサイズを返します。 - **`draw_on_tile`** — タイルマップレイヤーのタイルセット内の1つのタイルにピクセルを設定します。 - **`set_tiles`** — タイルマップレイヤーのセルにタイル参照を配置します。 - **`get_tilemap_info`** — タイルマップレイヤーを読み取ります。タイルサイズ、タイルセットの長さ、セルのグリッドサイズ、ピクセル位置、タイルインデックスのグリッド(列を並べた行としての ``tiles``。反転フラグは除去されます。最大64x64で、切り詰められた場合は ``truncated`` が設定されます)。 - **`export_tileset`** — タイルマップレイヤーのタイルセットを横並びの PNG ストリップとしてエクスポートします(``data_path`` が指定されている場合は Aseprite JSON アトラスもエクスポートします)。
アニメーション (5)
  • tween_frames — from_frame と to_frame の間に count 個の中間フレームを挿入し、セルの位置を補間します(開始セルの画像を移動させるモーショントゥイーンです)。
  • tween_cel_opacity — [from_frame..to_frame] の範囲でレイヤーのセルをフェードさせます。選択したイージングを使い、不透明度を from_opacity から to_opacity(0-255)まで補間します。
  • smear_frame — from_frame と to_frame をブレンドしたモーションスミアフレームを追加します。重なり合うピクセルは平均化され、片方のフレームにしかない領域はアルファ半分で残像化されます。ピクセルコンテンツのスミアです。
  • frame_diff — 2つの合成フレームをピクセル単位で正確に比較します。変更されたピクセル数と割合、変更部分のバウンディングボックス、同一かどうかを返します。
  • render_onion_composite — 指定したゴースト opacity で、最大 prev 個前のフレームを赤、最大 next 個後のフレームを青の残像として重ねた frame の PNG を書き出します(Aseprite のオニオンスキン方式)。1枚の画像でモーションアークを 確認 できます。
エクスポート (4)
  • export_sprite — アクティブなスプライトをファイルにエクスポートします。形式は out_path の拡張子(.png、.gif、...)で決まります。
  • export_spritesheet — すべてのフレームを1枚のスプライトシート画像にまとめます(オプションで data_path に JSON アトラスを書き出します)。
  • export_layers — すべての画像レイヤー(グループ内も再帰的に処理)をそれぞれ PNG として out_dir にエクスポートします。ファイル名は <sanitized-layer-name>.png です。
  • export_tags — 各アニメーションタグのフレーム範囲を、それぞれ out_dir にエクスポートします。アニメーション GIF(format="gif"、デフォルト)の <tag-name>.gif、または横並びの PNG ストリップ(format="png")の <tag-name>.png です。
Unity エクスポート (2)
  • export_unity_sprite — 横並びのスプライトシートをエクスポートし、その隣に Unity の .meta を書き込みます。各フレームを名前付きの Multiple モードのスプライトとしてあらかじめスライスします。1回の操作で完了し、Sprite Editor で手動作業する必要はありません。
  • export_unity_slices — スプライトを1枚の PNG としてエクスポートし、Unity の .meta を書き込みます。名前付きスライスごとに Multiple モードのスプライトを1つ作成し、それぞれのスライスのピボットを設定します。スライスを配置したアトラスを Unity にインポートすると、スライスとピボットが設定された状態になります。
アート QA (2)
  • measure_padding — コンテンツ周囲の透明な「ステッカー」余白を計測します。コンテンツのバウンディングボックス、各辺の余白(左/右/上/下)、塗りつぶし率、不透明な色の種類数を返します。
  • qa_sweep — アクティブなスプライトをプロジェクトの規約に照らして監査し、各チェックの合否を返します。
バッチ処理(フォルダー全体) (3)
  • batch_export — folder 内のすべての .aseprite を(最初のフレームから)画像にエクスポートします。オプションで scale による整数倍の拡大ができます。
  • batch_resize — folder 内のすべての .aseprite を(最初のフレームから、ニアレストネイバー方式で)リサイズし、画像を out_dir に書き出します。
  • batch_apply_palette — folder 内のすべての .aseprite をパレットに合わせます。各スプライト(最初のフレーム、アルファを保持)の色をパレットにスナップし、画像を out_dir にエクスポートします。
元に戻す/やり直す (2)
- **`undo`** — アクティブなスプライトの最後の編集を元に戻します(ライブエディター)。 - **`redo`** — 最後に元に戻した編集をやり直します(ライブエディター)。
ライブエディター(インタラクティブ)(11)
  • get_editor_state — ライブエディター専用:現在のズーム、スクロール位置、マウスが指しているスプライト上のピクセルを取得します。エージェントはアーティストが見ている場所を把握できます。
  • 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 — ライブエディター専用:メッセージと最大4つの選択ボタン(承認/やり直しなど)を含む小さなダイアログを Aseprite 内に表示します。
  • 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 — アクティブなパレットを16進数形式で取得
  • aseprite://docs — 保存されていないタブや名前のないタブを含む、開いているすべてのドキュメント(ライブ)
  • aseprite://qa/last — 直近の qa_sweep/measure_padding の結果
  • aseprite://export/last — 直近の Unity エクスポート(書き出されたファイルとスプライトマニフェスト)
  • aseprite://update — このサーバーのバージョンと、新しいリリースの有無

プロンプト(ガイド付きワークフロー)

ツールを連携させてアートタスクを完成させる、1回の呼び出しで使える「スキル」です。

  • 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 で手動テストしています。macOS/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 としても公開されます。バージョンにはセマンティックバージョニングを採用しています(1.0 より前は、マイナーバージョンの更新でツールの動作が変更される場合があり、パッチは修正です)。

概要

Kyle Ocheltree(OakTree Games)が、実際の本番パイプライン向けに一人で開発しました。Unity へのエクスポート、パディングの QA、アイソメトリックツールは、アイソメトリック視点の工場建設ゲームである Cosmic Scale に必要だったために作られました。AI ネイティブなワークフローで開発しており、AI がコーディングを支援します。すべてのツールはレビューされ、実際のエディターでテストされたうえで、慎重にリリースされます。

コントリビュート

Issue と PR を歓迎します。詳細は CONTRIBUTING.md をご覧ください。提出前に ruff check .、pytest、python tests/smoke_headless.py を実行してください。

ライセンス

MIT — 詳細は LICENSE をご覧ください。© 2026 Kyle Ocheltree / OakTree Games。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。