rnv-color-mcp について
rnv-color-mcpは、ClaudeなどのMCPクライアント向けのリモート色処理サーバーです。混色、変換、配色生成、パレット管理に対応し、色を特定できない場合は推測せず処理を拒否します。
主な機能
- 01複数モードで最大12色を混色
- 02複数の色形式を変換
- 03配色パターンを生成
- 04色差とコントラストを測定
- 05明度調整と色域チェック
- 06パレットの保存と取得
活用シーン
- 01顔料物理モデルによる色の混合
- 02テキストのWCAGアクセシビリティコントラスト確認
- 03プロジェクト用パレットの作成と再利用
MCP 対応
リモートのStreamable HTTP MCPエンドポイントを通じて、色処理ツールをクライアントに公開します。OAuth 2.1と、ツールごとのread・writeスコープを設定できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://rnvizion-rnv-color-mcp.hf.space/mcpclaude mcp add --transport http rnvizion-rnv-color https://rnvizion-rnv-color-mcp.hf.space/mcp{"mcpServers":{"rnvizion-rnv-color":{"type":"http","url":"https://rnvizion-rnv-color-mcp.hf.space/mcp"}}}Cursor で開く{"servers":{"rnvizion-rnv-color":{"type":"http","url":"https://rnvizion-rnv-color-mcp.hf.space/mcp"}}}VS Code で開く{"mcpServers":{"rnvizion-rnv-color":{"type":"http","url":"https://rnvizion-rnv-color-mcp.hf.space/mcp"}}}{"mcpServers":{"rnvizion-rnv-color":{"serverUrl":"https://rnvizion-rnv-color-mcp.hf.space/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
10| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| mode | string | いいえ | |
| colors | array | はい | |
| weights | any | いいえ |
詳細
title: RNV Color MCP emoji: 🎨 colorFrom: gray colorTo: yellow sdk: docker app_port: 7860 pinned: false short_description: カラーワークフロー用 MCP サーバー
RNV Color MCP
色のワークフロー全体に対応するリモート MCP サーバーです。 Claude(または任意の MCP クライアント)や、MCP に対応するほかのあらゆるものから、自然な言葉で呼び出して、 色の混合、変換、調和、パレットの保存ができます。
これを作った理由
色に関するロジックは、すでに私のデスクトップスイートにありました。ミキサー、パレットマネージャー、ピッカーです。新しいプロジェクトごとに作り直すのではなく、エンジンを一度だけ取り出して、単一のサーバーとして公開しました。今日、Claude との会話から呼び出され、明日はファッションデザインアプリから同じバックエンドが呼び出されます。エンジンは一度作れば、どちらからも利用できます。
根底にあるのは、LLM との協働に関する小さな持論です。モデルは「何を」求めているかを判断するのは得意ですが、正確な計算は苦手です。そこでモデルがツールと意図を選び、正確な値はツールが受け持ちます。サーバーは結果を解決するか、処理を拒否します。色を推測することはありません。
できること
| ツール | できること |
|---|---|
mix_colors | 最大 12 色を混ぜます。モードは rgb、hsv、lab(デジタル)、paint(Kubelka-Munk の顔料物理モデル)、ryb(画家の色相環)、cmy(減法混色)です。 |
convert_color | hex、rgb、hsv、hsl、lab の間で変換します。 |
place_lightness | 色相と彩度を保ったまま、明度を設定します。同じ色相で L* の値が 2 つあれば、明るい色と暗い色のペアになります。色域外の値はクリップせずに拒否し、8 ビット量子化誤差を報告します。 |
generate_harmony | 補色、類似色、三色配色、分裂補色、四角形/正方形、モノクロマティック、コンパウンドを生成します。 |
color_difference | 2 色間の知覚的な差(Delta-E、CIEDE2000 または CIE76)を計算します。 |
contrast_check | アクセシブルなテキスト向けに、WCAG コントラスト比と AA/AAA の合否を確認します。 |
transform_text | 11 種類の厳密な大文字・小文字変換(UPPERCASE、camelCase、snake_case、…)を行います。 |
save_palette / list_palettes / get_palette | パレットに名前を付けて、後から呼び出せます。再起動後も保持されます。 |
色の入力には、hex(#d2bc93)、CSS 名(red)、RNV ブランド名
(brand gold、near-black)、または保存済みパレットの参照(Spring line、あるいは 2 つ目の色見本を指定する Spring line:2)を使用できます。ブランド名と CSS 名が重複する場合はブランド名が優先されます(gold、blue、teal)。共通の CSS 名を使うには css:blue を指定します。
30 秒で接続
ホスト型サーバーなので、インストールは不要です。Claude で 設定 → コネクタ → カスタムコネクタを追加 を選択し、次を貼り付けます。
https://rnvizion-rnv-color-mcp.hf.space/mcp
認証欄は空のまま追加し、チャットで + メニューを開いて有効にします。
試してみる
接続したら、そのまま話しかけてください。
「Spring line という名前でパレットを保存して。near-black と brand gold を入れて。」 「Spring line のパレットを呼び出して、アウター向けの補色アクセントを 3 色提案して。」 「crimson と royalblue を、本物の顔料のように混ぜて。」
最初の呼び出しで保存し、2 回目は get_palette → generate_harmony を組み合わせます。3 回目は
Kubelka-Munk の塗料モデルを実行するため、混合光のように平均化されるのではなく、実際の顔料を混ぜたときのように色が暗くなります。
認証
このサーバーは、ツールごとのスコープが適用される OAuth 2.1 リソースサーバー認証を実装しています。公開エンドポイントでは認証が無効になっているため、設定なしで URL に接続できます。
認証が有効な場合(RNV_AUTH=1 と鍵ソースの指定)、サーバーは発行者、オーディエンス、有効期限、署名に基づいてベアラートークンを検証します。また、RFC 9728 に準拠した保護対象リソースのメタデータを /.well-known/oauth-protected-resource/mcp で提供し、401 応答では仕様に準拠した WWW-Authenticate チャレンジを返します。さらに、2 つのスコープを適用します。read はすべての読み取り専用ツールを対象とし、write は変更を加える唯一のツールである save_palette を対象とします。write スコープのないトークンには、ツール一覧に save_palette が表示されません。スコープ外のツールは拒否するのではなく非表示にするため、利用できないスコープの先に何があるかが漏れることはありません。
適用状況はテストスイートで検証され、プッシュのたびに CI で実行されます(このファイル上部のステータスバッジを参照)。テストでは、トークン検証の各ケース(未指定、不正な形式、発行者の不一致、オーディエンスの不一致、有効期限切れ、有効)と、実際の HTTP を使ったエンドツーエンドのスコープ適用を検証します。テストスイートは独自に鍵を生成するため、認証情報は必要ありません。認証以外にも、エンジンの一部をテストで固定しています。ブランド語彙のミラー、コントラスト・差分・配置の仕様、セレクターと入力の拒否、色名の解決、各ミックスモードの計算内容、HSV と HSL の変換、パレットの書き込み経路、ストアの耐久性が対象です。Harmony とテキストの出力はスモークテストスクリプトで確認しますが、まだ回帰テストの対象ではありません。
自己発行の開発用鍵から実際の ID プロバイダーに切り替える際に必要なのは、コードの変更ではなく設定です。RNV_AUTH_JWKS_URI をプロバイダーの JWKS エンドポイントに設定し、発行者とオーディエンスを一致させてください。
| 変数 | 用途 |
|---|---|
RNV_AUTH | 認証の切り替え。1/true/yes/on で認証が有効になり、未設定の場合は無効です。 |
RNV_AUTH_JWKS_URI | プロバイダーの JWKS エンドポイント。これか RNV_AUTH_PUBLIC_KEY を使用してください。 |
RNV_AUTH_PUBLIC_KEY | 静的な PEM 公開鍵。自己発行した鍵ペアを使った開発用です。 |
RNV_AUTH_ISSUER | 期待するトークン発行者。認可サーバーとしても公開されます。 |
RNV_AUTH_AUDIENCE | 期待するトークンオーディエンス。/mcp パスに紐付けられます。 |
RNV_AUTH_BASE_URL | サーバーのベース URL。/mcp は含めません。 |
RNV_AUTH が有効で鍵ソースが設定されていない場合、サーバーは保護されない状態で起動するのではなく、起動を拒否します。
自分で実行する
pip install -r requirements.txt
python server.py # Streamable HTTP on $PORT (default 7860)
pip install -r tests/requirements-dev.txt
python -m pytest # the suite; needs no credentials
python tests/server_test.py # smoke: exercises every tool in-process
パレットをプライベートな Hugging Face Dataset に書き込み、永続的に保存するには、HF_TOKEN を設定してください。テストスイートと 2 つのスモークテストスクリプトは HF_TOKEN を無視し、一時的なストアを使用するため、実際の Dataset に書き込むことはありません。
コピーを実行する場合
コードはMITライセンスです。自由に再ビルド、ホスティング、変更してかまいません。むしろ、ぜひそうしてください。ただし、ライセンスで提供できるのは環境ではありません。
一部の機能は、コードだけでなくデプロイの設定に依存します。
- パレットの永続化には、
HF_TOKENと書き込み可能なDatasetが必要です。これがない場合、保存先はコンテナのローカル作業コピーになり、コンテナとともに消失します。save_paletteは、処理を妨げたステップを示すdurable_reasonとともにdurable: falseを返します。 - スコープ付き認可には、
RNV_AUTHと設定済みの発行者が必要です。未設定の場合、サーバーはオープンな状態で動作します。公開デモには適切ですが、それ以外の用途には適していません。 - 外部からデータを取得する機能には、外部ネットワークへのアクセスが必要です。
これらのいずれかを欠いた再ビルドでは、通常、エラーが明確に表示されることなく、成功を返して結果を破棄します。 障害なら気づけるため、それよりも厄介です。
ですから、コピーを実行していて挙動がおかしい場合は、コードを確認する前に環境を確認し、問題を報告する前に正規デプロイと照らし合わせてください。
正規エンドポイント: https://rnvizion-rnv-color-mcp.hf.space/mcp
正規ソース: https://github.com/RNVizion/rnv-color-mcp
別のURLで提供されているコピーは、古かったり、変更されていたり、設定が異なっていたりする場合があります。それでも問題はなく、許可されています。ただし、それはこのサービスではありません。
ツールは解決するか、拒否するかのどちらかで、推測はしません。コピーがその約束を守れるのは、まず基盤となる環境を確認した場合に限られます。
補足
- ブランドカラーはミラーであり、所有しているわけではありません。 語彙は
engine/brand_vocab.pyにあり、RNVizion/rnv-brandのengine/brand.pyをミラーしています。差異が検出された場合は修正されます。意図的にローカルに保持しています。resolve_colorはホットパスであり、そこで取得処理を行うなら、取得に失敗した場合の挙動を決める必要があります。フェイルクローズにすればサーバーはすべての色を拒否し、フォールバックするなら結局ローカルコピーが必要になり、推測するなら上記の約束はすでに破られています。レジスターが2026-08-17にローカル名を廃止したため、識別子はアップストリームのものと一致しています。チェックでは値を比較します。スケジュールされたジョブが毎日ミラーとアップストリームを比較しますが、何もゲートしません。レジスターとその理由は、rnv-brandのBRAND_COLORS.mdに記載されています。 - エンジンに依存関係はありません。 色の計算、ハーモニー、テキストのロジックは、標準ライブラリだけを使った純粋な実装で、デスクトップアプリからQt依存を取り除いて移植されています。
fastmcpが必要なのはサーバーレイヤーだけです。 - 設計上、誠実に動作します。 不明な色名は推測せず、拒否します。検証できないトークンは理由とともに拒否します。どちらのレイヤーにも同じ原則が適用されます。
技術スタック
Python · FastMCP(Streamable HTTP)· Hugging Face Spaces(Docker)· 永続的なパレット保存用のhuggingface_hub。
Christian "RNVizion" Smithが開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。