darktable-mcp

The darktable-mcp binary provides a Model Context Protocol (MCP) server interface for darktable.

darktable-mcp permet à un agent d’IA de piloter le pipeline de traitement RAW via MCP ; il peut ainsi servir à :

  • lister les modules et examiner les schémas de leurs paramètres,
  • traiter une image en appliquant une pile de modules donnée et récupérer un aperçu ou des statistiques par canal,
  • lire l’historique, les styles et les métadonnées depuis la bibliothèque.

darktable-mcp n’est généré que si darktable a été compilé avec l’option USE_MCP ; par conséquent, le binaire peut ne pas être présent dans tous les paquets.

Les paramètres des modules sont désignés par leur nom ; ainsi, une série d’instructions rédigée pour une version donnée de darktable reste fonctionnelle même après la mise à jour d’un module. Le développement des images s’effectue sur une copie temporaire, de sorte que ni le fichier original ni les modifications qui lui ont déjà été apportées ne sont altérés.

Il attend des commandes sur son entrée standard (stdin) et envoie les réponses sur sa sortie standard (stdout) ; cette dernière ne transmet que du JSON-RPC (les propres messages de journalisation de darktable étant redirigés vers stderr), ce qui permet à un client d’utiliser le protocole proprement.

darktable-mcp peut être appelé avec les paramètres optionnels suivants de la ligne de commande :

darktable-mcp [--core <options darktable>]
--core <darktable options>
Tous les paramètres de la ligne de commande suivant --core sont passés au noyau de darktable et manipulés comme des paramètres standards. Voir la section Exécutable darktable binary pour une description détaillée.

Sauf si vous les remplacez, deux valeurs par défaut sont injectées :

  • --library :memory:

    • la base de données est conservée dans la mémoire système : toutes les modifications sont supprimées à la fin de l’application. Les images sont rendues et inspectées par chemin de fichier, et les outils de la bibliothèque ne voient rien d’autre.
  • --conf write_sidecar_files=never

    • Ne jamais mettre à jour les fichiers liés XMP

Pour travailler sur un véritable catalogue — afin que les images existantes, leurs modifications et les styles enregistrés soient visibles — utilisez les arguments ‐‐core ‐‐library /path/to/library.db. darktable verrouille les fichiers library.db et data.db pendant son exécution ; cette méthode ne fonctionne donc que si l’interface graphique de darktable n’est pas ouverte sur cette bibliothèque (ou si l’on travaille sur une copie de celle-ci). La base de données en mémoire utilisée par défaut ne nécessite aucun verrouillage de ce type et peut être utilisée pendant que darktable est en cours d’exécution.

🔗outils disponibles

Le serveur met trois groupes d’outils à la disposition du client connecté.

Introspection tools describe darktable’s modules: list the available processing modules, retrieve the parameters of a given module with their types, ranges and defaults, and convert between a module’s stored parameter blob and named values. Each module also reports a link to its page in this manual.

Develop tools process images: develop an image through its history stack, optionally with additional modules applied on top, and return either a preview image or per-channel statistics. Rendering is performed on a throwaway duplicate, so the source image is never modified.

Les outils de la Bibliothèque lisent et modifient le catalogue : lister les images, lire la pile d’historique décodée d’une image, lister, appliquer, enregistrer et importer des styles, ainsi qu’exporter une image développée vers un fichier. Notez que plusieurs de ces opérations écrivent dans la bibliothèque : l’application ou l’enregistrement d’un style modifie le catalogue, tout comme cela se produirait via l’interface graphique.

🔗Connexion à un client

darktable-mcpn’est pas exécuté directement par l’utilisateur ; il est lancé par un client MCP qui communique avec lui via stdin et stdout. La plupart des clients sont configurés à l’aide d’une entrée JSON spécifiant la commande et ses arguments, comme dans l’exemple suivant (qui utilise des chemins typiques d’un système Linux) :

{
  "mcpServers": {
    "darktable": {
      "command": "/usr/bin/darktable-mcp",
      "args": ["--core",
               "--configdir", "/home/utilisateur/.config/darktable-mcp",
               "--cachedir",  "/home/utilisateur/.config/darktable-mcp/cache"]
    }
  }
}

Attribuez au serveur ses propres répertoires de configuration et de cache, comme indiqué ci-dessus. Grâce à la bibliothèque en mémoire utilisée par défaut, il peut alors être utilisé à tout moment, y compris lorsque darktable lui-même est ouvert.

Consultez la documentation de votre client MCP pour savoir où cette configuration est stockée et s’il propose une commande pour ajouter un serveur, plutôt que de modifier le fichier manuellement.

translations