README
🚀 PaletteMCP - 十六进制颜色代码转名称转换器
PaletteMCP 是一个用 Go 语言编写的命令行工具,它可以接收十六进制颜色代码,并从预定义的 CSS 颜色列表中返回最匹配的颜色名称。输出以 JSON 格式提供,便于与其他脚本和系统集成。
🚀 快速开始
PaletteMCP 是一个强大且实用的工具,能够轻松将十六进制颜色代码转换为对应的颜色名称。以下是使用该工具的基本步骤和示例,助您快速上手。
✨ 主要特性
- 可将任何十六进制颜色代码转换为最接近的颜色名称。
- 以简洁、机器可读的 JSON 格式输出。
- 包含全面的标准 CSS 颜色列表。
- 拥有简单易用的命令行界面。
📦 安装指南
要使用此工具,您的系统需要安装 Go。
从源码构建
- 克隆仓库(如果您将其存储在 Git 仓库中)或直接使用现有文件。
- 构建可执行文件:
go build -o palette-mcp ./cmd/palette-mcp
下载预构建二进制文件
您可以直接从 GitHub 发布页面 下载适用于各种操作系统和架构的预构建二进制文件。
将 [VERSION] 替换为所需的发布版本(例如,v1.0.0)。
Linux / macOS
# 下载二进制文件(将 [OS] 和 [ARCH] 替换为您的系统信息,例如 linux_amd64、darwin_arm64)
wget https://github.com/kelvinzer0/PaletteMCP/releases/download/[VERSION]/palette-mcp_[OS]_[ARCH] -O palette-mcp
# 使其可执行
chmod +x palette-mcp
# 将其移动到系统 PATH 中的目录(例如,/usr/local/bin)
sudo mv palette-mcp /usr/local/bin/
Windows
- 从 GitHub 发布页面 下载合适的
.exe文件(例如,palette-mcp_windows_amd64.exe)。 - 将下载的文件重命名为
palette-mcp.exe。 - 将
palette-mcp.exe移动到系统PATH环境变量包含的目录中。常见的做法是在用户目录下创建一个bin文件夹(例如,C:\Users\YourUser\bin),并将其添加到PATH中。
💻 使用示例
基础用法
palette-mcp 既可以作为命令行工具使用,也可以作为 Gemini 模型上下文协议(MCP)服务器运行。
命令行工具使用方法
在终端中运行该工具,将十六进制颜色代码(可带或不带 # 前缀)作为参数传递。
./palette-mcp #ff6347
示例(命令行工具)
输入:
./palette-mcp #ff6347
输出:
{
"hex": "#ff6347",
"name": "Tomato",
"rgb": "rgb(255, 99, 71)"
}
高级用法
Gemini MCP 服务器集成
palette-mcp 还可以作为 MCP 服务器运行,将其功能暴露给 Gemini CLI。这使得 Gemini 模型能够发现并执行 palette-mcp 的工具。
运行 MCP 服务器
要以服务器模式启动 palette-mcp,使用 server 参数。
标准输入输出传输
这是默认的传输方法,当您使用 server 参数运行服务器时会使用此方法。
# 使用标准输入输出启动服务器
./palette-mcp server
HTTP 传输
您也可以使用 HTTP 传输运行服务器,这样可以指定自定义端口。
# 在默认端口 8080 启动
./palette-mcp serve-http
# 在自定义端口(例如 9000)启动
./palette-mcp serve-http 9000
SSE(服务器发送事件)传输
要以 SSE 模式运行服务器,使用 -sse 标志。这将启动一个流式传输事件的 HTTP 服务器。
# 在默认端口 8080 以 SSE 模式启动
./palette-mcp -sse
# 在自定义端口(例如 9000)以 SSE 模式启动
./palette-mcp -sse -port 9000
如果您想继续使用终端,建议在后台运行服务器:
./palette-mcp serve-http &
# 或者使用自定义端口:
./palette-mcp serve-http 9000 &
# 对于 SSE 模式:
./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:回显提供的消息。(用于演示的示例工具)- 参数:
message(字符串)
- 参数:
get_color_info:根据十六进制代码检索颜色信息。- 参数:
hexCode(字符串,例如#FF0000)
- 参数:
示例 Gemini CLI 使用(概念性)
设置完成后,您可以通过 Gemini CLI 与工具进行交互。例如,您可以询问:
What is the name of the color #00BFFF?
如果 Gemini 模型决定使用 get_color_info 工具,它将执行该工具并提供结果。
与 Forge MCP 集成
PaletteMCP 可以轻松集成到 forge mcp 工作流中,以提供颜色名称查找功能。您可以在 forge mcp 配置中添加 palette-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的十六进制颜色代码的占位符。双花括号{{...}}表示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
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 值之间的欧几里得距离来确定“最接近”的颜色。距离最小的颜色被认为是最匹配的颜色。
📚 详细文档
颜色参考
以下表格列出了用于匹配的所有命名颜色。 | 颜色名称 | 十六进制代码 | 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 许可证。
💪 贡献指南
欢迎贡献代码!如果您有改进建议,请随时提交拉取请求或打开问题。
Scan to join WeChat group