I used Claude Code to add an API to darktable (the open-source raw photo editor) so Claude can edit photos in it through MCP
This is my own project. Free to try. It's open source (GPL, like darktable), with no paid tier.
What it is. darktable is an open-source raw photo editor, roughly comparable to Adobe Lightroom. I added an API to it in a fork: a JSON-RPC server running darktable's own engine headlessly, or inside darktable's GUI window. On top of that API is an MCP server with 78 tools and 6 skills. Claude can browse a library, open a photo, change any module's settings, check previews, mask, heal sensor dust and export. Edits land in darktable's normal history, so you can keep working on them in darktable yourself.
Inspired by darktable's own MCP server. darktable's development version (the master branch, which becomes the next release) includes darktable-mcp, a headless, one-shot worker: each call renders, exports or applies a style, then returns. My engine started from its code. The main differences:
- A live edit session. The photo stays open between requests. Claude changes a setting, checks the preview and adjusts again, with undo, redo and an explicit save.
- darktable's window can serve it. Watch Claude's edits appear in the darkroom, and hand the library back and forth between the GUI and the headless engine.
- Settings by name. Claude sets "exposure" or "contrast" through darktable's own controls, not raw module parameters.
- Many clients. A web app and an AI assistant can work on the same photo at once, with change events.
- More functions. darktable-mcp has 21 tools for rendering, styles and library basics. darktable-api adds masks (drawn, parametric, AI), retouching and dust healing, presets, curves, crop and rotate, color pickers and AI denoise, for 73 methods.
Demo video: youtube.com
How Claude was used to build it. I directed and reviewed the work; Claude Code wrote nearly all of the code:
- The C engine inside darktable: Claude read darktable's source and developer docs, then wrote the API server against its internals: pixelpipe, history, masks, module params.
- The MCP server and web app: Python and JavaScript. The tool docstrings double as Claude's instructions for using them.
- Skills: a full edit in darktable's recommended scene-referred workflow, plus black and white, local edits, cleanup, batch edits and critiques.
- Testing: Claude tests every API method against the headless engine and darktable's window, on a scratch copy of the library, and fixes what fails, on the Mac and on a Linux box over SSH.
What was hard. darktable's GUI and engine are intertwined, so making API edits show up live in an open darkroom took several rounds. Also, the development version saves some module settings in a format the current release (5.6) can't read.
Try it. Built and tested on macOS (Apple Silicon) and Linux (Ubuntu 24.04); not yet on Windows. It's experimental, so use a copy of your library.
- MCP server and setup instructions: mmcc-xx/darktable-api-mcp
- darktable fork (branch darktable-api): mmcc-xx/darktable
- Web app: mmcc-xx/darktable-api-web
- Discussion with darktable's developers: darktable#21340
My hope is that this lowers the barrier to entry for darktable and helps people get more from their photos. Let me know what you think.
3 points · 4 comments
Mentions
கட்டணம் இல்லாமல் RAW திருத்துங்கள்.. darktable இலவசம், original அப்படியே இருக்கும். 400+ camera RAW. திருமண album-க்கும் போதும். darktable-லா, Lightroom-லா ? darktable-org/darktable Instagram-லும் பின்தொடருங்கள்: instagram.com
¿Pagas Lightroom? 3 razones para cambiarte a darktable gratis #shorts ¿Pagas Lightroom para revelar tus RAW? 3 razones para cambiarte a darktable, gratis y de código abierto. Tutorial completo de darktable: youtu.be 🔗 Repositorio: darktable-org/darktable 🌐 Web oficial: darktable.org ⬇️ Descargas: github.com/darktable-org/darktable/releases/latest 🎙️ Voz sintética. #shorts #opensource #gratis
💸 修图订阅一月六十,我一年只修两批照片。darktable 一万三千星,RAW 解码降噪蒙版齐全,两百张批量处理,不联网不催费。 darktable-org/darktable
I used Claude Code to add an API to darktable (the open-source raw photo editor) so Claude can edit photos in it through MCP This is my own project. Free to try. It's open source (GPL, like darktable), with no paid tier. What it is. darktable is an open-source raw photo editor, roughly comparable to Adobe Lightroom. I added an API to it in a fork: a JSON-RPC server running darktable's own engine headlessly, or inside darktable's GUI window. On top of that API is an MCP server with 78 tools and 6 skills. Claude can browse a library, open a photo, change any module's settings, check previews, mask, heal sensor dust and export. Edits land in darktable's normal history, so you can keep working on them in darktable yourself. Inspired by darktable's own MCP server. darktable's development version (the master branch, which becomes the next release) includes darktable-mcp, a headless, one-shot worker: each call renders, exports or applies a style, then returns. My engine started from its code. The main differences: - A live edit session. The photo stays open between requests. Claude changes a setting, checks the preview and adjusts again, with undo, redo and an explicit save. - darktable's window can serve it. Watch Claude's edits appear in the darkroom, and hand the library back and forth between the GUI and the headless engine. - Settings by name. Claude sets "exposure" or "contrast" through darktable's own controls, not raw module parameters. - Many clients. A web app and an AI assistant can work on the same photo at once, with change events. - More functions. darktable-mcp has 21 tools for rendering, styles and library basics. darktable-api adds masks (drawn, parametric, AI), retouching and dust healing, presets, curves, crop and rotate, color pickers and AI denoise, for 73 methods. Demo video: youtube.com How Claude was used to build it. I directed and reviewed the work; Claude Code wrote nearly all of the code: - The C engine inside darktable: Claude read darktable's source and developer docs, then wrote the API server against its internals: pixelpipe, history, masks, module params. - The MCP server and web app: Python and JavaScript. The tool docstrings double as Claude's instructions for using them. - Skills: a full edit in darktable's recommended scene-referred workflow, plus black and white, local edits, cleanup, batch edits and critiques. - Testing: Claude tests every API method against the headless engine and darktable's window, on a scratch copy of the library, and fixes what fails, on the Mac and on a Linux box over SSH. What was hard. darktable's GUI and engine are intertwined, so making API edits show up live in an open darkroom took several rounds. Also, the development version saves some module settings in a format the current release (5.6) can't read. Try it. Built and tested on macOS (Apple Silicon) and Linux (Ubuntu 24.04); not yet on Windows. It's experimental, so use a copy of your library. - MCP server and setup instructions: mmcc-xx/darktable-api-mcp - darktable fork (branch darktable-api): mmcc-xx/darktable - Web app: mmcc-xx/darktable-api-web - Discussion with darktable's developers: darktable#21340 My hope is that this lowers the barrier to entry for darktable and helps people get more from their photos. Let me know what you think.
To improve support darktable needs more DNG samples with OpcodeList3 Gainmaps Due to constraints of the optics in drones, raw files need a lot corrections to look good. They are embedded as metadata in the DNG files, but properly implementing the algorithms isn't always obvious and there are plenty of potential corner cases, so raw samples are needed to verify the implementation. If you have a drone or camera that embeds this metadata, you can help by supplying DNG + JPEG pair samples. They don't have to be good photos. Upload them to Dropbox, Google Drive or similar, then share the link here. Also please make sure to specify the Creative Commons licence you release them under - CC0, CC BY or CC BY-SA are preferred.
To improve support darktable needs more DNG samples with OpcodeList3 Gainmaps Due to constraints of the optics in drones, raw files need a lot corrections to look good. They are embedded as metadata in the DNG files, but properly implementing the algorithms isn't always obvious and there are plenty of potential corner cases, so raw samples are needed to verify the implementation. If you have a DJI (or other brand) drone or camera that embeds this metadata, you can help by supplying DNG + JPEG pair samples. They don't have to be good photos. Upload them to Dropbox, Google Drive or similar, then share the link here. Also please make sure to specify the Creative Commons licence you release them under - CC0, CC BY or CC BY-SA are preferred.
@SophosSupport Hi, your AV is causing anxiety among darktable users: darktable#22519 Could you please fix your signatures.