lpc-spritesheet-mcp
Headless MCP server that composes and renders Universal LPC character spritesheets: 657 items, 6 body types, palette recoloring, 15 animation row blocks, attribution files included. No browser.
Install / Use
claude mcp add kanishka-namdeo -- npx -y github:kanishka-namdeo/lpc-spritesheet-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
OtherSupported Platforms
Tags
Our assessment of lpc-spritesheet-mcp
lpc-spritesheet-mcp scores 83/100 on our quality scale, 215th of 294 Other skills we index.
Its MCP Server is 23 KB long, well organised into 19 sections with 13 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so lpc-spritesheet-mcp is actively maintained.
- It is released under GPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
lpc-spritesheet-mcp compared with similar skills
All 4 of these similar skills score higher than lpc-spritesheet-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| lpc-spritesheet-mcp (this skill)by kanishka-namdeo | 83 | 3 | today | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install lpc-spritesheet-mcp?
- Run
claude mcp add kanishka-namdeo -- npx -y github:kanishka-namdeo/lpc-spritesheet-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does lpc-spritesheet-mcp work with?
- It is written for Claude Code, Claude Desktop and Cursor, as a MCP Server file. Other agents that read the same format can often use it too.
- Is lpc-spritesheet-mcp safe to use?
- It is GPL-3.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is lpc-spritesheet-mcp still maintained?
- The repository was last updated today, so lpc-spritesheet-mcp is actively maintained.
Skill content
View source on GitHublpc-spritesheet-mcp
<p align="center"> <img src="https://raw.githubusercontent.com/kanishka-namdeo/lpc-spritesheet-mcp/main/docs/img/hero.png" alt="lpc-spritesheet-mcp banner: a knight with a sword, an archer with a hood and bow, and a mage in a purple kimono, each rendered by this server, with the 13-by-54 universal sheet layout drawn at top right" width="1184"> </p> <p align="center"> <a href="https://www.npmjs.com/package/lpc-spritesheet-mcp"><img src="https://img.shields.io/npm/v/lpc-spritesheet-mcp.svg" alt="npm version"></a> <a href="https://github.com/kanishka-namdeo/lpc-spritesheet-mcp/actions/workflows/ci.yml"><img src="https://github.com/kanishka-namdeo/lpc-spritesheet-mcp/actions/workflows/ci.yml/badge.svg" alt="CI status"></a> <a href="./LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0-blue.svg" alt="License: GPL-3.0"></a> <a href="./package.json"><img src="https://img.shields.io/badge/node-%E2%89%A520.11-green.svg" alt="Node.js >= 20.11"></a> </p>Give an AI agent a character artist's hands. This is the Universal-LPC-Spritesheet-Character-Generator web app re-implemented as a headless Node.js MCP server: an agent describes a character, and gets back a game-ready 832×3456 spritesheet with the exact frame layout — no browser, no screenshotting, no manual export button. Want to see it first? Previews come back as animated GIFs. Want a whole village? One seeded call. Tired of discovering itemIds? Presets and an opt-in AI designer start from plain language.
<p align="center"> <img src="https://raw.githubusercontent.com/kanishka-namdeo/lpc-spritesheet-mcp/main/docs/img/demo.gif" alt="Terminal recording of a real MCP session: the server reports 657 items and 104 groups, tools/list returns the thirteen tools, list_animations reports the walk row block, and a get_preview call renders a hooded character's walk cycle animating in the stage panel" width="880"><br> <sub>A real session against <code>src/index.js</code> over stdio — every byte of JSON shown is what the server returned.<br> Only the typing timing is authored. Regenerate with <code>npm run demo</code> (<a href="https://github.com/kanishka-namdeo/lpc-spritesheet-mcp/blob/main/docs/img/demo-credits.csv">attribution</a>).</sub> </p>- 657 selectable items across 104 groups on the current asset pack: 6 body types (male, female, teen, child, muscular, pregnant), 91 hairstyles, 45 heads (human, beast, reptile, undead, …), clothes, armor, 40 weapons, 9 shields with heraldic patterns, hats, capes, tails, wings, prostheses, wheelchairs.
- Named palette recoloring for skin, hair, eyes, cloth, metal and wood — 22 skintones, 26 hair colors, a 75-color universal palette.
- 15 animation row blocks on the standard sheet: 13 run in all four directions,
hurtandclimbship a single facing — that is exactly the 54 rows. Plus custom-animation blocks for wheelchairs and 128/192px oversize weapons and tools. - Watch it walk.
get_previewreturns one direction's playback cycle as a strip PNG or a looping animated GIF — inline in the conversation, correct LPC playback order, transparency preserved. - Surprise me, reproducibly.
random_characterrolls a coherent character from any seed (same seed → same character, forever) with gear profiles frombaretofancy;generate_batchpopulates a whole NPC village in one call — sheets, previews, a contact grid, a manifest and one rolled-up credits file. 18 curated presets (knight,mage,blacksmith, …) render in a single call viapreset: "<name>". - Engine-ready output. Every render returns rows, frame counts, playback cycles and custom-block
offsets, and
export_characterfans the same character out into per-animation or per-frame PNGs with an atlas in five dialects — TexturePacker/Phaser JSON Hash (with a cycle-correctanimationsmap), Aseprite JSON (frameTags), Godot 4.tresSpriteFrames, libGDX.atlas, and Unity pre-sliced.png.meta— plus a manifest, so a game engine never has to guess the layout or slice the sheet itself. - Opt-in AI design. Configure
LPC_AI_API_KEYanddesign_characterturns a plain-language brief ("a tanned blacksmith with a leather apron and a hammer") into selections, colors, a rationale and a preview. Without the key the server stays fully offline: no network calls, no telemetry, and one environment variable (LPC_ASSETS_DIR). - Deterministic, and now proven.
npm run goldenrecords SHA-256 hashes of seven canonical renders against a pinned asset-pack revision, and the test suite fails if a render drifts. - Attribution included. Each sheet gets
-credits.csv/-credits.txtbeside it naming the authors and licenses of the art actually used.
The server ships no art. It reads a local clone of the upstream asset pack and renders it,
offline by default: no network calls, no telemetry, and one environment variable (LPC_ASSETS_DIR).
Install
The server needs the upstream asset pack once. Any of these three lines does it — pick one:
git clone --depth 1 https://github.com/LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator ~/.lpc-spritesheet/lpc-generator-src
lpc-spritesheet-setup # same thing, via the npm bin after `npm install -g lpc-spritesheet-mcp`
npm run setup-assets # same thing, from a checkout of this repo
Then wire the server into an MCP client: npx -y lpc-spritesheet-mcp, or npm install -g it and run
lpc-spritesheet-mcp. Prefer a checkout? git clone this repo and run node src/index.js. Updating
assets is a git pull in the pack clone.
The pack is looked up in this order, and the first valid entry wins:
$LPC_ASSETS_DIR../lpc-generator-src(sibling of the package — the dev-checkout convention)~/.lpc-spritesheet/lpc-generator-src(where the setup command above clones)
A valid pack contains both sheet_definitions/ and spritesheets/. If none is found the server
prints what it searched for and exits — it will not start half-configured.
Try it now
No MCP client required — the official protocol inspector drives the server from a shell. The
inspector starts the server with a clean environment, so if your asset pack lives outside the two
automatic locations, pass -e LPC_ASSETS_DIR=<path> (drop the flag when the pack is in
~/.lpc-spritesheet/lpc-generator-src or a sibling lpc-generator-src/):
# list the thirteen tools and their schemas
npx -y @modelcontextprotocol/inspector --cli node src/index.js --method tools/list \
-e LPC_ASSETS_DIR=/path/to/lpc-generator-src
# or render an ANIMATED walk cycle: the GIF comes back inline
npx -y @modelcontextprotocol/inspector --cli node src/index.js --method tools/call \
--tool-name get_preview --tool-arg animation=walk --tool-arg format=gif \
--tool-arg scale=3 --tool-arg bodyType=female \
-e LPC_ASSETS_DIR=/path/to/lpc-generator-src
# or roll a villager from a seed
npx -y @modelcontextprotocol/inspector --cli node src/index.js --method tools/call \
--tool-name random_character --tool-arg seed=riverford-1 \
-e LPC_ASSETS_DIR=/path/to/lpc-generator-src
# or drive it interactively: browse 657 items, call tools, view the result
npx @modelcontextprotocol/inspector node src/index.js
MCP client configuration
All of these run the same stdio server. LPC_ASSETS_DIR is optional — omit it if the pack is in one
of the two automatic locations above. To enable the opt-in AI designer, add LPC_AI_API_KEY
(any OpenAI-compatible endpoint via LPC_AI_BASE_URL, default Dashscope's; model via LPC_AI_MODEL:
qwen3.7-plus, kimi-k2.5 — the fast default — or qwen3.6-plus). Without the key the server is
fully offline and design_character answers with a setup error.
{
"mcpServers": {
"lpc-spritesheet": {
"command": "npx",
"args": ["-y", "lpc-spritesheet-mcp"],
"env": {
"LPC_AI_API_KEY": "sk-…",
"LPC_AI_BASE_URL": "https://coding-intl.dashscope.aliyuncs.com/v1",
"LPC_AI_MODEL": "kimi-k2.5"
}
}
}
}
</details>
<details>
<summary>Claude Desktop (<code>claude_desktop_config.json</code>)</summary>
{
"mcpServers": {
"lpc-spritesheet": {
"command": "npx",
"args": ["-y", "lpc-spritesheet-mcp"]
}
}
}
</details>
<details>
<summary>Claude Code (<code>claude mcp add</code>)</summary>
claude mcp add lpc-spritesheet -- npx -y lpc-spritesheet-mcp
</details>
<details>
<summary>Cursor / VS Code / generic stdio client, with a custom asset location</summary>
{
"mcpServers": {
"lpc-spritesheet": {
"command": "npx",
"args": ["-y", "lpc-spritesheet-mcp"],
"env": { "LPC_ASSETS_DIR": "D:/assets/lpc-generator-src" }
}
}
}
</details>
<details>
<summary>ZCode (<code>~/.zcode/cli/config.json</code>)</summary>
{
"mcp": {
"servers": {
"lpc-spritesheet": { "type": "stdio", "command": "npx", "args": ["-y", "lpc-spritesheet-mcp"] }
}
}
}
</details>
The thirteen tools
| Tool | Purpose |
|---|---|
| list_categories | All selection groups (body, hair, head, clothes, legs, shoes, weapon, hat, shield, tail, wings, …) with item counts and whether they take colors. Start here. |
| list_items | One category: exact itemIds, display names, pre-sliced variants, valid recolors — deduplicated into a response-level palettes map. Filter with search, page with limit/offset, shrink with fields; the response is byte-budgeted, so check truncated/nextOffset. |
| list_palettes | Color names per material (body, hair, eye, cloth, metal, wood, all), with each material's default. |
| list_animations | The row layout of every animation (rows, frame counts, playback cycles, y-offsets) plus the custom blocks, which items provide them, and whether any item does. |
| list_presets | The curated preset library (knight, mage, blacksmith, farmer, rogue, royal, child, zombie, lizardfolk, wheelchair user, …) — renderable in one call with preset: "<name>". |
| generate_spritesheet | Render the full universal sheet; returns the path, layout, warnings, credits, the upstream generatorUrl and the asset-pack revision. |
| get_animation | Render, then crop ONE animation into its own PNG — standard row block or custom block. |
| get_preview | Render, then crop one direction's playback cycle, upscaled 1–8× — as a strip PNG or a looping animated GIF (format: "gif"). Small enough to return inline, so you also get the image itself, not just a path. |
| export_character | Render, then fan out into a directory bundle: sheet.png, an atlas in one of five dialects (texturepacker, aseprite, godot, libgdx, unity) with cycle-correct playback sequences, manifest.json, and either one PNG per animation row block (mode: "animation") or one per frame (mode: "frames"), plus credits. |
| random_character | Roll a coherent character from a seed — same seed, same character, forever. Gear profiles (bare/civilian/soldier/fancy), a completeness guarantee for core rows, ready-to-render selections/colors and an inline walk preview. |
| generate_batch | Populate a village in one call: N seeded characters → per-character sheets/previews/credits + index.png contact grid + manifest.json + one rolled-up credits file. |
| design_character | (Opt-in, needs LPC_AI_API_KEY) Turn a natural-language brief into ready-to-render selections/colors — catalog-grounded, validated, self-healing, with the model's rationale and an inline preview. |
| validate_sheet | Audit instead of render: the port's row-block ta
Truncated for display — read the full file on GitHub.
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
