sprite-canon
sprite-canon
AIが生成したゲームスプライトを、まるで1つのゲームのように見せるMCPサーバー。
![]()
同じキャラクター、3つの衣装 — 青と赤の行は sprite_repaint の呼び出しであり、再生成ではありません。同じシェーディング順、同じシルエット、毎回同じ結果が得られます。
AIジェネレーターは、きれいなスプライトを作るのは得意ですが、前回のものと一致させるのは苦手です。同じキャラクターを2回依頼すると、パレットがずれ、衣装が変異し、新しい帽子が頭の上に3ピクセル浮いてしまいます。各アセットは単体では問題なく、組み立てるとゲームが壊れて見えます。「一致するまで」再生成しても収束しません。お金を費やすだけで、結果を diff することもできません。
sprite-canon は正反対のアプローチを取ります。実際に約4,000フレームを生成したゲームプロジェクトから抽出し、すべての教訓を苦労して学んでいます:
一貫性のルールがデータになります —
sprite-canon.json(「カノン」)は、パレット、名前付き色領域(肌、衣装、輪郭…)、相対スケール、チェックしきい値を保持します。アセットの隣にコミットします。検証は視覚ではなく数値です。 96の衣装バリエーション × 8方向 × 4フレームを目視で確認することはできません。
sprite_verifyは、実際に問題になる欠陥に対して明確な合否を数値で返します:パレット外のピクセル、フレーム間でジッターするアクセサリー、後ろから見ると明るく前から見ると暗い領域、顔に触れてしまった再描画。修正は再生成ではなく、決定論的なピクセル操作です。 領域を新しいカラーランプに再描画すると、シェーディングとシルエットが保持され、保護された領域には決して触れず、毎回同じ結果を出力します。衣装バリエーションは、プロンプトの抽選ではなく、1回のツール呼び出しです。
インストール
Claude Desktop — 1ファイル、設定不要
最新リリース から
sprite-canon.mcpbをダウンロードします。Claude Desktop で 設定 → 拡張機能 を開きます(Windows では ☰ メニュー → ファイル → 設定)。
.mcpbファイルを拡張機能ページにドラッグし、確認して「インストール」をクリックします。
(ダブルクリックも動作します もしOSが .mcpb の関連付けを登録していれば — ドラッグ&ドロップは常に機能します。代替:拡張機能 → 詳細設定 → 拡張機能をインストール → ファイルを選択)
インストールこれだけです。バンドルには依存関係が同梱されており、Claude Desktop が Node ランタイムを提供します。Claude Desktop アプリが必要です — Claude Code の場合は以下を参照してください。
Claude Code / その他の MCP クライアント
git clone https://github.com/useka12-eng/sprite-canon
cd sprite-canon && npm install次に、プロジェクトの .mcp.json(またはいずれかの MCP クライアント設定)に登録します:
{
"mcpServers": {
"sprite-canon": {
"command": "node",
"args": ["/path/to/sprite-canon/src/mcp/server.mjs"]
}
}
}Node 18+ が必要です。ネイティブ依存関係はありません — PNG/GIF コーデックは自己完結しています。
バンドルを自分でビルドする
npx @anthropic-ai/mcpb pack . dist/sprite-canon.mcpbRelated MCP server: mcp-spritesheet-forge
ツール
ツール | 説明 |
| カノンを作成し、サンプル画像からパレットを学習します(N 回以上使用された色 — それより珍しい色は通常アンチエイリアスのノイズです) |
| 数ピクセルのサンプリング、色の列挙、または HSL ルールで領域を定義します。領域の輝度範囲を記録します。顔・輪郭を |
| 解決済みのカノンを表示し、それに対してファイルを照合します(一致しないピクセルは領域定義の抜けです) |
| 実際に使用されている色を頻度と輝度で一覧表示します — カノン決定のための原材料 |
| フレームごとの骨格(bbox、帽子・頭の幅、ウエスト行、各領域の最初の行)+ フレーム間ジッター |
| 数値チェック: |
| 領域を暗→明のランプに決定的に再配色。保護領域は触れられません |
| ズームされたコンタクトシートをインライン画像として返します — 一貫性はゲーム内ではなくシート上で評価します |
| ロスレスGIF操作:すべての カラーテーブルにわたるパレット置換(ゼロ世代劣化)、タイミング調整 |
入力には PNG、アニメーションGIF、または PNG スプライトシート(cellW/cellH)を使用できます。
ワークフロー
canon_init → learn the palette from your existing good assets
canon_learn → sample skin / outfit / outline once; mark face + outline protected
sprite_measure → read the numbers before placing anything ("where do the eyes start?")
sprite_repaint → make variants deterministically (outfits, teams, seasons)
sprite_verify → prove it: face untouched, nothing left over, no jitter, on palette
sprite_sheet → look at the result as a sheet, zoomed, before it enters the gameこのツールに組み込まれた教訓
これらは仮説ではありません。それぞれが実際の欠陥として先に発生しました:
測定し、大きさを推定しない。 「頭の高さの52%」に置いた帽子のつばが、ちょうど目に重なりました。20px の頭では、目は上から7〜9px の位置にあります。したがって どの 固定比率も当たります。
sprite_measureは、フレームごとに顔の実際の開始位置を報告します。固定された輝度範囲で再描画する。 画像ごとに正規化すると、同じソース色が領域の表示量に応じて異なる出力にマップされます。私たちの帽子は後ろから見ると明るく、前から見ると暗かった。カノンは各領域の輝度範囲を一度記録し、再描画は常にそれを使います。
領域を構造的に保護する。 「顔の周りに気をつけて」というスケールでは機能しません。
protected: trueは、再描画が 触れることはできず、検証が 触れていないことを証明 します。GIFパレットを修正し、エンコードし直さない。 インデックス付きGIFの色はそのカラーテーブルにあります — グローバル と フレームごとのローカルテーブルです(グローバルのみを修正するのは一般的な中途半端な修正です)。テーブルのエントリを置き換えることで、すべてのフレームが完全にピザインされ、ゼロロスで再描写できます。
領域の定義には隙間があります。それを数え上げます。 新しい描画の後に残った古い色の数がしないで、目には見えていませんが、
leftoverにとっては明白です。それが発動すると、canon_infoの照合が、あなたの領域にはどの色がカバーされていないかを示します。
スケールテーブル
sprite_verify の scale チェックは canon.scale.heights を読み取ります — 参考アセット(エントリ 1 と同じに対する相対的な大きさ)。まだこのセクションを書くツールはありません。sprite-canon.json に手動で追加してください:
"scale": { "heights": { "hero": 1, "house": 3.4, "chicken": 0.45 } }その後、scaleNames をファイルのベース名をそれらのキーにマップして検証します。これにより、プレイヤーが気づく未満に「家が主人公より小さい」という古典的なバグを特定できます。
実用上の注意
常に
canonPathを渡します(またはカノンがその上位にあるファイル)。stdio MCP サーバーの作業ディレクトリは自分のプロジェクトではなく クライアント に属するため、ツールは cwd から推定しないことを選択します。コーデックの制限:PNG は8bit、非インターレース、RGB/RGBA/パレットである必要があります(一般的なピクセルアートのケース。16bit やインターレースのファイルは明確なエラーで拒否されます)。GIFエンコーダは、ファイルごとに最大255の不透明色まで正確です。それを超える場合は、最も近いパレットにスナップされます。
sprite_sheetは、約800KB までインライン画像を返します。それ以上の大きなシートはファイルパスのみを返します。スプライトシートはセル単位で往復変換されます。空のセルは空のままで、詰められたりしません。
これではないもの
ジェネレー タではありません。あなたのアートを作るもの(PixelLab、Aseprite、Gemini、手ピクセル)と組み合わせてください。sprit-canon は結果を一貫させるレイヤーです。
アトラスパッカーやコリジョンツールではありません — sprite-tools がそれをよくカバーしています。
魔法ではありません。プロジェクトごとに一度、約10分間だけ、あなたのカノンを教えてください。その投資が、その後のすべてのチェックと修正を信頼できるものにするのです。
開発
npm test # unit + end-to-end MCP tests (22)テストスイートには、v0.1 で敵対的なマルチエージェントレビューが見つけたすべてのバグに対する回帰テストが含まれています — シートセルの圧縮、GIFの破棄セマティクスぜフィックな成功応答、静かなゼロチェック合格です。もし1つでも失敗したら、既存のバグが再発したことです。
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to create and manipulate pixel art by providing tools for drawing, layer management, and animation frame control. It supports exporting projects to PNG, GIF, and sprite sheet formats via the Model Context Protocol.2213Apache 2.0
- AlicenseNot gradedqualityBmaintenanceA hosted Model Context Protocol (MCP) server for game-dev spritesheet workflows. Connect it to Claude or any MCP-compatible AI client and pack, split, trim, and animate sprites through natural language — no local tools required.MIT
- AlicenseBqualityBmaintenanceEnables LLMs to create and edit pixel art reliably with support for layers, frames, symmetry, and various drawing tools.70MIT No Attribution
- AlicenseAqualityBmaintenancePixelForge MCP provides a pipeline for converting AI-generated illustrations into in-game dot sprites. It automates background removal, pixelization, palette unification, outlining, and spritesheet packing via MCP tools.18MIT
Related MCP Connectors
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
On-demand drift checks: declared CSS color, radius, spacing & type vs your own tokens or a pack
Source-first URL clone, capture, rebuild, and fidelity verification tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/useka12-eng/sprite-canon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server