项目简介

“Darktable MCP 批处理”项目通过一个Lua编写的MCP服务器,将流行的开源照片处理软件Darktable的功能暴露给LLM客户端。LLM客户端(例如本项目提供的Python主机)可以调用Darktable的能力,结合本地LLM(如Ollama或LM Studio)进行照片的智能分析、处理和管理。核心功能包括管理Darktable中的图片资源、执行批处理工具(如设置评级、添加标签、导出图片),并支持通过Prompt模板定制LLM的交互模式。

主要功能点

  • 智能图像处理:利用LLM对Darktable中的照片进行智能评级、添加标签和执行导出任务。
  • 多模态支持:支持将图像(Base64编码)连同元数据一起发送给支持视觉功能的LLM(如Llama 3.2 Vision),进行更精确的图像内容理解和评估。
  • Darktable集成:MCP服务器直接通过Darktable的Lua API或命令行工具 ('darktable-cli') 控制Darktable,实现对图像库的深度操作。
  • 本地LLM兼容:提供Python主机脚本,可与Ollama和LM Studio等本地运行的LLM服务无缝对接。
  • 灵活的Prompt定制:允许用户自定义Markdown格式的Prompt文件,指导LLM如何执行评级、标注或导出任务。
  • 批处理能力:专注于处理大量照片,支持按路径、标签或收藏集进行筛选。
  • 日志与调试:每次运行都会生成详细的JSON日志,包含LLM的原始响应和执行元数据,方便审计和问题排查。

安装步骤

  1. 系统要求:

    • Linux 操作系统
    • 安装Darktable,并确保其支持Lua和 'libdarktable.so' 可用。
    • 安装Lua及其包管理器Luarocks。
    • 安装Python 3 及 'requests' 库。
    • 可选:本地运行Ollama或LM Studio服务,并下载好LLM模型。
  2. Darktable 配置:

    • 根据您的Darktable安装方式,可能需要配置环境变量 'DARKTABLE_FLATPAK_PREFIX' 或 'DARKTABLE_PREFIX',以确保MCP服务器能找到Darktable的库文件。
    • 如果使用Flatpak安装的Darktable,且 'darktable-cli' 不在系统PATH中,可能需要设置 'DARKTABLE_CLI_CMD' 环境变量。
  3. Lua 依赖:

    • 安装 'dkjson' Lua模块:
      sudo luarocks install dkjson
    • 打开 'server/dt_mcp_server.lua' 文件,根据您的Linux发行版调整 'libdarktable.so' 的路径,以及Darktable的数据目录 ('--datadir') 和模块目录 ('--moduledir')。
  4. Python 依赖:

    • (可选)创建并激活一个Python虚拟环境:
      python -m venv .venv
      source .venv/bin/activate
    • 安装 'requests' 库:
      pip install requests
  5. 验证依赖:

    • 运行以下命令检查关键依赖('lua' 和 'darktable-cli')是否正确配置:
      python host/mcp_host_lmstudio.py --check-deps
      python host/mcp_host_ollama.py --check-deps

服务器配置

MCP客户端需要以下信息来连接到Darktable MCP服务器:

{
  "server_name": "Darktable MCP 服务器",
  "command": "lua",
  "args": [
    "/path/to/your/mcp-darktable/server/dt_mcp_server.lua"
  ],
  "description": "连接到Darktable的MCP服务器,用于执行照片的智能评级、标注和导出等批处理任务。请将'/path/to/your/mcp-darktable/'替换为您实际安装该仓库的绝对路径,确保路径精确指向 'dt_mcp_server.lua' 文件。"
}

基本使用方法

安装并配置好服务器和LLM后,您可以通过以下方式使用:

  1. 直接命令行使用 (通过Python主机):

    • 确保您的Ollama或LM Studio服务正在运行。
    • 评级模式: 使用LLM智能评估并设置照片评级。
      cd darktable-mcp-batch
      python host/mcp_host_ollama.py --mode rating --source all --dry-run
      # 或使用LM Studio
      python host/mcp_host_lmstudio.py --mode rating --source all --dry-run
      '--dry-run' 参数会显示计划但不会实际应用更改,建议首次运行使用。
    • 标注模式: LLM会根据照片内容建议并添加标签。
      python host/mcp_host_ollama.py --mode tagging --source path --path-contains "旅行照片" --dry-run
    • 导出模式: 根据LLM的建议导出照片。必须指定 '--target-dir'。
      python host/mcp_host_ollama.py --mode export --source all --target-dir "./输出文件夹" --dry-run
    • 多模态/文本模式: 默认主机脚本会尝试发送图像进行多模态分析。如果LLM不支持或想节省资源,可添加 '--text-only' 参数。
  2. 交互式命令行界面 (CLI):

    • 如果您想通过一个引导式的界面配置参数,可以运行:
      python host/interactive_cli.py
    • 此界面会逐步询问您主要参数(LLM主机、模式、来源、过滤器、自定义Prompt等),然后生成并执行最终的命令。
  3. 图形用户界面 (GUI):

    • 项目还提供了一个实验性的GUI客户端,可以更直观地配置参数、检查连接、列出可用模型并执行任务。
      python host/mcp_gui.py

信息

分类

桌面与硬件