sprite-canon
sprite-canon
MCP-сервер, который заставляет AI-сгенерированные игровые спрайты выглядеть как ОДНА игра.
![]()
Один персонаж, три наряда — синяя и красная строки — это вызовы sprite_repaint, а не перегенерации. Тот же порядок затенения, тот же силуэт, тот же результат каждый раз.
AI-генераторы отлично умеют создавать красивый спрайт и ужасно — заставлять его соответствовать предыдущему. Попросите одного и того же персонажа дважды — и палитра дрейфует, наряд мутирует, новая шляпа парит на 3 пикселя выше головы — каждый ассет сам по себе хорош, а игра в сборке выглядит неправильно. Перегенерация «пока не совпадёт» не сходится; она сжигает деньги, и вы не можете сравнить результат.
sprite-canon использует противоположный подход, извлечённый из реального игрового проекта, который сгенерировал ~4000 кадров и усвоил все уроки на горьком опыте:
Ваши правила консистентности становятся данными —
sprite-canon.json(«канон»), содержащий палитру, именованные цветовые регионы (кожа, наряд, контур…), относительный масштаб и пороги проверки. Хранится рядом с вашими ассетами.Проверка числовая, а не визуальная. Вы не можете просмотреть глазами 96 вариантов нарядов × 8 направлений × 4 кадра.
sprite_verifyвозвращает жёсткие числа «прошло/не прошло» для дефектов, которые действительно попадают в игру: пиксели вне палитры, аксессуары, дрожащие между кадрами, регион, яркий сзади и тёмный спереди, перекраска, задевшая лицо.Исправления — это детерминированные пиксельные операции, а не перегенерация. Перекраска региона на новый цветовой градиент сохраняет затенение и силуэты, никогда не касается защищённых регионов и даёт одинаковый результат каждый раз. Вариант наряда — это один вызов инструмента, а не лотерея с промптами.
Установка
Claude Desktop — один файл, без конфигурации
Скачайте
sprite-canon.mcpbиз последнего релиза.В Claude Desktop откройте Настройки → Расширения (меню ☰ → Файл → Настройки в Windows).
Перетащите файл
.mcpbна страницу «Расширения», просмотрите и нажмите «Установить».
(Двойной щелчок по файлу также работает, если в вашей ОС зарегистрирована ассоциация .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 живут в его таблицах цветов — глобальной и покадровых локальных (патч только глобальной таблицы — классическое половинчатое исправление). Замена записей таблицы переодевает каждый кадр в идеальной синхронизации с нулевой потерей.
В определениях регионов есть пробелы; проводите перепись. 12 случайных пикселей старого цвета, переживших перекраску, невидимы глазу и очевидны для
leftover. Когда он срабатывает, переписьcanon_infoпоказывает, какие цвета ваши регионы не покрывают.
Таблица масштабов
Проверка scale в sprite_verify читает canon.scale.heights — относительные размеры в единицах эталонного ассета (запись, равная 1). Ни один инструмент пока не записывает этот раздел; добавьте его в sprite-canon.json вручную:
"scale": { "heights": { "hero": 1, "house": 3.4, "chicken": 0.45 } }Затем проверяйте с помощью scaleNames, сопоставляя имена файлов с этими ключами. Это ловит классическое «дом меньше героя» за неделю до того, как это заметят ваши игроки.
Практические замечания
Всегда передавайте
canonPath(или файл, над которым находится канон). Рабочий каталог stdio MCP-сервера принадлежит клиенту, а не вашему проекту, поэтому инструменты отказываются угадывать по cwd.Ограничения кодеков: PNG должен быть 8-битным, не чересстрочным, RGB/RGBA/палитровым (обычные случаи пиксель-арта; 16-битные или чересстрочные файлы отклоняются с понятной ошибкой). GIF-энкодер точен до 255 непрозрачных цветов на файл — сверх этого применяется привязка к ближайшей палитре.
sprite_sheetвозвращает изображение встроенным до ~800 КБ; большие листы возвращают только путь к файлу.Спрайтшиты проходят цикл ячейка-в-ячейку: пустые ячейки остаются пустыми, ничего не уплотняется.
Чем это не является
Не генератор. Сочетайте его с любым инструментом создания арта (PixelLab, Aseprite, Gemini, ручные пиксели); sprite-canon — это слой, который сохраняет согласованность результатов.
Не атлас-пакер / инструмент коллизий — sprite-tools отлично покрывает это.
Не магия: вы тратите ~10 минут один раз на проект, обучая его своему канону. Эти инвестиции — именно то, что делает каждую последующую проверку и исправление надёжными.
Разработка
npm test # unit + end-to-end MCP tests (22)Тестовый набор включает регрессионные тесты для каждой ошибки, которую нашёл состязательный мультиагентный обзор в v0.1 — уплотнение ячеек листа, семантика удаления GIF, ложные успешные ответы, тихие прохождения нулевых проверок. Если один падает, значит, вернулась ошибка, которая уже существовала однажды.
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