# color-space (npm · color-space)

Conversions across 221 color spaces, tested against cited sources: CSS strings, gamut, LUTs

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

## Components

- npm · `color-space`: 88/100 (this document), [markdown](https://verifymcp.io/servers/colorjs-color-space/color-space.md), [page](https://verifymcp.io/servers/colorjs-color-space/color-space)

## Channel facts

- Registry: `npm`
- Package: `color-space`
- Version: `3.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**: 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.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 84/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to colorjs/color-space).
  - License check failed: the license (CC0-1.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 15 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2114 tokens (~211/item across 10 items; 9 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 70/100
  - Stability observed for 21 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 (89% 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 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 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).

## Install

### How do I install the color-space MCP server?

color-space runs locally as an npm package, launched with npx -y color-space. 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 colorjs-color-space -- npx -y color-space
```

### Cursor

```json
{
  "mcpServers": {
    "colorjs-color-space": {
      "command": "npx",
      "args": [
        "-y",
        "color-space"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "colorjs-color-space": {
      "command": "npx",
      "args": [
        "-y",
        "color-space"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add colorjs-color-space -- npx -y color-space
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add colorjs-color-space --command npx --arg -y --arg color-space
```

### Hermes

```yaml
mcp_servers:
  colorjs-color-space:
    command: "npx"
    args: ["-y", "color-space"]
```

### Netclaw

```json
{
  "McpServers": {
    "colorjs-color-space": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "color-space"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add colorjs-color-space -t stdio -c npx -a -y color-space
```

### Other

```json
{
  "mcpServers": {
    "colorjs-color-space": {
      "command": "npx",
      "args": [
        "-y",
        "color-space"
      ]
    }
  }
}
```

## 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-05 (score 88, +1)

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

### 2026-11-03 (score 87, +1)

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

### 2026-11-01 (score 86, +1)

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

### 2026-10-30 (score 85, +1)

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

### 2026-10-28 (score 84, +1)

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

### 2026-10-26 (score 83, +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-23 (score 82, +1)

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

### 2026-10-21 (score 81, +16)

- [security improvement] Malware scan: unverified → pass

## MCP tools (9)

### `convert` (~387 tokens)

Convert color

Convert a color between any two of the 221 color spaces, identity included, in each space's conventional ranges (rgb 0-255, oklch L 0-1 / C 0-0.4 / H 0-360, lab L 0-100 …). The color goes in as a CSS string (`color`) or as channel values (`from` + `values`); a batch as `colors` – tuples in `from`, CSS strings, or both. Out-of-range in, unclamped out: `inRange` flags each channel against the target's conventional range (rgb below 0 means outside sRGB); null = undefined at that coordinate.

Input parameters:

- `color` (string): a CSS color instead of `from` + `values`: '#ff8000', 'rebeccapurple', 'oklch(0.7 0.1 50)', 'lab(54% 80 67)', 'color(display-p3 1 0.5 0)'
- `colors` (array): a batch: one tuple (in `from`) or CSS string per color, e.g. [[255, 128, 0], '#00ff80', 'oklch(0.7 0.1 50)']
- `from` (string): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `to` (string, required): target space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `values` (array): one color in the source space, e.g. [255, 128, 0] for rgb

Output parameters:

- `channels` (array)
- `colors` (array)
- `from` (string)
- `to` (string)

### `gamut` (~211 tokens)

Gamut membership

Which standard display gamuts hold a color — sRGB ⊂ Display P3 ⊂ Rec. 2020, each tested in its own RGB box straight from the source space, the same ladder as the color-space.io gamut pill. `smallest` is the tightest one; null = beyond Rec. 2020. Membership only: nothing is gamut-mapped.

Input parameters:

- `color` (string): a CSS color instead of `from` + `values`: '#ff8000', 'rebeccapurple', 'oklch(0.7 0.1 50)', 'lab(54% 80 67)', 'color(display-p3 1 0.5 0)'
- `from` (string): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `values` (array): one color in the source space

Output parameters:

- `gamuts` (array)
- `smallest` (string|null)

### `css` (~272 tokens)

CSS color strings

A color as CSS Color 4 strings — rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() and color(display-p3 | a98-rgb | prophoto-rgb | rec2020 | srgb-linear | xyz-d65 | xyz-d50) — plus #hex inside sRGB. Converted, never gamut-mapped: a string is null where CSS would clamp it into a different color (rgb/hsl/hwb outside sRGB, lightness out of range). `gamut` is the smallest display gamut that holds the color.

Input parameters:

- `color` (string): a CSS color instead of `from` + `values`: '#ff8000', 'rebeccapurple', 'oklch(0.7 0.1 50)', 'lab(54% 80 67)', 'color(display-p3 1 0.5 0)'
- `from` (string): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `notations` (array): only these, by library space id (default: all)
- `values` (array): one color in the source space

Output parameters:

- `css` (array)
- `gamut` (string|null)
- `hex` (string|null)

### `space` (~102 tokens)

Space dossier

The dossier of one color space: display name (as color-space.io shows it), description, channels + conventional ranges, defining references, provenance (year, author), illuminant/observer, encoding class, family and purpose, and its direct conversion neighbours.

Input parameters:

- `name` (string, required): the space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)

Output parameters:

- `channels` (array)
- `family` (string)
- `name` (string)
- `neighbors` (array)
- `purpose` (array)
- `source` (string)
- `title` (string)

### `spaces` (~96 tokens)

Space catalog

List the 221 color spaces with display name, family, purpose, channels and one-line use. Optional filters: `query` (words matched against id, name, use line and description; best matches first), `family`, `purpose`.

Input parameters:

- `family` (string)
- `purpose` (string)
- `query` (string): free text, e.g. 'camera log', 'cielab', 'display p3'

Output parameters:

- `count` (integer)
- `spaces` (array)

### `cube` (~174 tokens)

.cube LUT

Render a conversion as a .cube LUT file (Resolve, Premiere, Final Cut, OBS, ffmpeg). The header carries the measured deviation vs the direct conversion. Pure per-channel transfers auto-emit 1D. Size ≤ 33 here (larger via the library or https://color-space.io/).

Input parameters:

- `from` (string, required): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `size` (integer): 3D lattice size (default 17)
- `to` (string, required): target space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)

### `shader` (~235 tokens)

Shader code

The conversion as shader source – GLSL (WebGL2; WebGL1 too unless the path reads a table), WGSL (WebGPU), HLSL (DirectX, Unity, Unreal) or MSL (Metal) – with an entry function `<from>_<to>` (hyphens stripped), e.g. `vec3 rgb_oklch(vec3 c)`, plus every function on the path. Each language is differentially tested against the library and compiled on real GPUs: use it instead of writing color matrices. HLSL and MSL need the optional peer `naga-wasm` installed beside color-space.

Input parameters:

- `from` (string, required): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `language` (string): default glsl
- `to` (string, required): target space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)

Output parameters:

- `code` (string)
- `entry` (string)
- `language` (string)

### `icc` (~157 tokens)

ICC profile

One space as an ICC v2 profile (.icc): matrix + tone curve where the space is an RGB working space (Photoshop, OS color management), a CLUT on a Lab PCS otherwise (lcms, ArgyllCMS, ImageMagick). Returned as a base64 embedded resource; `class`, `pcs` and `bytes` describe it.

Input parameters:

- `grid` (integer): CLUT lattice points per channel, CLUT profiles only (default 33 for 3 channels; fewer = a smaller file)
- `name` (string, required): the space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)

Output parameters:

- `bytes` (integer)
- `class` (string)
- `file` (string)
- `name` (string)
- `pcs` (string)

### `code` (~262 tokens)

Library code

The conversion as code to paste: the color-space JS call with its result and – where one exists for the space on the non-sRGB side – the colour-science (Python) equivalent verified against color-space (sRGB ↔ that space), with any named caveat. The color goes in as a CSS string or as values in `from` (default: sRGB 200, 100, 50).

Input parameters:

- `color` (string): a CSS color instead of `from` + `values`: '#ff8000', 'rebeccapurple', 'oklch(0.7 0.1 50)', 'lab(54% 80 67)', 'color(display-p3 1 0.5 0)'
- `from` (string): source space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `to` (string, required): target space id, e.g. 'rgb', 'oklch', 'lab', 'slog3', 'rec709' (the 'spaces' tool lists all 221)
- `values` (array): the color in the source space

Output parameters:

- `js` (string)
- `python` (string|null)
- `pythonFor` (string|null)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/colorjs-color-space/color-space#diagnostics

## Score history

- 2026-11-05: 88
- 2026-11-04: 87
- 2026-11-03: 87
- 2026-11-02: 86
- 2026-11-01: 86
- 2026-10-31: 85
- 2026-10-30: 85
- 2026-10-29: 84
- 2026-10-28: 84
- 2026-10-27: 83
- 2026-10-26: 83
- 2026-10-25: 82
- 2026-10-24: 82
- 2026-10-23: 82
- 2026-10-22: 81
- 2026-10-21: 81
- 2026-10-20: 65
- 2026-10-19: 78
- 2026-10-18: 78
- 2026-10-17: 78
- 2026-10-16: 78
- 2026-10-15: 78

## Common questions

### What is the color-space MCP server?

color-space is an MCP server listed in the public MCP registry as io.github.colorjs/color-space. Conversions across 221 color spaces, tested against cited sources: CSS strings, gamut, LUTs. This page covers its npm package (color-space).

### Is the color-space MCP server safe to use?

color-space scores 88 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. Its build provenance is signed and verified. 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 color-space MCP server expose?

color-space exposes 9 tools: convert, gamut, css, space, spaces, and 4 more. Their descriptions and schemas cost roughly 1,896 tokens of context every time the server is loaded.

### Is the color-space MCP server still maintained?

color-space 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 color-space MCP server under?

color-space declares the CC0-1.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

## Links

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