Colors MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Deterministic color tools. Take every number from a tool: contrast ratios, color-space conversions, gamut mapping, color differences, color-blind simulation.
Is text readable? colors_check, then colors_fix for the closest passing color.
Need a palette? colors_palette (kind ramp, theme, categorical or diverging). Review CSS? colors_audit.
Need colors that meet stated rules (hue, chroma, contrast on given surfaces, gaps between several)? colors_find. Text over an image? colors_scrim.
Edit colors in OKLCH with colors_adjust, blend with colors_blend, compare with colors_compare (CIEDE2000).
Answer with hex (#rrggbb) unless asked otherwise, and quote the tool's numbers. Guides by medium (accessibility, ui-design, dataviz, print, film-video, photo, games, social-brand): resource colors://guide/.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| extensions | {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| colors_checkA | Check WCAG 2 contrast for text/background color pairs and say PASS or FAIL for each, with the exact ratio and, for failures, a nearby passing color. Also gives the signed APCA Lc (APCA-W3 0.98G-4g: positive for dark text on light, negative for light on dark). Use whenever you must know if colors are readable or accessible. Handles translucent colors. Pass foreground+background, or pairs for many. |
| colors_fixA | Make a text color readable: returns the closest color (same hue) that reaches the target contrast ratio on the given background. Use after a contrast check fails, or to pick an accessible text color. The background stays fixed. Returns one hex color and its verified ratio. |
| colors_paletteA | Build a finished color palette with verified accessibility. kind "ramp": an 11-step tonal scale of a color (lightest to darkest, the seed is one step, evenly spaced). kind "theme": light and dark UI tokens (background, surface, surface-raised, text, text-muted, border, primary, on-primary) from a brand color, with every text contrast rule checked. kind "categorical": N clearly different, color-blind-safe colors for charts. kind "diverging": a scale from |
| colors_findA | Find colors that satisfy your rules in one call. Combine any of: hue band (or the hue family of a color), chroma range, lightness range, contrast against one or more backgrounds ( |
| colors_scrimA | Text over a photo: find the smallest overlay (scrim) opacity at which the text reaches a contrast ratio on every worst-case region of the image. Painted like CSS, on 8-bit channels. Returns the opacity and the ratio on each region. |
| colors_auditA | Scan CSS for color problems and return exact findings: "text-contrast-aa" (color on background below 4.5:1), "nontext-contrast-3" (border-color on background below 3:1) and "near-duplicate-token" (two :root custom-property colors almost identical, ΔE00 under 2). Resolves var(--x) from :root. Use for any stylesheet or design review. |
| colors_infoA | Validate color strings and describe each: hex, rgb, hsl, oklch, closest CSS name, how light it is, whether it fits sRGB, and contrast against white and black (so you can pick black or white text). Use to check that an input is a real color, or to understand an unfamiliar color. Bad inputs are reported per color, with a suggestion. |
| colors_convertA | Convert colors to another format: hex, rgb, hsl, hwb, hsv, oklch, oklab, CSS lab/lch (D50), lab-d65/lch-d65 (CIELAB, D65, no adaptation), xyz (D65), linear (linear sRGB), p3, rec2020 (CSS, 2.4 gamma), rec2020-oetf (BT.2020 transfer) or rec2020-linear. Reads any of them as input. Handles lists. A color outside sRGB (for hex/rgb/hsl/hwb) is mapped in by lowering chroma only, and the result says so. |
| colors_compareA | Measure how different colors look from a reference: CIEDE2000 (ΔE00, default), CIE94, CIE76 or Oklab distance, or all of them at once. Returns the nearest candidate and a full ranking, closest first. Use for 'which color is closest', 'are these the same color', or matching to a palette. Under 1 is not noticeable; over 10 is very different. |
| colors_blendA | Mix colors or build a gradient between 2+ colors. Returns evenly spaced hex colors with both endpoints included, interpolated in OKLCH so midpoints stay clean (no gray mud). Set |
| colors_adjustA | Make colors lighter, darker, more or less colorful, or rotate the hue, by exact OKLCH amounts. Changes only the property you name; the result is always a valid sRGB hex (chroma is lowered if the color would leave the gamut). Examples: {property:"lightness",mode:"add",amount:-0.1}; {property:"hue",mode:"add",amount:40}; {property:"chroma",mode:"multiply",amount:0.6}. |
| colors_harmonyA | Generate a color scheme from a base color by rotating its OKLCH hue (complementary, split-complementary, triadic, tetradic, analogous) while keeping lightness and chroma matched. Returns hex colors with their hue offsets; the base is included at offset 0. OKLCH hue steps look even, unlike HSL angles. |
| colors_visionA | Simulate how colors look with color blindness (Machado 2009 model) and, for 2+ colors, measure whether the set stays distinguishable: returns the weakest pair per vision type. Use to check chart or status colors, or to find out if red/green pairs will collide. To BUILD a color-blind-safe set use colors_palette with kind "categorical". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| review-colors | Audit a stylesheet for contrast and duplicate-token problems and propose fixes. |
| brand-color-system | Create a ramp, light/dark theme tokens and chart colors from one brand color. |
| fix-accessibility | Check text/background pairs and replace failing text colors with the closest passing ones. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| colors-viewer | Visual view of colors_* tool results: swatches, contrast samples, ramps, themes. |
| color-guides-index | |
| accessibility | Contrast thresholds, what counts as large text, and how to fix failures. |
| ui-design | Tokens, neutrals, semantic colors, interaction states and dark mode. |
| dataviz | Categorical, sequential and diverging palettes; color-blind safety. |
| Why screen colors shift in print and what to do about it. | |
| film-video | Color spaces, transfer curves and the traps that wreck a grade. |
| photo | Working spaces, white balance, saturation and exporting correctly. |
| games | Readability, team colors, palettes and linear lighting. |
| social-brand | Brand color choice, overlays on photos, and small-thumbnail legibility. |
| color-expert | Use when choosing, checking, fixing or generating colors for UI, web, charts, print, video, photo or games. Routes color math to the colors_* tools and gives medium-specific rules. |
TDQS
Scored across 13 tools
Each tool has a clearly stated niche: search, check, fix, palette, scrim, audit, info, convert, compare, blend, adjust, harmony, vision. A few boundaries are soft — colors_find with contrast rules overlaps colors_fix, and colors_palette ramps overlap colors_blend/colors_adjust — but descriptions explicitly route those cases (e.g. vision says use colors_palette to build CVD-safe sets).
Every tool uses the identical colors_<verb> single-token pattern with a strong, distinct verb (find, check, fix, audit, convert, compare, blend, adjust). No casing or style deviations anywhere in the set.
13 tools sit squarely in the well-scoped 3-15 range and each maps to a genuinely different color task (accessibility, conversion, manipulation, generation, auditing). Nothing feels redundant enough to drop, and no obvious task type is missing a slot.
The surface covers the full lifecycle: parse/describe, convert, measure difference, manipulate, generate (harmony, palette, blend), verify accessibility (check, fix, scrim, audit, vision). Minor gaps remain, such as extracting a palette from an image/logo or exporting palettes as design-token files, but agents can compose around these.