SpriteForge Editor MCP
An official MCP server provided by SpriteForge that allows agents to open and edit pixel art, animations, and Wang tilesets using SpriteForge's editors through edit sessions without requiring an account. It supports tools like open_editor, open_full_editor, open_tileset_editor, and get_sprite.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.spriteforge.tech/mcp/editorWhat you can do with it
- Open pixel art in SpriteForge's compact editor
- Edit sprites with layers, selection, shapes, and frames
- Manage Wang and platformer tilesets
- Retrieve current pixels and PNG links for sprites
Source and maintenance
Protocol and capabilities
- Server
- spriteforge-editor 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- 3 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
open_editor — Open a sprite in the SpriteForge editor
Opens pixel art in SpriteForge's compact pixel editor - pencil, eraser, fill, colour picker, palette, undo and animation frames - as an interactive card where the app shows them, and returns an edit link (the same editor in a browser) and a session_id. No account needed. One source at most: png_base64 (an existing PNG), art (palette + index grid), or neither for a blank width x height canvas. Max 128x128 pixels and 256 colours. The user's edits save to the edit session automatically.
{
"type": "object",
"properties": {
"art": {
"type": "object",
"required": [
"palette",
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"frames": {
"type": "array",
"items": {
"type": "object",
"required": [
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256
}
},
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette."
},
"name": {
"type": "string",
"description": "Sprite name, used as the download filename (letters, digits, _ and -)."
},
"width": {
"type": "integer",
"maximum": 128,
"minimum": 1,
"description": "Blank canvas width in pixels (default 32)."
},
"height": {
"type": "integer",
"maximum": 128,
"minimum": 1,
"description": "Blank canvas height in pixels (default 32)."
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256,
"description": "Starting palette for a blank canvas, as hex colours."
},
"png_base64": {
"type": "string",
"description": "A PNG file, base64-encoded (a data: URL prefix is fine). Pixels under 50% alpha become transparent."
}
},
"additionalProperties": false
}{
"title": "Open a sprite in the SpriteForge editor",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_sprite — Get a sprite from a SpriteForge edit session
Returns the current state of a SpriteForge edit session: a preview image, its size and palette, how many edits were saved, and a PNG URL with the exact pixels at 1x (add &frame=N for another frame). With include_pixels it also returns the palette-index grid. Read-only.
{
"type": "object",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string",
"description": "An edit session's id (the s= value of an edit link), or the edit link itself."
},
"include_pixels": {
"type": "boolean",
"description": "Also return the palette and index grid (default false)."
}
},
"additionalProperties": false
}{
"title": "Get a sprite from a SpriteForge edit session",
"readOnlyHint": true,
"openWorldHint": false
}open_full_editor — Open the full SpriteForge editor
Opens a sprite in SpriteForge's full pixel editor - layers, selection and move, line/rectangle/ellipse, mirror painting, brush sizes, animation frames with onion skin and playback, palette tools - as an interactive card where the app shows them, and returns an edit link that opens the same editor in a browser. One source at most: session_id (an edit session that's already open, or an edit link), png_base64 (an existing PNG), art (palette + index grid), or none for a blank width x height canvas. Max 128x128 pixels and 256 colours. The user's edits save to the edit session.
{
"type": "object",
"properties": {
"art": {
"type": "object",
"required": [
"palette",
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"frames": {
"type": "array",
"items": {
"type": "object",
"required": [
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256
}
},
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette."
},
"name": {
"type": "string",
"description": "Sprite name, used as the download filename (letters, digits, _ and -)."
},
"width": {
"type": "integer",
"maximum": 128,
"minimum": 1,
"description": "Blank canvas width in pixels (default 32)."
},
"height": {
"type": "integer",
"maximum": 128,
"minimum": 1,
"description": "Blank canvas height in pixels (default 32)."
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256,
"description": "Starting palette for a blank canvas, as hex colours."
},
"png_base64": {
"type": "string",
"description": "A PNG file, base64-encoded (a data: URL prefix is fine). Pixels under 50% alpha become transparent."
},
"session_id": {
"type": "string",
"description": "An edit session that's already open, or an edit link containing ?s=<id>."
}
},
"additionalProperties": false
}{
"title": "Open the full SpriteForge editor",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}open_tileset_editor — Open the SpriteForge tileset editor
Opens a tileset in SpriteForge's tileset editor as an interactive card where the app shows them, and returns an edit link that opens the same editor in a browser. For a Wang autotile set (16 tiles; tile i is drawn where the map cells at its corners are painted, NW=1 NE=2 SW=4 SE=8, so tile 15 is the solid base; sets SpriteForge derives add 4 variants of tile 15 as tiles 16-19, mixed into painted floors) the user paints a small map to see the tiles chain, draws on the map or on single tiles, and edits the base texture, which re-derives the edge tiles (tiles drawn by hand stay); a platformer set (49 tiles) is edited tile by tile. With session_id it opens a tileset that's already in an edit session, and kind (wang = flat floor terrain, wall, iso) switches that Wang set's preview, keeping its tiles and the user's edits. Otherwise it makes a new set from kind (wang, wall, iso or platformer; default wang) plus palette + tiles (16 or 20 grids for Wang, 49 for platformer, in mask order), palette + base (a seamless square texture; the Wang tiles are derived from it as SpriteForge does), png_base64 (a tileset sheet or a texture), or size alone for a blank set. With png_base64 and no layout, a 16x1 or 20x1 image is a strip, a 4x5 one a sheet, and a square one is a 4x4 sheet when its tiles look like a Wang set in mask order (tile 0 empty, or nearly every tile's corners matching tile 15 where its mask has that corner and tile 0 where it doesn't), else a texture. The result says which view it opened and how it read the PNG. The user's edits save to the edit session.
{
"type": "object",
"properties": {
"base": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "A square seamless texture to derive a Wang set from (its 16 tiles and 4 variants of tile 15)."
},
"kind": {
"enum": [
"wang",
"wall",
"iso",
"platformer"
],
"type": "string",
"description": "wang (flat floor terrain), wall (Wang walls), iso (isometric Wang) or platformer. For a new set, default wang. With session_id, wang, wall or iso switches that Wang set's preview, keeping its tiles; a Wang set can't become a platformer set or the other way round."
},
"name": {
"type": "string",
"description": "The set's name."
},
"size": {
"type": "integer",
"maximum": 64,
"minimum": 4,
"description": "Tile size for a blank set (default 32)."
},
"tiles": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"description": "The set's tiles in mask order (16 for Wang kinds, or 20 with tile 15's 4 variants after them; 49 for platformer), palette indexes, -1 transparent."
},
"layout": {
"enum": [
"sheet",
"strip",
"texture"
],
"type": "string",
"description": "How to read png_base64: sheet (4x4 or 4x5 Wang sheet, or a platformer set's 7x7), strip (16x1 or 20x1) or texture (a square base texture the Wang tiles are derived from). Default: guessed from the image (see the tool description)."
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256,
"description": "Hex colours for tiles or base."
},
"png_base64": {
"type": "string",
"description": "A tileset PNG (a Wang set's 4x4 or 4x5 sheet or 16x1 or 20x1 strip, a platformer set's 7x7 sheet) or a square texture, base64."
},
"session_id": {
"type": "string",
"description": "An existing tileset edit session, or an edit link containing ?s=<id>. Give kind with it to change a Wang set's preview; the other fields are for a new set."
}
},
"additionalProperties": false
}{
"title": "Open the SpriteForge tileset editor",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}load_art — Load an edit session into the editor card
Loads an edit session's sprite into the SpriteForge editor card. Only the card calls it.
{
"type": "object",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Load an edit session into the editor card",
"readOnlyHint": true,
"openWorldHint": false
}save_art — Save the editor card's sprite
Saves the user's edits from the SpriteForge editor card to its edit session. Only the card calls it.
{
"type": "object",
"required": [
"session_id",
"art"
],
"properties": {
"art": {
"type": "object",
"required": [
"palette",
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"frames": {
"type": "array",
"items": {
"type": "object",
"required": [
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256
}
},
"description": "Pixel art in SpriteForge's format: palette = hex colours, grid = rows of palette indexes (-1 = transparent). Optional frames for an animation, each { grid } on the same palette."
},
"session_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Save the editor card's sprite",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
3 advertised
spriteforge-editor-card — SpriteForge Editor
Inline pixel editor shown under open_editor in hosts that support MCP Apps.
ui://spriteforge/editor-v2.htmlspriteforge-full-editor-card — SpriteForge full editor
The full SpriteForge pixel editor, shown under open_full_editor in hosts that support MCP Apps.
ui://spriteforge/editor-full-v1.htmlspriteforge-tileset-editor-card — SpriteForge tileset editor
SpriteForge's tileset editor (tiling preview, tiles, base texture), shown under open_tileset_editor in hosts that support MCP Apps.
ui://spriteforge/tileset-editor-v1.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 636 ms
- 95th percentile latency
- 636 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 636 ms · metadata changed · 6 tool(s), 3 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http spriteforge-editor-mcp https://www.spriteforge.tech/mcp/editorCodex
codex mcp add spriteforge-editor-mcp --url https://www.spriteforge.tech/mcp/editorCursor
{
"mcpServers": {
"spriteforge-editor-mcp": {
"url": "https://www.spriteforge.tech/mcp/editor"
}
}
}Cline
{
"mcpServers": {
"spriteforge-editor-mcp": {
"type": "streamableHttp",
"url": "https://www.spriteforge.tech/mcp/editor",
"disabled": false
}
}
}VS Code
{
"servers": {
"spriteforge-editor-mcp": {
"type": "http",
"url": "https://www.spriteforge.tech/mcp/editor"
}
}
}Gemini CLI
gemini mcp add --transport http spriteforge-editor-mcp https://www.spriteforge.tech/mcp/editorClaude Desktop
{
"mcpServers": {
"spriteforge-editor-mcp": {
"url": "https://www.spriteforge.tech/mcp/editor"
}
}
}Windsurf
{
"mcpServers": {
"spriteforge-editor-mcp": {
"serverUrl": "https://www.spriteforge.tech/mcp/editor"
}
}
}Let your agent find its tools
Find servers like SpriteForge Editor MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other design servers
Do you run SpriteForge Editor MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.