
如何把 darktable-mcp 接入 Claude Code让 AI 助手驱动 darktable 渲染 RAW【免费下载链接】darktabledarktable is an open source photography workflow application and raw developer项目地址: https://gitcode.com/GitHub_Trending/da/darktabledarktable 4.10 引入了darktable-mcp一个无头headless的 Model Context Protocol 服务器通过 stdioJSON-RPC 2.0把 darktable 的 RAW 处理引擎暴露给 AI 代理。它是darktable-cli的兄弟命令行二进制直接链接libdarktable因此拥有真实的模块内省、进程内 pixelpipe 和原生的 styles/history不需要手改 XMP。本文的任务是把它注册进 Claude Code让 AI 助手直接用自然语言驱动 darktable 渲染 RAW、测图像统计并说明渲染结果会如何写回你的图片库。先了解 darktable-mcp 的通信方式darktable-mcp是标准的 stdio MCP 服务器所以 Claude Code 这类客户端可以直接以子进程方式拉起它。两个特性决定了它适合被客户端接管stdout 只承载 JSON-RPC 消息darktable 自身的日志被重定向到 stderr客户端可以干净地走协议协议同时接受 newline-delimited JSON默认和Content-Length:两种帧格式支持的方法有initialize、tools/list、tools/call、ping、shutdown等。准备构建 darktable-mcp 二进制darktable-mcp默认参与构建CMake 选项USE_MCP默认ON可用-DUSE_MCPOFF或./build.sh --disable-mcp关闭。它依赖json-glib-1.0而这本来就是 darktable 的依赖所以正常构建 darktable 时不需要额外装包。构建整棵树./build.sh或者只构建这一个目标cmake -B build . cmake --build build --target darktable-mcp -j构建完成后二进制落在build/bin/darktable-mcp。给服务器一个独立的配置/缓存目录darktable 会对它打开的library.db/data.db加 PID 锁。README 的建议是给darktable-mcp一个自己的配置/缓存目录这样它锁定的绝不是 GUI 正在使用的那个库两者可以同时运行mkdir -p ~/.config/darktable-mcp这个目录同时也是服务器自己的独立目录catalog——往里import_images之后库工具就能看到这些图片。在 Claude Code 中注册服务器按 src/mcp/README.md 给出的命令注册。下面命令中的/path/to/build/bin/darktable-mcp是占位路径替换为你构建树中实际的二进制位置默认就是build/bin/darktable-mcpclaude mcp add darktable -- \ /path/to/build/bin/darktable-mcp \ --core --configdir ~/.config/darktable-mcp \ --cachedir ~/.config/darktable-mcp/cache参数说明均来自 README--core之后的所有内容原样转发给dt_init因此darktable/darktable-cli支持的核心参数--configdir、--cachedir、--library、--conf keyvalue、-d domain等都能用--configdir让服务器使用该目录下的library.db即它自己的目录而不是默认的空目录。默认注册作用域是 local仅当前项目加-s user对所有项目生效加-s project则写入共享的.mcp.json。注册后可以随时用claude mcp remove darktable移除。验证接入是否成功用以下任一方式确认服务器已注册claude mcp list或在一次 Claude Code 会话里输入/mcp查看。接入完成后就可以直接用自然语言驱动渲染README 给出的两个示例请求Using darktable, render this raw and show itmeasure image_stats with agx target_black at 0.008 vs 0.0008render工具返回 MCP image contentbase64 PNGimage_stats返回每个通道的{min, max, mean, p1, p50, p99, clip_lo, clip_hi}。README 中的image_stats调用示例文档示例input.path换成你自己的 RAW 文件{jsonrpc:2.0,id:2,method:tools/call,params:{ name:image_stats, arguments:{ input:{path:/photos/DSCF0001.RAF}, width:512,height:512, disable_tone_mappers:true, stack:[{operation:agx, params:{curve_target_display_black_ratio:0.0008}, enabled:true}]}}}其结果的文本字段是类似{width:512,height:341,channels:{g:{p1:6,p50:71,…},…}}的 JSON文档示例输出数值随图片不同而不同。注意 AI 的渲染会写回图片这是驱动真实图片库时最需要理解的一点带stack的render会修改图片。对imgid输入stack会成为该图片的 historyXMP sidecar 随之更新——没有临时副本一说渲染本身就是提交编辑。AI 助手探索多组参数后最后一次应用的编辑会留在图片上且没有 undoreset_history可以把一张图清回导入状态。另外两点行为来自 README 的 Notes limitations首次渲染会实体化自动应用的 history一张 history 为空的图片经过任意一次render/image_stats/export_images即使请求里没有stack之后history 会多出一批plugins/darkroom/workflow自动应用的模块条目并同步 sidecar。darktable-cli行为相同这是 darktable 自身默认渲染被记录而非服务器做的编辑history_end配合stack使用时会重写图片 history永久丢弃history_end之后的条目不带stack时它只选择渲染到哪个历史位置不改动任何东西。如果想让 AI 只看不改用--read-onlydarktable-mcp --read-only --core --library /path/to/library.db--read-only拒绝一切会改动库的工具stack渲染、reset_history、apply_style、save_style、import_style、set_rating、set_color_label同时抑制.xmp写入并在请求返回前清掉自动应用的 history。注意--read-only是服务器自己的参数必须放在--core之前。input的两种取法也要分清{imgid}是正常路线编辑持久化{path}指向库外的文件时走 scratch 导入——文件被临时导入用于处理请求结束前导入行和 film roll 都会被删掉磁盘上的文件不会被碰库也不会长出新的行路径已入库时请求会被拒绝并返回对应的imgid让你改用imgid输入。README 的建议是优先import_images然后按imgid工作。使用真实图片库时的锁限制要让库工具看到你现有的图片、编辑和样式把注册命令里的参数换成指向真实库--core --library /path/to/library.db或--core --configdir /path/to/dir使用该目录下的library.db。但 darktable 会对library.db/data.db加 PID 锁所以这种方式必须在 GUI没有打开同一个库时运行或者对库的副本运行。这也是前文推荐给服务器单独目录的原因。已知限制无头渲染走内存中的 export 格式模块 cairo不是dt_imageio_preview那个 helper 依赖 GUI 环境无 GUI 时会崩溃RAW 的首次渲染要跑 demosaic 加完整管线可能耗时数秒给客户端留足超时请求处理中途崩溃可能遗留一条 scratch 图片行清理在请求结束时执行在目录里表现为一张意外的图片decode_params目前要求op_paramsblob 与模块当前参数尺寸一致用dt_iop_legacy_params转换旧版本 blob 是计划中的功能。完成接入后如果还想调整 AI 选择工具的方式每个工具的名称、描述和inputSchema都存在数据目录的 mcp_tools.json安装后位于share/darktable/mcp_tools.json中修改后重启服务器即可生效无需重新编译更完整的工具清单和参数说明见 src/mcp/README.md。【免费下载链接】darktabledarktable is an open source photography workflow application and raw developer项目地址: https://gitcode.com/GitHub_Trending/da/darktable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考