这是一个使用ImageMagick和darktable进行图像转换的MCP(模型上下文协议)服务器。
此服务器提供了将DNG(数字负片)RAW图像文件转换为WebP格式的工具,可以使用ImageMagick或darktable作为转换后端。该服务器通过标准I/O传输实现了MCP协议,使其与Claude Desktop等MCP客户端兼容。
该项目既是一个功能工具,也是一个学习资源,适用于对创建MCP服务器感兴趣的人员。虽然目前专注于DNG到WebP的转换,但我们计划随着时间的推移扩展其功能,以支持更多图像格式和操作。我们发布这个项目作为一个起点,分享我们的MCP实现方法,并提供一个可工作的示例供他人学习。
您需要安装以下至少一种图像转换器:
convert7 或 magicksudo apt install imagemagickconvert7 -version 或 magick -versionsudo apt install darktabledarktable-cli --versioncd mcp-imagemagick
cargo build --release
二进制文件将在target/release/mcp-imagemagick中可用。
在您的MCP客户端配置中添加服务器。对于Claude Desktop,在设置中添加:
{
"mcpServers": {
"imagemagick": {
"command": "/path/to/mcp-imagemagick",
"args": [],
"env": {}
}
}
}
将DNG文件转换为具有无损压缩的WebP格式。
参数:
input_path(字符串,必需):DNG文件路径output_path(字符串,必需):WebP输出文件路径converter(字符串,可选):使用的转换器
"auto"(默认):自动选择最佳可用转换器"imagemagick":使用ImageMagick(需要convert7或magick)"darktable":使用darktable-cli示例用法:
{
"tool": "convert_dng_to_webp",
"arguments": {
"input_path": "/path/to/photo.DNG",
"output_path": "/path/to/output.webp",
"converter": "auto"
}
}
检查系统上可用的哪些图像转换器。
参数: 无需参数
返回值: 可用转换器及其状态列表
当使用"auto"转换器选择时:
注意:ImageMagick可能无法在所有系统上直接支持DNG文件。自动转换器会在ImageMagick失败时自动回退到darktable。
webp:lossless=true - 无损压缩webp:exact=true - 保留精确像素值webp:method=6 - 最大压缩努力webp:partition-limit=0 - 不设分区限制服务器包括全面的错误处理:
使用RUST_LOG环境变量控制日志记录的详细程度:
# 只显示错误
RUST_LOG=error mcp-imagemagick
# 显示信息性消息
RUST_LOG=info mcp-imagemagick
# 显示详细的调试信息
RUST_LOG=debug mcp-imagemagick
运行集成测试:
cd mcp-imagemagick
python3 test_mcp.py
mcp-imagemagick/
├── src/
│ ├── main.rs # 入口点,带有panic处理器
│ ├── server.rs # MCP服务器实现
│ ├── transport.rs # 同步stdio传输
│ ├── handlers/ # 请求处理器
│ │ └── image.rs # 图像转换工具
│ └── converters/ # 转换器实现
│ ├── mod.rs # 自动转换器及回退
│ ├── imagemagick.rs # ImageMagick转换器
│ └── darktable.rs # darktable转换器
├── docs/ # 额外文档
└── test_m_ cp.py # 集成测试
MIT许可证 - 详情见LICENSE文件。
本项目继承了ImageMagick的安全注意事项。请注意:
policy.xml)是否正确配置有关详细的安全信息,请参阅SECURITY.md和ImageMagick的安全策略。
本项目使用以下第三方软件:
注意:本项目通过这些工具的命令行界面调用它们,并不分发或合并其源代码。