# io.github.rxolve/pixscii (npm · pixscii)

LLMs can't draw. This MCP can. Pixel art animation toolkit — draw, animate, compose, export.

- Trust score: 64/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `pixscii`: 64/100 (this document), [markdown](https://verifymcp.io/servers/rxolve-pixscii/pixscii.md), [page](https://verifymcp.io/servers/rxolve-pixscii/pixscii)

## Channel facts

- Registry: `npm`
- Package: `pixscii`
- Version: `0.5.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 81/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects sharp 0.34.5, a direct dependency. A fixed version is available.
  - No install/post-install scripts declared.
  - 30 of 122 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2449 tokens (~97/item across 25 items; 25 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 25 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the io.github.rxolve/pixscii MCP server?

io.github.rxolve/pixscii runs locally as an npm package, launched with npx -y pixscii. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add rxolve-pixscii -- npx -y pixscii
```

### Cursor

```json
{
  "mcpServers": {
    "rxolve-pixscii": {
      "command": "npx",
      "args": [
        "-y",
        "pixscii"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "rxolve-pixscii": {
      "command": "npx",
      "args": [
        "-y",
        "pixscii"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add rxolve-pixscii -- npx -y pixscii
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rxolve-pixscii": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "pixscii"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add rxolve-pixscii --command npx --arg -y --arg pixscii
```

### Hermes

```yaml
mcp_servers:
  rxolve-pixscii:
    command: "npx"
    args: ["-y", "pixscii"]
```

### Netclaw

```json
{
  "McpServers": {
    "rxolve-pixscii": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "pixscii"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add rxolve-pixscii -t stdio -c npx -a -y pixscii
```

### Other

```json
{
  "mcpServers": {
    "rxolve-pixscii": {
      "command": "npx",
      "args": [
        "-y",
        "pixscii"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-29 (score 64, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-28 (score 49)

First indexed and scored.

## MCP tools (25)

### `search` (~78 tokens)

Search the sprite library by keyword, category, or get a random sprite. Returns a text listing of matching sprites.

Input parameters:

- `category` (string): Filter by category: items, tiles, effects, ui
- `query` (string): Search keyword (matches id, name, category, tags)
- `random` (boolean): Return a single random sprite

### `get` (~94 tokens)

Get a sprite as a PNG image by its ID. Returns a scaled pixel art PNG.

Input parameters:

- `id` (string, required): Sprite ID (e.g. "sword", "grass", "heart-full")
- `palette` (string): Palette ID (default "pico8"). Use search to see available palettes.
- `scale` (integer): Scale factor 1-16 (default 4). Each pixel becomes scale×scale.

### `character` (~148 tokens)

Generate a procedural pixel character sprite. Same seed always produces the same character. 648 unique combinations.

Input parameters:

- `armor` (string): Armor type: cloth, leather, plate
- `helm` (string): Helm type: hood, iron, crown
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)
- `seed` (string, required): Seed string for deterministic generation. Same seed = same character.
- `skin` (integer): Skin tone index 0-5
- `species` (string): Species: human, elf, dwarf, skeleton
- `weapon` (string): Weapon type: sword, staff, bow

### `convert` (~112 tokens)

Convert an image (URL or base64) to pixel art by quantizing to a palette. Returns both the PNG and sprite data.

Input parameters:

- `height` (integer): Target height in pixels (default 16)
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor for output (default 4)
- `source` (string, required): Image URL (https://...) or base64 data URI
- `width` (integer): Target width in pixels (default 16)

### `create` (~83 tokens)

Create a new blank canvas for drawing. Returns canvas ID and hex grid for inspection.

Input parameters:

- `fill` (string): Fill color: hex char 0-F or "." for transparent (default ".")
- `height` (integer, required): Canvas height in pixels
- `palette` (string): Palette ID (default "pico8")
- `width` (integer, required): Canvas width in pixels

### `pixel` (~43 tokens)

Set individual pixels on a canvas. Batch up to 512 pixels per call.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `pixels` (array, required): Pixels to set

### `line` (~89 tokens)

Draw a line between two points on a canvas using Bresenham's algorithm.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `color` (string, required): Hex char 0-F or "." for transparent
- `x1` (integer, required): Start X
- `x2` (integer, required): End X
- `y1` (integer, required): Start Y
- `y2` (integer, required): End Y

### `rect` (~97 tokens)

Draw a rectangle on a canvas (outline or filled).

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `color` (string, required): Hex char 0-F or "." for transparent
- `filled` (boolean): Fill the rectangle (default: false = outline only)
- `h` (integer, required): Height
- `w` (integer, required): Width
- `x` (integer, required): Top-left X
- `y` (integer, required): Top-left Y

### `fill` (~71 tokens)

Flood fill from a point on a canvas. Returns the updated grid so you can verify the result.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `color` (string, required): Hex char 0-F or "." for transparent
- `x` (integer, required): Start X
- `y` (integer, required): Start Y

### `mirror` (~51 tokens)

Mirror a canvas horizontally (left half copied to right half). Returns the updated grid.

Input parameters:

- `axis_x` (integer): X coordinate of mirror axis (default: center)
- `canvas_id` (string, required): Canvas ID

### `inspect` (~96 tokens)

Read the current pixel state of a canvas as a hex character grid. For canvases >32px, provide x,y,w,h to inspect a region.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `h` (integer): Region height
- `w` (integer): Region width
- `x` (integer): Region start X (for large canvases)
- `y` (integer): Region start Y (for large canvases)

### `undo` (~31 tokens)

Revert the last drawing operation on a canvas. Single-step undo.

Input parameters:

- `canvas_id` (string, required): Canvas ID

### `export` (~39 tokens)

Export a canvas as a scaled PNG image.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `scale` (integer): Scale factor (default 4)

### `compose` (~90 tokens)

Compose multiple sprites into a single scene. Place sprites at specific x,y positions on a canvas.

Input parameters:

- `height` (integer, required): Canvas height in pixels
- `layers` (array, required): Layers to compose (back to front)
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)
- `width` (integer, required): Canvas width in pixels

### `tilemap` (~92 tokens)

Build a tilemap from a 2D grid of tile IDs. Each cell becomes a 16x16 tile.

Input parameters:

- `grid` (array, required): 2D array of tile IDs (e.g. [["grass","grass","water"],["grass","door","grass"]])
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)

### `spritesheet` (~106 tokens)

Stitch multiple canvases into a single PNG spritesheet. Supports horizontal, vertical, or grid layout.

Input parameters:

- `columns` (integer): Columns for grid layout
- `direction` (string): Layout direction (default "horizontal")
- `frames` (array, required): Canvas IDs to stitch
- `gap` (integer): Pixel gap between frames (default 0)
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)

### `animate` (~106 tokens)

Animate a sprite or character with pixel motion. Returns multiple PNG frames or a spritesheet.

Input parameters:

- `id` (string): Sprite ID to animate (use this OR seed)
- `motion` (string, required): Motion type: idle, walk, attack, hurt, bounce, blink
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)
- `seed` (string): Character seed to animate (use this OR id)

### `sequence` (~121 tokens)

Animate actors across a scene. Each actor has a pose cycle and a path of positions. Returns one PNG per frame.

Input parameters:

- `actors` (array, required): Actors to animate
- `background` (string): Canvas ID for the background (omit for transparent)
- `delay` (integer): ms between frames (default 150)
- `height` (integer, required): Scene height in pixels
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)
- `width` (integer, required): Scene width in pixels

### `animate_scene` (~136 tokens)

Create a full animated scene in one call. Generate characters, place them on a background, and animate them along paths. Returns multiple PNG frames.

Input parameters:

- `actors` (array, required): Actors to animate
- `background` (object): Background (omit for transparent)
- `delay` (integer): ms between frames (default 150)
- `frames` (integer): Frame count (default 8)
- `height` (integer, required): Scene height in pixels
- `palette` (string): Palette ID (default "pico8")
- `scale` (integer): Scale factor (default 4)
- `width` (integer, required): Scene width in pixels

### `palettes` (~67 tokens)

List palettes and their named slots. Palettes that share a schema (e.g. "scene") use each index for the same role, so swapping between them recolors the same art for a different mood.

Input parameters:

- `schema` (string): Only palettes with this schema, e.g. "scene"

### `repalette` (~87 tokens)

Switch a canvas to another palette. Within one schema the pixels stay and only the colors change; across schemas each color moves to the slot with the same name, or else the nearest color.

Input parameters:

- `canvas_id` (string, required): Canvas ID
- `palette` (string, required): Target palette ID, e.g. "scene-dusk"
- `scale` (integer): Preview scale (default 4)

### `shapes` (~178 tokens)

Draw geometry as crisp pixel art: rect (with radius), circle, ellipse, polygon, line, curve. Fills can be a color, a dither of two colors, or a dithered gradient; filled shapes can have an outline. Draws on an existing canvas, or creates one. Write coordinates, not pixels.

Input parameters:

- `canvas_id` (string): Draw on this canvas. Omit to create a new one
- `height` (integer): New canvas height (default 64)
- `palette` (string): New canvas palette, e.g. "scene-dusk" for slot names (default "pico8")
- `scale` (integer): Preview scale (default 4)
- `shapes` (array, required): Drawn in order, later on top
- `width` (integer): New canvas width (default 64)

### `landscape` (~223 tokens)

Generate a pixel landscape from a seed: sky by time of day, sun or moon, stars, clouds, mountains, hills, sea, forest, ground, rain. Uses the "scene" palette schema, so the same seed renders in any scene-* palette. Presets: dawn, home, school, night, sea, storm, window, forest, dusk, stars. Returns a canvas you can keep drawing on.

Input parameters:

- `height` (integer): Default 72
- `horizon` (number): Horizon height from the top, 0-1 (default 0.62)
- `layers` (array): Drawn back to front in a fixed order
- `palette` (string): A scene-* palette (default scene-<preset>, or scene-dusk)
- `preset` (string): Mood preset: sets time, layers and the default palette
- `scale` (integer): Preview scale (default 4)
- `seed` (string, required): Same seed, same place
- `time` (string)
- `width` (integer): Default 128

### `creature` (~109 tokens)

Generate a creature from a seed: symmetric robot, alien or critter from a mask (outlined, lit from the top, with eyes), or an asymmetric nebula. Endless variety, same seed same creature. Scene palette schema.

Input parameters:

- `kind` (string): Default alien
- `palette` (string): A scene-* palette (default scene-window)
- `scale` (integer): Preview scale (default 8)
- `seed` (string, required)
- `size` (integer): Even, default 24

### `being` (~102 tokens)

Draw a 24×24 person, cat or elf at a life stage: baby, adult or old (white hair, a cane or staff, a plumper cat). The seed varies hair and clothes. Scene palette schema.

Input parameters:

- `palette` (string): A scene-* palette (default scene-window)
- `scale` (integer): Preview scale (default 8)
- `seed` (string)
- `species` (string, required)
- `stage` (string, required)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/rxolve-pixscii/pixscii#diagnostics

## Score history

- 2026-11-05: 64
- 2026-11-04: 64
- 2026-11-03: 64
- 2026-11-02: 64
- 2026-11-01: 64
- 2026-10-31: 64
- 2026-10-30: 64
- 2026-10-29: 64
- 2026-10-28: 49

## Common questions

### What is the io.github.rxolve/pixscii MCP server?

io.github.rxolve/pixscii is an MCP server listed in the public MCP registry as io.github.rxolve/pixscii. LLMs can't draw. This MCP can. Pixel art animation toolkit, draw, animate, compose, export. This page covers its npm package (pixscii).

### Is the io.github.rxolve/pixscii MCP server safe to use?

io.github.rxolve/pixscii scores 64 out of 100 on VerifyMCP. We recorded 3 known advisories against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.rxolve/pixscii MCP server expose?

io.github.rxolve/pixscii exposes 25 tools: search, get, character, convert, create, and 20 more. Their descriptions and schemas cost roughly 2,449 tokens of context every time the server is loaded.

### Is the io.github.rxolve/pixscii MCP server still maintained?

io.github.rxolve/pixscii is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.rxolve/pixscii MCP server under?

io.github.rxolve/pixscii declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/pixscii
- Socket report: https://socket.dev/npm/package/pixscii
- Repository: https://github.com/rxolve/pixscii
- Changelog RSS feed: https://verifymcp.io/servers/rxolve-pixscii/pixscii.xml
- Changelog JSON feed: https://verifymcp.io/servers/rxolve-pixscii/pixscii.json
- HTML version of this page: https://verifymcp.io/servers/rxolve-pixscii/pixscii
