钢笔墨水MCP服务器
一种模型上下文协议(MCP)服务器,为LLM提供有关钢笔墨水的专业知识,实现智能墨水搜索、颜色匹配和推荐。 阅读我关于创建此服务器的文章.
  
特性
此MCP服务器为LLM提供以下工具:
🔍 搜索工具
- search_inks_by_name:按名称或制造商模糊搜索油墨
- search_inks_by_color:使用RGB匹配查找与任何给定颜色相似的墨水
- get_inks_by-maker:列出特定制造商的所有油墨
📊 信息工具
- get_ink_details:获取特定油墨的全面信息
- 分析颜色:分析任何颜色并找到最匹配的墨水
🎨 推荐工具
- get_color_palette:在色彩理论支持下生成复杂的主题墨水调色板
- 13个预定义的主题(温暖、凉爽、大地、海洋、秋天、春天、夏天、冬天、柔和、充满活力、单色、日落、森林) - 色彩和谐生成(互补、类比、三重、分割互补) - 自定义十六进制调色板
快速启动
git clone https://github.com/ewilderj/inks-mcp.git
cd inks-mcp
npm install
npm run build
# List tools and run a sample query
npm run tools:list
npm run client -- --tool search_inks_by_name --args '{"query":"sailor blue","max_results":5}'安装
先决条件
- Node.js 18或更高版本
- npm或纱线
设置
# Clone the project
git clone https://github.com/ewilderj/inks-mcp.git
cd inks-mcp
# Install dependencies
npm install
# Build the project
npm run build用法
运行服务器
# Run once
npm start
# Development mode with auto-rebuild
npm run dev
# Watch mode for development
npm run watchMCP客户端配置
将此服务器添加到MCP客户端配置中:
{
"servers": {
"fountain-pen-ink-server": {
"type": "stdio",
"command": "node",
"args": ["
/dist/index.js"]
}
}
}CLI客户端(通用)
包含一个小脚本,用于从命令行练习任何工具:
# List tools
npm run tools:list
# Call a tool with inline JSON args
npm run client -- --tool search_inks_by_name --args '{"query":"sailor blue","max_results":5}'
# Call with arguments from a file
npm run client -- --tool get_color_palette --args-file examples/palette.complementary.json
# Change output mode (auto | content | raw)
npm run client -- --tool search_inks_by_color --args '{"color":"#2E5984"}' --output content脚本选项:
--list列出可用工具--tool要调用的工具名称--args ''内联JSON参数- `--args-file
` 带参数的JSON文件
- `--server
` 编译服务器的路径(默认:dist/index.js)
--timeout超时时间(毫秒)(默认值:10000)--output输出模式:自动|内容|原始(默认:自动)
可用工具
search_inks_by_name
使用模糊文本匹配搜索钢笔墨水。
参数: query (字符串), max_results (数字,可选)
示例输入:
{ "query": "sailor blue", "max_results": 10 }示例提示:
- 查找与“水手蓝”匹配的墨水;限制为10个结果。
search_inks_by_color
使用RGB颜色空间匹配查找与给定颜色相似的墨水。
参数: color (十六进制字符串), max_results (数字,可选)
示例输入:
{ "color": "#2E5984", "max_results": 15 }示例提示:
- 查找与颜色#2E5984相似的墨水;最多15个结果。
get_ink_details
获取特定油墨的完整信息。
参数: ink_id (字符串)
示例输入:
{ "ink_id": "diamine-oxblood" }示例提示:
- 显示“二胺牛血”的信息。
get_inks_by-maker
列出特定制造商的所有油墨。
参数: maker (字符串), max_results (数字,可选)
示例输入:
{ "maker": "diamine", "max_results": 25 }示例提示:
- 列出钻石油墨;限制25。
分析颜色
分析颜色并提供钢笔墨水上下文。
参数: color (十六进制字符串), max_results (数字,可选)
示例输入:
{ "color": "#2E5984", "max_results": 7 }示例提示:
- 分析#2E5984并显示最接近的前7种墨水。
get_color_palette
在色彩理论的支持下,生成主题或基于和谐的钢笔墨水调色板。
参数: theme (字符串), palette_size (数字,可选), harmony (字符串,可选)
支持的主题:
- 经典:温暖、凉爽、大地、海洋、秋天、春天
- 季节:夏季、冬季
- 心情:柔和、充满活力、单色
- 大气:日落,森林
和谐法则:互补、类比、三元、分裂互补
示例输入:
{ "theme": "sunset", "palette_size": 4 }示例提示:
- 为“日落”主题生成一个4墨水调色板。
有关更多示例,请参见 examples/USAGE.md.
数据源
服务器使用两个主要数据文件:
- ink-colors.json:包含RGB颜色值和基本墨水信息
- search.json:包含元数据,包括制造商、扫描日期和可搜索名称
所有墨水数据链接回 怀尔德写作 获取详细信息和图像。
发展
项目结构
inks-mcp/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── types.ts # TypeScript type definitions
│ └── utils.ts # Utility functions for color matching
├── data/
│ ├── ink-colors.json # RGB color data
│ └── search.json # Search metadata
├── dist/ # Compiled JavaScript (generated)脚本
npm run build:将TypeScript编译为JavaScriptnpm run start:运行已编译的服务器npm run dev:在一个命令中构建和运行npm run watch:监视更改并自动重建npm run client:运行通用CLI客户端npm run tools:list:通过CLI客户端列出可用工具
测试
运行全面的测试套件以验证所有功能:
npm test
# Run individual test categories
cd test
node test-enhanced-palette.js # Palette generation features
node test-mcp-palette.js # MCP protocol compliance
node test-schema.js # Tool schema validation
node test-harmony-direct.js # Color harmony algorithms对于手动、临时测试,请使用上面记录的CLI客户端。
测试套件包括:
- ✅ 13个预定义主题+4个和声规则
- ✅ 自定义调色板生成
- ✅ MCP协议合规性
- ✅ 错误处理和验证
- ✅ 颜色空间转换(BGR→RGB,RGB↔HSL)
颜色匹配算法
服务器使用RGB颜色空间中的欧几里德距离来查找相似的墨水:
distance = √[(r₁-r₂)² + (g₁-g₂)² + (b₁-b₂)²]未来的改进可能包括:
- LAB颜色空间,提高感知精度
- 钢笔墨水特性的加权颜色分量
- 语义色彩描述
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
本项目根据GNU通用公共许可证v3.0(GPL-3.0)获得许可。 有关详细信息,请参阅LICENSE文件。
