RNVizion/rnv-color-mcp

๐Ÿ“ Architecture & Design
0 Views
0 Installs

๐Ÿ โ˜๏ธ - A complete color workflow over MCP: mix (incl. Kubelka-Munk paint physics), convert formats, generate harmonies, and remember named palettes. Resolves hex, CSS, and custom brand color names, and refuses unknown colors rather than guessing. Hosted, no install: https://rnvizion-rnv-color-mcp.hf.space/mcp.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "rnvizion-rnv-color-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "rnvizion-rnv-color-mcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview


title: RNV Color MCP emoji: ๐ŸŽจ colorFrom: gray colorTo: yellow sdk: docker app_port: 7860 pinned: false short_description: Color workflow MCP server

RNV Color MCP

rnv-color-mcp MCP server Mentioned in Awesome MCP Servers tests

A remote MCP server for a complete color workflow: mix, convert, harmonize, and remember palettes, called in plain language by Claude (or any MCP client), and by anything else that speaks MCP.

Why this exists

The color logic already lived in my desktop suite: a mixer, a palette manager, a picker. Instead of rebuilding it for every new project, I lifted the engine out once and exposed it as a single server. A Claude conversation calls it today; a fashion design app will call the same backend tomorrow. Build the engine once, let both consume it.

Underneath, it's a small thesis about working with LLMs: a model is great at deciding what you want and terrible at exact arithmetic. So the model picks the tool and the intent, and the tool owns the precise values. The server resolves or it refuses; it never guesses a color.

What it does

ToolWhat it does
mix_colorsBlend up to 12 colors. Modes: rgb, hsv, lab (digital) and paint (Kubelka-Munk pigment physics), ryb (artist's wheel), cmy (subtractive).
convert_colorConvert between hex, rgb, hsv, hsl, lab.
generate_harmonycomplementary, analogous, triadic, split-complementary, tetradic/square, monochromatic, compound.
color_differencePerceptual difference (Delta-E, CIEDE2000 or CIE76) between two colors.
contrast_checkWCAG contrast ratio plus AA/AAA pass/fail for accessible text.
transform_text11 exact case transforms (UPPERCASE, camelCase, snake_case, โ€ฆ).
save_palette / list_palettes / get_paletteName a palette, recall it later. Persists across restarts.

Every color input accepts a hex (#d2bc93), a CSS name (red), an RNV brand name (brand gold, near-black), or a saved-palette reference (Spring line, or Spring line:2 for its second swatch). Brand names win over CSS names on collision; css:gold forces the universal one.

Connect in 30 seconds

This is a hosted server, so there's nothing to install. In Claude: Settings โ†’ Connectors โ†’ Add custom connector, then paste:

https://rnvizion-rnv-color-mcp.hf.space/mcp

Leave auth blank, add it, then toggle it on in a chat with the + menu.

Try it

Once connected, just talk:

"Save a palette named Spring line: near-black and brand gold." "Pull my Spring line palette and give me three complementary accents for outerwear." "Mix paint-red and paint-blue like real pigment."

The first call saves; the second composes get_palette โ†’ generate_harmony; the third runs the Kubelka-Munk paint model, so the blend darkens the way mixed pigment actually does, not the way averaged light does.

Authentication

The server implements OAuth 2.1 resource-server authentication with enforced per-tool scopes; the public endpoint runs with it disabled, so connecting by URL works with no setup.

When enabled (RNV_AUTH=1 plus a key source), the server validates bearer tokens against issuer, audience, expiry, and signature; serves RFC 9728 protected resource metadata at /.well-known/oauth-protected-resource/mcp; returns a spec-compliant WWW-Authenticate challenge on 401; and enforces two scopes: read covers the eight read-only tools, write covers save_palette, the only tool that mutates anything. A token without the write scope does not see save_palette in its tool list at all; out-of-scope tools are hidden rather than refused, so nothing leaks about what exists behind a scope you lack.

Enforcement is covered by the test suite: 18 tests, run in CI on every push, spanning the token-validation matrix (missing, malformed, wrong issuer, wrong audience, expired, valid) and end-to-end scope enforcement over real HTTP. The suite mints its own keys and requires no credentials. The tests cover the auth layer; the color engine itself is not under automated test.

Moving from the self-issued development key to a real identity provider is configuration, not code: point RNV_AUTH_JWKS_URI at the provider's JWKS endpoint and set the issuer and audience to match.

VariablePurpose
RNV_AUTHThe switch. 1 / true / yes / on enables auth; unset means off.
RNV_AUTH_JWKS_URIA provider's JWKS endpoint. Use this or RNV_AUTH_PUBLIC_KEY.
RNV_AUTH_PUBLIC_KEYA static PEM public key, for development against a self-issued keypair.
RNV_AUTH_ISSUERExpected token issuer; also advertised as the authorization server.
RNV_AUTH_AUDIENCEExpected token audience. Bound to the /mcp path.
RNV_AUTH_BASE_URLServer base URL, without /mcp.

With RNV_AUTH on and no key source set, the server refuses to start rather than coming up unprotected.

Run it yourself

pip install -r requirements.txt
python server.py                  # Streamable HTTP on $PORT (default 7860)

pip install -r requirements-dev.txt
python -m pytest                  # 18 auth + scope tests
python tests/server_test.py       # smoke: exercises all 9 tools in-process

Set HF_TOKEN to write palettes through to a private Hugging Face Dataset for durable storage.

Notes

  • One brand source of truth. Brand colors live in engine/brand.py; the resolver imports them, so a brand value is defined in exactly one place. See BRAND_COLORS.md.
  • Engine is dependency-free. The color math, harmony, and text logic are pure standard library, lifted Qt-free from the desktop apps. Only the server layer needs fastmcp.
  • Honest by design. An unknown color name is refused, not guessed. An unverifiable token is refused, with a reason. Same principle at both layers.

Stack

Python ยท FastMCP (Streamable HTTP) ยท Hugging Face Spaces (Docker) ยท huggingface_hub for durable palette storage.


Built by Christian "RNVizion" Smith.

Related MCP Servers

aidc2026ai-melon/aidc-ai-mcp

๐ŸŽ–๏ธ ๐Ÿ“‡ โ˜๏ธ - Deterministic AI data-center design engine exposed as MCP tools (design, validate, layout): rack count, design PUE, total MVA, liquid/air cooling split, CDU planning, cost & timeline. NVIDIA Rubin-era, 22.9 kV intake, Korea. Remote Streamable HTTP at https://aidc-ai.io/api/mcp; no key for the anonymous tier.

๐Ÿ“ Architecture & Design0 views
awdr74100/figwright

๐Ÿ“‡ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - Bidirectional Figma server over a local WebSocket relay: turn a selection into framework-aware code (reusing your components and tokens), or author frames, text, styles, variables, and whole screens back onto the canvas. 92 tools, any MCP client, no Dev Mode seat or paid tier.

๐Ÿ“ Architecture & Design0 views
betterhyq/mermaid-grammer-inspector-mcp

๐Ÿ“‡ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - A Model Context Protocol (MCP) server for validating Mermaid diagram syntax and providing comprehensive grammar checking capabilities

๐Ÿ“ Architecture & Design0 views
BV-Venky/excalidraw-architect-mcp

๐Ÿ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - Generate beautiful Excalidraw architecture diagrams with auto-layout, architecture-aware component styling, and stateful editing. 50+ technology mappings including databases, message queues, caches, and more. No API keys required.

๐Ÿ“ Architecture & Design0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.