项目简介
“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的原始响应和执行元数据,方便审计和问题排查。
安装步骤
-
系统要求:
- Linux 操作系统
- 安装Darktable,并确保其支持Lua和 'libdarktable.so' 可用。
- 安装Lua及其包管理器Luarocks。
- 安装Python 3 及 'requests' 库。
- 可选:本地运行Ollama或LM Studio服务,并下载好LLM模型。
-
Darktable 配置:
- 根据您的Darktable安装方式,可能需要配置环境变量 'DARKTABLE_FLATPAK_PREFIX' 或 'DARKTABLE_PREFIX',以确保MCP服务器能找到Darktable的库文件。
- 如果使用Flatpak安装的Darktable,且 'darktable-cli' 不在系统PATH中,可能需要设置 'DARKTABLE_CLI_CMD' 环境变量。
-
Lua 依赖:
- 安装 'dkjson' Lua模块:
sudo luarocks install dkjson - 打开 'server/dt_mcp_server.lua' 文件,根据您的Linux发行版调整 'libdarktable.so' 的路径,以及Darktable的数据目录 ('--datadir') 和模块目录 ('--moduledir')。
- 安装 'dkjson' Lua模块:
-
Python 依赖:
- (可选)创建并激活一个Python虚拟环境:
python -m venv .venv source .venv/bin/activate - 安装 'requests' 库:
pip install requests
- (可选)创建并激活一个Python虚拟环境:
-
验证依赖:
- 运行以下命令检查关键依赖('lua' 和 'darktable-cli')是否正确配置:
或python host/mcp_host_lmstudio.py --check-depspython host/mcp_host_ollama.py --check-deps
- 运行以下命令检查关键依赖('lua' 和 'darktable-cli')是否正确配置:
服务器配置
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后,您可以通过以下方式使用:
-
直接命令行使用 (通过Python主机):
- 确保您的Ollama或LM Studio服务正在运行。
- 评级模式: 使用LLM智能评估并设置照片评级。
'--dry-run' 参数会显示计划但不会实际应用更改,建议首次运行使用。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 - 标注模式: 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' 参数。
-
交互式命令行界面 (CLI):
- 如果您想通过一个引导式的界面配置参数,可以运行:
python host/interactive_cli.py - 此界面会逐步询问您主要参数(LLM主机、模式、来源、过滤器、自定义Prompt等),然后生成并执行最终的命令。
- 如果您想通过一个引导式的界面配置参数,可以运行:
-
图形用户界面 (GUI):
- 项目还提供了一个实验性的GUI客户端,可以更直观地配置参数、检查连接、列出可用模型并执行任务。
python host/mcp_gui.py
- 项目还提供了一个实验性的GUI客户端,可以更直观地配置参数、检查连接、列出可用模型并执行任务。
信息
分类
桌面与硬件