关于 color-space
color-space 是一个覆盖 221 种色彩空间的 JavaScript 集合,提供经引用来源验证的转换公式和常规数值范围。它也提供 WASM、着色器、LUT、ICC、OCIO 等输出形式,以及面向 Agent 的 MCP 服务和命令行工具。
主要功能
- 01转换 221 种互联色彩空间
- 02提供独立空间与精简版本
- 03支持 JavaScript、WASM 和着色器
- 04生成 LUT、ICC 与 OCIO 数据
- 05提供 CSS 解析及色彩辅助工具
- 06包含命令行与 MCP 工具
适用场景
- 01在不同色彩空间间转换数值
- 02生成用于图形着色器的转换代码
- 03为视频软件导出 LUT 或 ICC 配置
- 04让 Agent 查询色彩转换与色域信息
MCP 相关
提供 MCP 服务,向客户端公开 convert、gamut、css、space、shader、icc、code 等工具。可通过命令启动,也支持 Streamable HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| to | string | 是 | 目标空间 ID,例如 'rgb'、'oklch'、'lab'、'slog3'、'rec709'('spaces' 工具会列出全部 205 种) |
| from | string | 否 | 源空间 ID,例如 'rgb'、'oklch'、'lab'、'slog3'、'rec709'('spaces' 工具会列出全部 205 种) |
| color | string | 否 | 使用 CSS 颜色代替 `from` + `values`:'#ff8000'、'rebeccapurple'、'oklch(0.7 0.1 50)'、'lab(54% 80 67)'、'color(display-p3 1 0.5 0)' |
| colors | array | 否 | 批量输入:每种颜色指定一个元组(位于 `from` 中)或 CSS 字符串,例如 [[255, 128, 0], '#00ff80', 'oklch(0.7 0.1 50)'] |
| values | array | 否 | 源空间中的单个颜色,例如 rgb 的 [255, 128, 0] |
详细介绍
color-space

开放的色彩空间集合。
- 公式均经过测试,并与引用来源核对
- 采用常用范围
- JS,含 TypeScript 类型 / WASM / GLSL / LUT / ICC / OCIO
使用
import space from 'color-space';
space.rgb.oklch(255, 128, 0); // → [0.732, 0.186, 53] — modern CSS
space.slog3.rec2020(0.5, 0.5, 0.5); // camera log → UHD wide gamut
space.rgb.xyz(300, -10, 0); // → [59.7, 30.6, 2.8] — out-of-range in, unclamped out
// batch
space.rgb.oklch([255, 128, 0, 0, 255, 128]); // [0.732, 0.186, 53, 0.875, 0.234, 151]
// meta
space.lab.range; // [[0, 100], [-125, 125], [-125, 125]]
单个色彩空间:
import oklch from 'color-space/oklch.js';
oklch.rgb(0.65, 0.25, 180); // matches CSS oklch(0.65 0.25 180)
导入
color-space– 全部 221 个互联色彩空间 · gzip 压缩后 70 kBcolor-space/<name>.js– 单个独立色彩空间color-space/lite– 包含 54 个色彩空间的工作集 · gzip 压缩后 29 kBcolor-space/wasm– 以 WASM 提供的 lite 工作集 · 包含独立的.wasm文件color-space/gl– GLSL/WGSL 着色器源码color-space/gl/hlsl·color-space/gl/msl– HLSL(DirectX、Unity、Unreal)和 Metal,由 naga 根据 WGSL 编写 ·await hlsl('rgb', 'oklch')· 需要可选 peer 依赖naga-wasm(其声明 Node ≥ 24.12;CI 在 22 上运行,npm 只会发出警告)color-space/lut– 适用于 Resolve、Premiere、OBS、ffmpeg 的.cubeLUT — 已对照 ACES 验证color-space/icc– 矩阵 + TRC 或 CLUT 配置文件color-space/ocio– 适用于 Blender、Nuke、Resolve、Houdini 的 OpenColorIO 色彩空间:colorspace(space.sgamut3cine),曲线和矩阵取自原生变换,包含 55 个色彩空间,均已与本库核对至 1e-6color-space/util–parse·formatCSS 颜色、mix、gamut、visible、deltaE、contrast(WCAG)、cvd(色觉模拟)·deltaE('rgb', [255, 0, 0], [250, 0, 0])color-space/data.json– 通道、范围、来源、参考资料、图谱、色域color-space/conformance.json– 引用来源的转换数据,每项都注明出处,可用于测试任何色彩库npx color-space rgb oklch 255 128 0– 命令行,无需安装:convert(默认)·cube·icc·space·spaces·mcp(面向 Agent 的 MCP 服务)
Agent
MCP 工具 – convert · gamut · css · space · spaces · cube · shader · icc · code – 让 Agent 调用经过验证的数学运算,而不是猜测。颜色可以使用任意 CSS 字符串('#ff8000'、'oklch(0.7 0.1 50)'、'rebeccapurple')或通道值输入;shader 会将转换写成 GLSL、WGSL、HLSL 或 MSL,code 会提供 JS 调用及其经过验证的色彩科学等效形式。
claude mcp add color-space -- npx -y color-space mcp # Claude Code
code --add-mcp '{"name":"color-space","command":"npx","args":["-y","color-space","mcp"]}' # VS Code
Claude Desktop 的 claude_desktop_config.json、任意项目的 .mcp.json:
{ "mcpServers": { "color-space": { "command": "npx", "args": ["-y", "color-space", "mcp"] } } }
Claude Code 插件(MCP 服务和技能):/plugin marketplace add colorjs/color-space,然后运行 /plugin install color-space@color-space。Docker:运行 docker build -t color-space-mcp . 构建镜像,再用 docker run -i --rm color-space-mcp 运行。
通过 HTTP(Streamable HTTP,无状态)使用:在本地主机运行 npx -y color-space mcp --http 8787,或在 Worker、Deno 或 Bun 中从 color-space/mcp.js 托管 fetch。适用于加载技能的 Agent 的技能:plugins/claude/skills/color-space。
色彩空间
|
**显示与 Web** [sRGB](https://color-space.io/rgb) · [Display P3](https://color-space.io/p3) · [Rec. 2020](https://color-space.io/rec2020) · [Linear-light sRGB](https://color-space.io/lrgb) · [Rec. 709](https://color-space.io/rec709) · [Rec. 709 display](https://color-space.io/rec709-display) · [sRGB 2.2 display](https://color-space.io/rgb-display) · [ProPhoto RGB](https://color-space.io/prophoto) · [Adobe RGB (1998)](https://color-space.io/a98rgb) · [DCI-P3](https://color-space.io/dci-p3) · [Linear Display P3](https://color-space.io/p3-linear) · [Linear Rec. 2020](https://color-space.io/rec2020-linear) · [Rec. 2020 display](https://color-space.io/rec2020-display) · [Linear Adobe RGB (1998)](https://color-space.io/a98rgb-linear) · [Linear ProPhoto RGB](https://color-space.io/prophoto-linear) · [scRGB](https://color-space.io/scrgb) · [RIMM RGB](https://color-space.io/rimm) · [CIE RGB](https://color-space.io/cie-rgb) · [NTSC RGB (1953)](https://color-space.io/ntsc) · [PAL / SECAM RGB](https://color-space.io/pal) · [Apple RGB](https://color-space.io/apple-rgb) · [SMPTE-240M](https://color-space.io/smpte-240m) · [ECI RGB v2](https://color-space.io/ecirgb) · [Adobe Wide Gamut RGB](https://color-space.io/widegamut) · [ColorMatch RGB](https://color-space.io/colormatch) · [Bruce RGB](https://color-space.io/brucergb) · [Beta RGB](https://color-space.io/betargb) · [Best RGB](https://color-space.io/bestrgb) · [Don RGB 4](https://color-space.io/donrgb4) · [Ekta Space PS 5](https://color-space.io/ektaspace) · [Russell RGB](https://color-space.io/russellrgb) · [Prismatic](https://color-space.io/prismatic) 圆柱形 Colorimetry & research |
Video 摄影机 印刷 |
动机
完整的色彩空间集合:简洁的 API,公式均经过来源验证。其他方案侧重数字色彩空间,而本项目采用更广阔的视角,也涵盖历史和跨学科的色彩空间。附带成果:论文勘误、色彩教育,以及 JS→WASM 编译器的测试用例(porffor、jz)。
它不是色彩工具箱——不涉及色域映射、调色板和 alpha;图谱本身用到的少数工具(解析、混合、ΔE、对比度、色觉模拟)位于 color-space/util。Pantone、NCS、RAL Classic 等类似的授权色卡目录并非开源,因此也不在其中。
贡献
发现值有误或缺少空格?请附上定义该值的文档提交 issue。如何添加和检查色彩空间:请参阅 CONTRIBUTING.md。
致谢
感谢助力本项目的研究人员、理论家、规范制定者、实现者以及各个库。
| 库 | 色彩空间 | 范围 | 相机对数 · CAM · 历史模型 | 后端 |
|---|---|---|---|---|
| color-space | 221 | 常规 | ✅ | JS · WASM · GLSL/WGSL · LUT · ICC |
| color-space/lite | 54 | 常规 | 对数 · HDR · CAM16 | JS · 29 kB gzip |
| color-space/wasm | 54 | 常规 | 对数 · HDR · CAM16 | WASM |
| culori | 30 | 0–1 | ❌ | JS |
| colorjs.io | 51 | 0–1 | 部分 | JS |
| texel/color | ~16 | 0–1 | ❌ | JS |
| chroma-js | 11 | 混合 | ❌ | JS |
| d3-color | 6 | 混合 | ❌ | JS |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。