MCP server that extracts color palettes from images, derives dark/light themes, scores WCAG accessibility, and exports to CSS/SCSS/Tailwind/Figma tokens. Generates a complete per-image deliverable folder with preview PNGs and an interactive HTML design system guide (with a LIGHT/DARK toggle that re-themes the page chrome to match the brand).
Server has 8 well-defined tools with explicit schemas and descriptions. Most tools follow verb_noun naming (extract_palette, build_palette_folder, score_accessibility). Schemas are comprehensive with proper type constraints (enums, min/max bounds). However, descriptions vary in quality, some are verbose (build_palette_folder at 300+ chars) while others lack actionable context. Parameter descriptions are present but inconsistent in depth. Output schemas are documented in code but not formally exposed in tool definitions. Error handling is minimal, no recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (build_palette_folder is WRITE, others READ_ONLY).
End-to-end pipeline: detect the app window in a screenshot, extract separate app + wallpaper palettes, derive the inverse theme, render visual previews, export to CSS/SCSS/Tailwind/Figma/JSON, write a README.md, and produce an HTML design-system guide (with PNG screenshot) that has a dark/light toggle. Each invocation creates a unique folder. Use target_mode to control which theme is labelled primary: 'auto' (default — detect from source luminance), 'dark', or 'light'. Both themes are always produced. Use brand_mode to control whether the source is treated as a brand palette or a UI screenshot: 'auto' (default — heuristic), 'brand' (use 'brand.*' filenames and label inverse as 'demo inverse'), or 'ui' (current behaviour, 'app-{light,dark}.*' filenames).
Compare two palettes via perceptual ΔE2000 distance.
Export a palette to a developer/designer file format.
Detect the app window in a screenshot and extract palettes for the app (foreground) and the wallpaper (background) separately.
Extract a perceptual color palette from an image.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk profiles. build_palette_folder performs file I/O (WRITE risk) but lacks destructiveHint annotation.
Descriptions lack actionable context for LLM selection. build_palette_folder description is 300+ chars but omits when to use it vs extract_palette or extract_app_palette. No dependency hints.
Error handling is absent. No recovery guidance, error categorization, or actionable messages. If image_url and image_path are both missing, error is generic 'Provide image_url or image_path' with no suggestions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Generate a color harmony palette from a seed color using a specified scheme.
Compute WCAG contrast ratios for palette pairs.
Assign semantic roles (background/text/accent/...) to a palette.
Output schemas not formally documented in tool definitions. Responses are JSON blobs (palette arrays, file paths, accessibility scores) but LLMs cannot see expected field structure in advance.
Mutually exclusive parameters (image_url vs image_path) not documented in descriptions. LLMs may pass both or neither without explicit guidance.