# io.github.Brunovncs/texel-mcp (npm · texel-mcp)

Minecraft skins and textures as code: JSON specs compiled to PNG, with a review an agent can act on.

- Trust score: 82/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `texel-mcp`: 82/100 (this document), [markdown](https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp.md), [page](https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp)

## Channel facts

- Registry: `npm`
- Package: `texel-mcp`
- Version: `0.9.2`
- 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**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 3 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 29 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 81/100
  - 94% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3267 tokens (~72/item across 45 items; 16 tools + 29 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 77/100
  - Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 93% of tool parameters carry a description.
  - Structured output schemas are declared (88% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### How do I install the io.github.Brunovncs/texel-mcp server?

io.github.Brunovncs/texel-mcp runs locally as an npm package, launched with npx -y texel-mcp. 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 brunovncs-texel-mcp -- npx -y texel-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "brunovncs-texel-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "texel-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "brunovncs-texel-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "texel-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add brunovncs-texel-mcp -- npx -y texel-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add brunovncs-texel-mcp --command npx --arg -y --arg texel-mcp
```

### Hermes

```yaml
mcp_servers:
  brunovncs-texel-mcp:
    command: "npx"
    args: ["-y", "texel-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "brunovncs-texel-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "texel-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add brunovncs-texel-mcp -t stdio -c npx -a -y texel-mcp
```

### Other

```json
{
  "mcpServers": {
    "brunovncs-texel-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "texel-mcp"
      ]
    }
  }
}
```

## 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-11-04 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 76, +5)

- [functional improvement] Stability: unverified → 0.30

### 2026-10-19 (score 71, 0)

- [functional regression] Security disclosure: unverified → fail

## MCP tools (16)

### `texel_render` (~262 tokens)

Render skin

Compile a skin spec and review it. Returns a review sheet image (front | back | right | left views + raw texture), the review (score, issues with JSON paths and fix hints, art checks, craft advice, suggested next steps) and, on request, the texture (64×64 for a player skin), a text render and a close-up of some parts. Deterministic; never modifies files.

Input parameters:

- `file` (string): Instead of "spec": a .json spec file in the workspace, e.g. "skins/knight.json". Saves resending the whole spec on every call; texel_patch then edits the file in place.
- `focus` (array): Also return a close-up of these parts or groups alone (e.g. ["head"], ["arms"]) from all six sides, large, on gray: for judging a face, a hood or one garment.
- `include` (array): Extra outputs. "sheet" is the review image; "ascii" adds a text render for models without vision.
- `spec`: A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `art` (object)
- `issues` (array)
- `layout` (string): Texture layout: player, zombie, humanoid (armor), skeleton, item…
- `model` (string)
- `name` (string)
- `next` (array)
- `ok` (boolean)
- `score` (number)
- `size` (array): Texture size in pixels: [width, height].
- `stats` (object)

### `texel_patch` (~278 tokens)

Patch skin

Apply a patch to a spec (update, replace, add or remove layers by id; change palette, legend or meta) and render the result like texel_render. Layers without an id first get "<op>-<index>" and keep it, so the next patch can use the same ids. Entries that cannot apply are skipped and reported. With "spec", returns the patched spec, the review and the sheet. With "file", writes the patched spec back to that file and returns only the review and the sheet.

Input parameters:

- `file` (string): Instead of "spec": a .json spec file in the workspace, e.g. "skins/knight.json". Saves resending the whole spec on every call; texel_patch then edits the file in place.
- `include` (array): Extra outputs. "sheet" is the review image; "ascii" adds a text render for models without vision.
- `patch` (required): A patch ({ patch: [{ do: "update", id, set }, …] }) as a JSON object or JSON text. Format: texel://docs/spec, section "Patches".
- `spec`: A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `applied` (number)
- `art` (object)
- `file` (string)
- `issues` (array)
- `layout` (string): Texture layout: player, zombie, humanoid (armor), skeleton, item…
- `model` (string)
- `name` (string)
- `next` (array)
- `ok` (boolean)
- `score` (number)
- `size` (array): Texture size in pixels: [width, height].
- `skipped` (array)
- `spec` (object)
- `stats` (object)

### `texel_validate` (~120 tokens)

Validate skin spec

Check a spec for errors and warnings without rendering images. Cheap; use it after every edit.

Input parameters:

- `file` (string): Instead of "spec": a .json spec file in the workspace, e.g. "skins/knight.json". Saves resending the whole spec on every call; texel_patch then edits the file in place.
- `spec`: A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `issues` (array)
- `ok` (boolean)
- `score` (number)

### `texel_save` (~189 tokens)

Save skin

Compile a spec and write <path>.png (the texture), <path>.skin.json (the source) and optionally <path>.sheet.png into the workspace (/workdir). Also writes every other file the texture is in game: a block's <path>_top.png / _side.png…, an animation's strip with <path>.png.mcmeta, a particle's <path>_0.png…, the glowing pixels as <path>_eyes.png. Refuses specs with errors.

Input parameters:

- `path` (string, required): Output path without extension, relative to the workspace, e.g. "skins/frost-mage".
- `sheet` (boolean): Also write the review sheet.
- `spec` (required): A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `files` (array)
- `score` (number)

### `texel_live` (~115 tokens)

Start live preview

Start (or reuse) a live session and return a studio URL for the user. While it runs, every texel_render result appears in their open browser tab immediately, so they can watch the skin evolve and give feedback mid-way. Call it before the first render and share the URL with the user.

Input parameters:

- `open` (boolean): Also open the URL in the default browser of the machine running this server.
- `port` (integer): Preferred local port (default 4747; the next free one is used if busy).

Output parameters:

- `port` (number)
- `studioUrl` (string)
- `url` (string)
- `viewers` (number)

### `texel_share` (~99 tokens)

Share skin

Store the spec on https://www.texel.dev.br and return a short link (https://www.texel.dev.br/s/<id>) that opens the exact skin in the studio. Falls back to a long self-contained link when offline.

Input parameters:

- `spec` (required): A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `short` (boolean)
- `url` (string)

### `texel_pull` (~75 tokens)

Load skin from link

Load the spec behind a Texel share link (https://www.texel.dev.br/s/<id>, a bare id, or a long studio link with #z= / #spec=) so you can keep developing an existing skin. Returns the spec JSON.

Input parameters:

- `link` (string, required): A share link or short id.

Output parameters:

- `spec` (object)

### `texel_render_family` (~90 tokens)

Render skin family

Expand a family (base spec + variants and/or a matrix of axes) and review every member. Returns a lineup image (front and back of each member, in order) and a per-member score table.

Input parameters:

- `family` (required): A skin family ({ kind: "family", base, variants?, matrix? }) as a JSON object or JSON text. Format: texel://docs/families

Output parameters:

- `issues` (array)
- `members` (array)
- `name` (string)
- `ok` (boolean)

### `texel_save_family` (~110 tokens)

Save skin family

Expand a family and write <directory>/<member-id>.png and .skin.json for every member, plus <directory>/lineup.png, into the workspace (/workdir). Refuses families with errors.

Input parameters:

- `directory` (string, required): Output directory relative to the workspace, e.g. "skins/guild".
- `family` (required): A skin family ({ kind: "family", base, variants?, matrix? }) as a JSON object or JSON text. Format: texel://docs/families

Output parameters:

- `files` (array)
- `members` (number)

### `texel_import_png` (~299 tokens)

Import skin PNG

Convert an existing PNG in the workspace into an editable spec, one layer per painted face, palette keys c01…cNN. A player skin (64×64 or legacy 64×32) by default; pass layout for a mob, armor, cape, item or block texture. With pixelize, any picture becomes a texture of the layout's size first (concept art or a render on a white background → a 16×16 item; an HD 128×128 skin → 64×64): background removed, colors reduced, specks cleaned. Rename palette keys to material names before editing.

Input parameters:

- `colors` (integer): With pixelize: colors to keep (default 16; 0 keeps every averaged color).
- `layout` (string): Texture layout of the PNG, e.g. "zombie", "humanoid" (armor), "item". Default: player skin.
- `outline` (string): With pixelize: a 1-pixel outline around the shape, "#rrggbb" or "auto" (items).
- `path` (string, required): Path to a .png file, relative to the workspace.
- `pixelize` (boolean): Scale and clean a picture of any size into the layout's texture size first.
- `size` (array): With pixelize: the texture size for resizable layouts (gui, painting, HD items), e.g. [32, 32].

Output parameters:

- `layout` (string)
- `lossy` (boolean)
- `model` (string)
- `spec` (object)

### `texel_palette` (~117 tokens)

Palette from a reference image

Read a reference PNG in the workspace (concept art, a photo of a figure, another skin) and return its main colors, most common first, each with a role (shadow, midtone, highlight, neutral, accent), as a ready spec "palette" and "legend". Use it to match a reference instead of guessing hex values; derive the other tones with "~" steps.

Input parameters:

- `colors` (integer): How many colors to keep.
- `path` (string, required): Path to a .png file, relative to the workspace.

Output parameters:

- `entries` (array)
- `legend` (object)
- `palette` (object)

### `texel_pack` (~261 tokens)

Build resource pack

Build a Minecraft resource pack from spec files, family files and folders of them in the workspace (/workdir): every texture at its "asset" path (or its layout's default: vanilla paths for mobs, item/<name> for items…), with .png.mcmeta, _eyes files, particle definitions, pack.mcmeta for the Minecraft version, and with models: true also the models, block states and item definitions items and blocks need. Writes a .zip or a folder, then checks the result like texel_check_pack.

Input parameters:

- `description` (string)
- `files` (array, required): Spec files, family files or folders of .json specs, relative to the workspace.
- `mcVersion` (string): Minecraft Java version, e.g. "1.21.4". Default: the latest Texel knows.
- `models` (boolean): Also write models, block states and item definitions for item, block and plant textures (new items and blocks need them; replaced vanilla textures don't).
- `namespace` (string): Namespace for textures whose "asset" has none. Default "minecraft" (replaces vanilla textures); a mod uses its id.
- `out` (string): Output .zip, or a folder, relative to the workspace.

Output parameters:

- `files` (number)
- `format` (number)
- `issues` (array)
- `ok` (boolean)
- `out` (string)
- `placed` (array)
- `version` (string)

### `texel_check_pack` (~148 tokens)

Check resource pack

Check a resource pack (a folder or a .zip in the workspace, /workdir), not only ones Texel made: pack.mcmeta and the versions its format covers, file and namespace names, PNGs, .mcmeta animations and GUI scaling, entity texture sizes against Texel's layouts, models, block states, item definitions and particles that point at missing files, and unused textures. Each issue has the file, a JSON path and a fix hint.

Input parameters:

- `mcVersion` (string): Minecraft Java version the pack must work on, e.g. "1.21.4".
- `path` (string, required): The pack folder or .zip, relative to the workspace.

Output parameters:

- `issues` (array)
- `ok` (boolean)
- `stats` (object)
- `versions` (array)

### `texel_diff` (~133 tokens)

Diff two skins

Compare two specs pixel by pixel and report which faces changed. Use it to confirm a patch touched only what you intended. Returns the changed-pixel mask over the texture map (magenta = changed).

Input parameters:

- `after` (required): A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1
- `before` (required): A Texel skin spec (version 1) as a JSON object or JSON text. Format: texel://docs/spec, schema: texel://schema/skinspec.v1

Output parameters:

- `changedPixels` (number)
- `faces` (array)

### `texel_get_example` (~96 tokens)

Get example spec

Return a complete, working example spec to learn from or fork. Skins: explorer, knight, robot, astronaut, wizard, cozy, winged-pig, miner-zombie, creeper, mud-pig, bronze-armor, banner-cape, ember-blade, zebra, sky-evoker, ash-log, magma-pulse, stone-button, spark. Family: guild.

Input parameters:

- `id` (string, required)

### `texel_read_docs` (~72 tokens)

Read Texel docs

Read a documentation page as markdown. Pages: protocol (Skin Agent Protocol), spec (Skin spec reference), art-guide (Skin art guide), families (Skin families), api (Agent interfaces), install (Install as a tool). Read "spec" before writing your first spec.

Input parameters:

- `page` (string, required)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp#diagnostics

## Score history

- 2026-11-05: 82
- 2026-11-04: 82
- 2026-11-03: 81
- 2026-11-02: 81
- 2026-11-01: 80
- 2026-10-31: 80
- 2026-10-30: 79
- 2026-10-29: 79
- 2026-10-28: 78
- 2026-10-27: 78
- 2026-10-26: 77
- 2026-10-25: 77
- 2026-10-24: 77
- 2026-10-23: 76
- 2026-10-22: 76
- 2026-10-21: 71
- 2026-10-20: 71
- 2026-10-19: 71
- 2026-10-18: 71
- 2026-10-17: 71
- 2026-10-16: 71
- 2026-10-15: 71
- 2026-10-14: 71
- 2026-10-13: 71
- 2026-10-12: 39

## Common questions

### What is the io.github.Brunovncs/texel-mcp server?

io.github.Brunovncs/texel-mcp is listed in the public MCP registry as io.github.Brunovncs/texel-mcp. Minecraft skins and textures as code: JSON specs compiled to PNG, with a review an agent can act on. This page covers its npm package (texel-mcp).

### Is the io.github.Brunovncs/texel-mcp server safe to use?

io.github.Brunovncs/texel-mcp scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting 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.Brunovncs/texel-mcp server expose?

io.github.Brunovncs/texel-mcp exposes 16 tools: texel_render, texel_patch, texel_validate, texel_save, texel_live, and 11 more. Their descriptions and schemas cost roughly 2,464 tokens of context every time the server is loaded.

### Is the io.github.Brunovncs/texel-mcp server still maintained?

io.github.Brunovncs/texel-mcp 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.Brunovncs/texel-mcp server under?

io.github.Brunovncs/texel-mcp 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/texel-mcp
- Socket report: https://socket.dev/npm/package/texel-mcp
- Repository: https://github.com/Brunovncs/texel-mcp
- Changelog RSS feed: https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp.json
- HTML version of this page: https://verifymcp.io/servers/brunovncs-texel-mcp/texel-mcp
