🚀 PaletteMCP - カラーコードから色名への変換ツール
PaletteMCPは、Go言語で書かれたコマンドラインツールです。16進数のカラーコードを入力として受け取り、事前定義されたCSSカラーのリストから最も近い色名を返します。出力はJSON形式で提供されるため、他のスクリプトやシステムとの統合が容易です。
✨ 主な機能
- 任意の16進数カラーコードを最も近い色名に変換します。
- クリーンで機械可読なJSON形式で出力します。
- 標準的なCSSカラーの包括的なリストを含んでいます。
- シンプルで使いやすいコマンドラインインターフェースを備えています。
📦 インストール
このツールを使用するには、システムにGoがインストールされている必要があります。
- リポジトリをクローンする(Gitリポジトリにある場合)か、既存のファイルを使用します。
- 実行ファイルをビルドします。
go build -o palette-mcp ./cmd/palette-mcp
事前ビルド済みバイナリのダウンロード
様々なオペレーティングシステムとアーキテクチャ用の事前ビルド済みバイナリは、GitHub Releasesページから直接ダウンロードできます。
[VERSION] を希望するリリースバージョン(例:v1.0.0)に置き換えてください。
Linux / macOS
wget https://github.com/kelvinzer0/PaletteMCP/releases/download/[VERSION]/palette-mcp_[OS]_[ARCH] -O palette-mcp
chmod +x palette-mcp
sudo mv palette-mcp /usr/local/bin/
Windows
- GitHub Releasesページから適切な
.exe ファイルをダウンロードします(例:palette-mcp_windows_amd64.exe)。
- ダウンロードしたファイルを
palette-mcp.exe にリネームします。
palette-mcp.exe をシステムの PATH 環境変数に含まれるディレクトリに移動します。一般的な方法は、ユーザーディレクトリに bin フォルダを作成し(例:C:\Users\YourUser\bin)、それを PATH に追加することです。
💻 使用例
基本的な使用法
palette-mcp はコマンドラインツールとして、またはGemini Model Context Protocol (MCP) サーバーとして実行できます。
コマンドラインツールとしての使用
ターミナルからツールを実行し、16進数のカラーコード(# プレフィックス有りまたは無し)を引数として渡します。
./palette-mcp
コマンドラインツールの例
入力:
./palette-mcp
出力:
{
"hex": "#ff6347",
"name": "Tomato",
"rgb": "rgb(255, 99, 71)"
}
高度な使用法
Gemini MCPサーバーとしての統合
palette-mcp はMCPサーバーとしても実行でき、その機能をGemini CLIに公開します。これにより、Geminiモデルが palette-mcp のツールを検出して実行できるようになります。
MCPサーバーの実行
palette-mcp をサーバーモードで起動するには、server 引数を使用します。
Stdioトランスポート
これはデフォルトのトランスポート方法で、server 引数でサーバーを実行すると使用されます。
./palette-mcp server
HTTPトランスポート
カスタムポートを指定できるHTTPトランスポートでサーバーを実行することもできます。
./palette-mcp serve-http
./palette-mcp serve-http 9000
SSE (Server-Sent Events) トランスポート
サーバーをSSEモードで実行するには、-sse フラグを使用します。これにより、イベントをストリーミングするHTTPサーバーが起動します。
./palette-mcp -sse
./palette-mcp -sse -port 9000
ターミナルを引き続き使用したい場合は、サーバーをバックグラウンドで実行することをお勧めします。
./palette-mcp serve-http &
./palette-mcp serve-http 9000 &
./palette-mcp -sse &
./palette-mcp -sse -port 9000 &
Gemini CLIの設定
Gemini CLIが palette-mcp サーバーに接続できるようにするには、settings.json ファイルに以下の設定を追加します。このファイルはグローバルに ~/.gemini/settings.json またはプロジェクトの .gemini/settings.json で見つけることができます。
{
"theme": "ANSI Light",
"selectedAuthType": "oauth-personal",
"mcpServers": {
"get-color-info": {
"command": "/usr/local/bin/palette-mcp",
"args":["server"]
}
}
}
paletteMcpServer: これはGemini CLI内でMCPサーバーに付ける名前です。任意の説明的な名前を選択できます。
httpUrl: palette-mcp サーバーがリッスンしているURLです。カスタムポートでサーバーを起動した場合は、ポートを調整してください(例:http://localhost:9000)。
timeout: Gemini CLIがサーバーからの応答を待つ最大時間(ミリ秒)です。
利用可能なツール
設定が完了し、サーバーが実行されると、Gemini CLIは以下のツールを検出します。
echo: 提供されたメッセージをエコーバックします。(デモ用のサンプルツール)
get_color_info: 16進数のカラーコードから色に関する情報を取得します。
- パラメータ:
hexCode(文字列、例:#FF0000)
Gemini CLIの使用例(概念的)
設定が完了した後、Gemini CLIを介してツールと対話できます。たとえば、以下のように質問することができます。
What is the name of the color #00BFFF?
Geminiモデルが get_color_info ツールを使用することを決定した場合、それを実行して結果を提供します。
Forge MCPとの統合
PaletteMCP は forge mcp ワークフローに簡単に統合でき、色名の検索機能を提供します。palette-mcp を forge mcp 設定内のカスタムコマンドとして追加できます。
PaletteMCPをForge MCPに追加する
forge mcp add コマンドを使用するか、.mcp.json ファイルを手動で編集することで、palette-mcp を forge mcp 設定に追加できます。
forge mcp add を使用する(コマンドライン)
# 例:palette-mcpを 'colorname' という名前のコマンドとして追加する
forge mcp add --name colorname --command /path/to/palette-mcp --args "#{{hex_code}}"
/path/to/palette-mcp を palette-mcp 実行ファイルの実際の絶対パスに置き換えてください。
#{{hex_code}} は、forge mcp が palette-mcp に渡す16進数カラーコードのプレースホルダーです。二重の中括弧 {{...}} は forge mcp 内の変数または式を示します。
手動での .mcp.json 設定
.mcp.json ファイルを手動で作成または変更することもできます。このファイルはローカルプロジェクトディレクトリまたはユーザー固有の設定にあります。
{
"mcpServers": {
"colorname_tool": {
"command": "/usr/local/bin/palette-mcp",
"args": ["server"],
"description": "Converts a hex color code to its closest named color."
}
}
}
colorname_tool: これは forge mcp を介して palette-mcp を呼び出すために使用する名前です(例:forge mcp run colorname_tool #RRGGBB)。
command: palette-mcp 実行ファイルの絶対パスです。
args: palette-mcp に渡す引数の配列です。"#{{hex_code}}" は forge mcp からの動的入力を渡すための一般的なパターンです。
Forge MCPの使用例
設定が完了すると、forge mcp ワークフロー内で palette-mcp を使用できます。
# 設定された colorname_tool を16進数コードで実行する
forge mcp run colorname_tool "#00BFFF"
# マルチエージェントワークフローで出力を使用する例(概念的)
# 仮定:'forge mcp run colorname_tool' がJSONを出力する
COLOR_INFO=$(forge mcp run colorname_tool "#FF0000")
COLOR_NAME=$(echo $COLOR_INFO | jq -r '.name')
echo "The color is: $COLOR_NAME"
- 注意:
jq コマンドはコマンドライン用の強力なJSONプロセッサーです。別途インストールする必要がある場合があります(macOSでは brew install jq、Debian/Ubuntuでは sudo apt-get install jq)。
この統合により、forge mcp はより大規模な自動化やマルチエージェントタスクの一部として、PaletteMCP を色コードから色名への変換に利用できます。
🔧 技術詳細
このツールは、入力された色のRGB値と事前定義されたリスト内の各色のRGB値とのユークリッド距離を計算することで、「最も近い」色を求めます。距離が最も小さい色が最も近い一致と見なされます。
📚 ドキュメント
色の参照
以下の表には、一致に使用されるすべての名前付き色がリストされています。
| 色名 |
16進数コード |
RGB |
| aliceblue |
#f0f8ff |
240, 248, 255 |
| antiquewhite |
#faebd7 |
250, 235, 215 |
| aqua |
#00ffff |
0, 255, 255 |
| aquamarine |
#7fffd4 |
127, 255, 212 |
| azure |
#f0ffff |
240, 255, 255 |
| beige |
#f5f5dc |
245, 245, 220 |
| bisque |
#ffe4c4 |
255, 228, 196 |
| black |
#000000 |
0, 0, 0 |
| blanchedalmond |
#ffebcd |
255, 235, 205 |
| blue |
#0000ff |
0, 0, 255 |
| blueviolet |
#8a2be2 |
138, 43, 226 |
| brown |
#a52a2a |
165, 42, 42 |
| burlywood |
#deb887 |
222, 184, 135 |
| cadetblue |
#5f9ea0 |
95, 158, 160 |
| chartreuse |
#7fff00 |
127, 255, 0 |
| chocolate |
#d2691e |
210, 105, 30 |
| coral |
#ff7f50 |
255, 127, 80 |
| cornflowerblue |
#6495ed |
100, 149, 237 |
| cornsilk |
#fff8dc |
255, 248, 220 |
| crimson |
#dc143c |
220, 20, 60 |
| cyan |
#00ffff |
0, 255, 255 |
| darkblue |
#00008b |
0, 0, 139 |
| darkcyan |
#008b8b |
0, 139, 139 |
| darkgoldenrod |
#b8860b |
184, 134, 11 |
| darkgray |
#a9a9a9 |
169, 169, 169 |
| darkgreen |
#006400 |
0, 100, 0 |
| darkkhaki |
#bdb76b |
189, 183, 107 |
| darkmagenta |
#8b008b |
139, 0, 139 |
| darkolivegreen |
#556b2f |
85, 107, 47 |
| darkorange |
#ff8c00 |
255, 140, 0 |
| darkorchid |
#9932cc |
153, 50, 204 |
| darkred |
#8b0000 |
139, 0, 0 |
| darksalmon |
#e9967a |
233, 150, 122 |
| darkseagreen |
#8fbc8f |
143, 188, 143 |
| darkslateblue |
#483d8b |
72, 61, 139 |
| darkslategray |
#2f4f4f |
47, 79, 79 |
| darkturquoise |
#00ced1 |
0, 206, 209 |
| darkviolet |
#9400d3 |
148, 0, 211 |
| deeppink |
#ff1493 |
255, 20, 147 |
| deepskyblue |
#00bfff |
0, 191, 255 |
| dimgray |
#696969 |
105, 105, 105 |
| dodgerblue |
#1e90ff |
30, 144, 255 |
| firebrick |
#b22222 |
178, 34, 34 |
| floralwhite |
#fffaf0 |
255, 250, 240 |
| forestgreen |
#228b22 |
34, 139, 34 |
| fuchsia |
#ff00ff |
255, 0, 255 |
| gainsboro |
#dcdcdc |
220, 220, 220 |
| ghostwhite |
#f8f8ff |
248, 248, 255 |
| gold |
#ffd700 |
255, 215, 0 |
| goldenrod |
#daa520 |
218, 165, 32 |
| gray |
#808080 |
128, 128, 128 |
| green |
#008000 |
0, 128, 0 |
| greenyellow |
#adff2f |
173, 255, 47 |
| honeydew |
#f0fff0 |
240, 255, 240 |
| hotpink |
#ff69b4 |
255, 105, 180 |
| indianred |
#cd5c5c |
205, 92, 92 |
| indigo |
#4b0082 |
75, 0, 130 |
| ivory |
#fffff0 |
255, 255, 240 |
| khaki |
#f0e68c |
240, 230, 140 |
| lavender |
#e6e6fa |
230, 230, 250 |
| lavenderblush |
#fff0f5 |
255, 240, 245 |
| lawngreen |
#7cfc00 |
124, 252, 0 |
| lemonchiffon |
#fffacd |
255, 250, 205 |
| lightblue |
#add8e6 |
173, 216, 230 |
| lightcoral |
#f08080 |
240, 128, 128 |
| lightcyan |
#e0ffff |
224, 255, 255 |
| lightgoldenrodyellow |
#fafad2 |
250, 250, 210 |
| lightgray |
#d3d3d3 |
211, 211, 211 |
| lightgreen |
#90ee90 |
144, 238, 144 |
| lightpink |
#ffb6c1 |
255, 182, 193 |
| lightsalmon |
#ffa07a |
255, 160, 122 |
| lightseagreen |
#20b2aa |
32, 178, 170 |
| lightskyblue |
#87cefa |
135, 206, 250 |
| lightslategray |
#778899 |
119, 136, 153 |
| lightsteelblue |
#b0c4de |
176, 196, 222 |
| lightyellow |
#ffffe0 |
255, 255, 224 |
| lime |
#00ff00 |
0, 255, 0 |
| limegreen |
#32cd32 |
50, 205, 50 |
| linen |
#faf0e6 |
250, 240, 230 |
| magenta |
#ff00ff |
255, 0, 255 |
| maroon |
#800000 |
128, 0, 0 |
| mediumaquamarine |
#66cdaa |
102, 205, 170 |
| mediumblue |
#0000cd |
0, 0, 205 |
| mediumorchid |
#ba55d3 |
186, 85, 211 |
| mediumpurple |
#9370db |
147, 112, 219 |
| mediumseagreen |
#3cb371 |
60, 179, 113 |
| mediumslateblue |
#7b68ee |
123, 104, 238 |
| mediumspringgreen |
#00fa9a |
0, 250, 154 |
| mediumturquoise |
#48d1cc |
72, 209, 204 |
| mediumvioletred |
#c71585 |
199, 21, 133 |
| midnightblue |
#191970 |
25, 25, 112 |
| mintcream |
#f5fffa |
245, 255, 250 |
| mistyrose |
#ffe4e1 |
255, 228, 225 |
| moccasin |
#ffe4b5 |
255, 228, 181 |
| navajowhite |
#ffdead |
255, 222, 173 |
| navy |
#000080 |
0, 0, 128 |
| oldlace |
#fdf5e6 |
253, 245, 230 |
| olive |
#808000 |
128, 128, 0 |
| olivedrab |
#6b8e23 |
107, 142, 35 |
| orange |
#ffa500 |
255, 165, 0 |
| orangered |
#ff4500 |
255, 69, 0 |
| orchid |
#da70d6 |
218, 112, 214 |
| palegoldenrod |
#eee8aa |
238, 232, 170 |
| palegreen |
#98fb98 |
152, 251, 152 |
| paleturquoise |
#afeeee |
175, 238, 238 |
| palevioletred |
#db7093 |
219, 112, 147 |
| papayawhip |
#ffefd5 |
255, 239, 213 |
| peachpuff |
#ffdab9 |
255, 218, 185 |
| peru |
#cd853f |
205, 133, 63 |
| pink |
#ffc0cb |
255, 192, 203 |
| plum |
#dda0dd |
221, 160, 221 |
| powderblue |
#b0e0e6 |
176, 224, 230 |
| purple |
#800080 |
128, 0, 128 |
| rebeccapurple |
#663399 |
102, 51, 153 |
| red |
#ff0000 |
255, 0, 0 |
| rosybrown |
#bc8f8f |
188, 143, 143 |
| royalblue |
#4169e1 |
65, 105, 225 |
| saddlebrown |
#8b4513 |
139, 69, 19 |
| salmon |
#fa8072 |
250, 128, 114 |
| sandybrown |
#f4a460 |
244, 164, 96 |
| seagreen |
#2e8b57 |
46, 139, 87 |
| seashell |
#fff5ee |
255, 245, 238 |
| sienna |
#a0522d |
160, 82, 45 |
| silver |
#c0c0c0 |
192, 192, 192 |
| skyblue |
#87ceeb |
135, 206, 235 |
| slateblue |
#6a5acd |
106, 90, 205 |
| slategray |
#708090 |
112, 128, 144 |
| snow |
#fffafa |
255, 250, 250 |
| springgreen |
#00ff7f |
0, 255, 127 |
| steelblue |
#4682b4 |
70, 130, 180 |
| tan |
#d2b48c |
210, 180, 140 |
| teal |
#008080 |
0, 128, 128 |
| thistle |
#d8bfd8 |
216, 191, 216 |
| tomato |
#ff6347 |
255, 99, 71 |
| turquoise |
#40e0d0 |
64, 224, 208 |
| violet |
#ee82ee |
238, 130, 238 |
| wheat |
#f5deb3 |
245, 222, 179 |
| white |
#ffffff |
255, 255, 255 |
| whitesmoke |
#f5f5f5 |
245, 245, 245 |
| yellow |
#ffff00 |
255, 255, 0 |
| yellowgreen |
#9acd32 |
154, 205, 50 |
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
コントリビューション
コントリビューションは大歓迎です!改善提案がある場合は、プルリクエストを送信するか、イシューを開いてください。