Skip to main content
Glama
lucamarien

rawtherapee-mcp-server

by lucamarien

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
RT_CLI_PATHNoPath to `rawtherapee-cli` binaryAuto-detect
RT_LOG_LEVELNoLogging level (DEBUG, INFO, WARNING, ERROR)WARNING
RT_OUTPUT_DIRNoDefault output directory~/Pictures/rawtherapee-mcp-output
RT_PREVIEW_DIRNoPreview image directoryOS temp dir
RT_JPEG_QUALITYNoDefault JPEG quality (1-100)95
RT_PREVIEW_MAX_WIDTHNoMax preview width in pixels1200
RT_CUSTOM_TEMPLATES_DIRNoCustom PP3 templates directory./custom_templates

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
check_rt_statusA

Check RawTherapee installation status and server configuration.

Use this to verify RT is installed, check its version, and view the configured output directories. Call this first when troubleshooting. Returns: dict with installed, cli_path, version, platform, and directory paths.

list_raw_filesA

Scan a directory for supported RAW image files.

Use this to discover which RAW files are available for processing. Returns: dict with files list (path, size, extension) and count. Params: directory, recursive (default: false)

read_exifA

Read EXIF metadata from a RAW image file.

Returns camera settings (ISO, aperture, shutter speed, focal length, etc.) used when the photo was taken. Use this to make better decisions about processing parameters like noise reduction, lens correction, and white balance. Params: file_path

generate_pp3_profileA

Create a PP3 processing profile from parameters.

Use this to generate a new processing profile for RAW development. Start with a base_template (e.g. "neutral", "warm_portrait") and override specific parameters, or build from scratch with parameters only.

When device_preset is specified with file_path, the profile uses aspect-ratio-based cropping (correct behavior). Without file_path, it falls back to resize-only which may produce different results. Params: name, base_template, parameters, device_preset, file_path, description

process_rawA

Process a RAW file with a PP3 processing profile.

Use this to convert a RAW file to JPEG, TIFF, or PNG using a PP3 profile. The profile controls all processing parameters (exposure, white balance, sharpening, etc.). Returns an inline thumbnail when include_preview is True. Params: file_path, profile_path, output_format, output_path, jpeg_quality, bit_depth, include_preview, preview_max_width

preview_rawC

Generate a small preview JPEG for visual analysis.

Use this to create a quick preview of how a RAW file will look with specific processing settings. The preview is a small JPEG suitable for visual inspection of composition, exposure, and color. When return_image is True, the preview image is returned inline for the LLM to see. Params: file_path, profile_path, max_width, return_image

list_templatesA

List all available PP3 processing templates (built-in and custom).

Use this to discover which templates are available for apply_template or as a base_template for generate_pp3_profile. Returns: dict with built_in and custom template lists.

apply_templateA

Apply a built-in or custom PP3 template to a RAW file and process it.

Use this for quick processing with a predefined style. Optionally apply a device preset for crop/resize on top of the template. Returns an inline thumbnail when include_preview is True. Params: file_path, template_name, output_format, output_dir, device_preset, include_preview, preview_max_width

list_device_presetsA

List all device/format crop and resize presets.

Use this to discover available presets for mobile wallpapers, desktop wallpapers, and photo aspect ratios. Presets can be applied when generating profiles or processing images. Returns: dict with presets grouped by category (mobile, desktop, photo_formats, custom).

adjust_profileA

Modify specific parameters in an existing PP3 profile.

Use this to tweak individual settings without recreating the entire profile. Only the specified parameters are changed; all other settings are preserved.

Accepts both friendly parameter names (e.g. {"crop": {"width": 3108}}) and raw PP3 section/key pairs (e.g. {"Crop": {"W": "3108", "H": "6732"}}). Unrecognized group names are treated as raw PP3 section names. Params: profile_path, adjustments, save_as

read_profileA

Display contents of a PP3 profile in human-readable format.

Use this to inspect what settings a profile contains before applying it. Returns all active sections and their key-value pairs. Params: profile_path

compare_profilesA

Compare two PP3 profiles and show the differences.

Use this to understand how two profiles differ before choosing between them, or to see what changed after adjustments. When file_path and include_preview are provided, renders both profiles as inline images for visual comparison. Params: profile_a, profile_b, file_path, include_preview, preview_max_width

save_templateB

Save an existing PP3 profile as a reusable custom template.

Use this to save a tuned profile so it can be reused later with apply_template or as a base_template for generate_pp3_profile. Params: profile_path, name, description

create_template_from_descriptionA

Create a new PP3 template from a natural language style description.

Use this to create a template when the user describes a look in words (e.g. "warm golden hour tones, film-like grain"). You (Claude) interpret the description and call generate_pp3_profile with appropriate parameters. This tool creates a neutral base template with the given name and description. Params: name, description, reference_image_path

delete_templateA

Delete a custom PP3 template.

Use this to remove a custom template that is no longer needed. Built-in templates cannot be deleted. Params: template_name

add_device_preset_toolA

Create and persist a custom device/format preset for cropping and resizing.

Use this to add a preset for a device or format not in the built-in list. Custom presets are saved to disk and available in future sessions. Params: preset_id, name, width, height, category

delete_device_presetB

Delete a custom device preset.

Use this to remove a custom device preset. Built-in presets cannot be deleted. Params: preset_id

batch_processC

Process multiple RAW files with the same PP3 profile.

Use this for bulk processing of a set of RAW files with identical settings. Params: file_paths, profile_path, output_format, output_dir, device_preset

list_output_filesA

List processed output files in the output directory.

Use this to see what images have been processed and are available. Params: directory, format_filter (jpeg, tiff, png)

get_image_infoA

Get technical information about a processed image file.

Use this to check dimensions, format, file size, and bit depth of JPEG, TIFF, or PNG output files. When include_thumbnail is True, returns an inline thumbnail for visual verification. Params: file_path, include_thumbnail, thumbnail_max_width

get_histogramA

Compute RGB histogram and image statistics for a processed image.

Analyzes the tonal distribution of a JPEG, TIFF, or PNG image. Returns per-channel histograms (256 bins), statistics (mean, median, std_dev, min, max), and clipping percentages. Optionally includes an SVG visualization. Params: file_path, include_svg

preview_before_afterA

Generate before/after preview images to compare processing effects.

Renders a RAW file twice: once with default (neutral) settings and once with the specified profile. Returns both images inline for the LLM to visually compare the difference. Params: file_path, profile_path, max_width

adjust_crop_positionA

Reposition an existing crop within the source image bounds.

Moves the crop area defined in a PP3 profile to a new position. Accepts named positions ('left', 'center', 'right' for horizontal; 'top', 'center', 'bottom' for vertical) or pixel offsets as strings. The profile is updated in-place. Params: profile_path, file_path, horizontal, vertical, include_preview, preview_max_width

preview_exposure_bracketA

Simulate exposure bracketing by rendering multiple EV previews.

Generates preview images at different exposure compensation values. Useful for determining the optimal exposure before committing to a full-resolution render. Params: file_path, profile_path, stops, max_width

preview_white_balanceB

Preview different white balance presets on a RAW file.

Renders the same image with multiple white balance settings so the LLM can compare and recommend the best one. Each preview includes an approximate Kelvin temperature for reference. Params: file_path, profile_path, presets, max_width

export_multi_deviceA

Export a RAW file optimized for multiple devices in one call.

Processes the same RAW file with device-specific crop/resize for each target device. Output filenames include the device name. Set include_previews=True to return inline thumbnails per export. Params: file_path, profile_path, device_presets, output_format, output_dir, include_previews, preview_max_width

batch_previewA

Generate small preview thumbnails for multiple RAW files.

Creates a batch of preview images for quick visual scanning. Useful for selecting images from a series or verifying batch settings before full-resolution processing. Set include_exif=True to attach a short EXIF summary (ISO, aperture, shutter speed, focal length) per image. Params: file_paths, profile_path, max_width, max_images, include_exif

analyze_imageA

Comprehensive single-call analysis of a RAW or processed image.

Combines EXIF metadata, structured processing recommendations, histogram statistics, and an inline thumbnail into one response. Use this for the initial assessment of an image before deciding on processing settings. Params: file_path, include_histogram, include_thumbnail, thumbnail_max_width

interpolate_profilesB

Blend two PP3 profiles by linear interpolation.

Numeric values are interpolated (factor=0.0 gives profile A, factor=1.0 gives profile B). Non-numeric values are taken from the nearer profile. Useful for creating intermediate looks between two processing styles. Params: profile_a, profile_b, factor, output_name, file_path, include_preview, preview_max_width

batch_analyzeA

Batch analysis of multiple images with EXIF, recommendations, and stats.

A lightweight alternative to calling analyze_image N times. Returns per-image EXIF data, processing recommendations, and summary histogram statistics (mean, clipping) without full 256-bin channel data or SVG. Optionally includes small thumbnails. Params: file_paths, max_images, include_thumbnails, thumbnail_max_width

add_luminance_adjustmentA

Add a luminance-based local adjustment to a PP3 profile.

Creates a Locallab spot that targets a specific luminance range (shadows, midtones, highlights, or custom). The adjustment only affects pixels within the specified brightness range, enabling selective edits like shadow recovery or highlight compression without affecting the rest.

adjustment_type: "shadows" (0-30%), "midtones" (25-75%), "highlights" (70-100%), or "custom" (requires luminance_range).

parameters: Processing adjustments to apply in the selected range. Keys: exposure (-2 to +2 EV), contrast (-100 to +100), saturation (-100 to +100), brightness (-100 to +100), black (0-500), highlight_compression (0-500), sharpening (0-100), denoise_luma (0-100), denoise_chroma (0-100), white_balance_shift (Kelvin, -500 to +500).

luminance_range (custom only): {"lower": 0-100, "upper": 0-100, "lower_transition": 0-100, "upper_transition": 0-100}.

Params: profile_path, adjustment_type, parameters, luminance_range, transition, strength, spot_name, save_as

preview_luminance_maskA

Preview a luminance mask showing which image areas are affected by a local adjustment.

Generates a grayscale mask image: white = full effect, black = no effect, gray = transition zone. Use this to verify the luminance range targets the correct tonal areas before processing.

Params: file_path, profile_path, spot_index, max_width

list_local_adjustmentsA

List all Locallab (local adjustment) spots in a PP3 profile.

Shows each spot's name, type, luminance range, active parameters, and enabled state. Use this to inspect the local adjustments before previewing or modifying them.

Params: profile_path

adjust_local_spotA

Modify parameters of an existing Locallab spot in a PP3 profile.

Change processing parameters, luminance range, strength, or enable/disable a spot without removing and re-adding it.

Params: profile_path, spot_index, parameters, luminance_range, strength, enabled, save_as

remove_local_adjustmentB

Remove a Locallab spot from a PP3 profile.

Deletes the spot at the given index and re-indexes remaining spots.

Params: profile_path, spot_index, save_as

preview_with_adjustmentsA

Preview a RAW file with all active local adjustments applied.

Renders a preview JPEG using RT CLI with the full profile including Locallab spots. Optionally includes histogram statistics for the processed result. Use this after add_luminance_adjustment or apply_local_preset to verify the effect visually.

Params: file_path, profile_path, max_width, include_histogram

apply_local_presetB

Apply a predefined local adjustment preset to a PP3 profile.

Available presets: shadow_recovery, highlight_protection, split_tone_warm_cool, midtone_contrast, shadow_desaturation, amoled_optimize, hdr_natural.

intensity scales all parameters: 50 = default, 25 = half, 100 = double.

Params: profile_path, preset, intensity, save_as

apply_lens_correctionB

Apply Lensfun or Adobe LCP lens correction to a PP3 profile.

Writes LensProfile section into the profile. Use mode='auto' for automatic Lensfun correction (camera/lens detected from RAW EXIF), or mode='lcp' to specify an Adobe Lens Correction Profile (.lcp file). Params: profile_path, mode ('auto'|'lcp'), lcp_file, correct_distortion, correct_vignetting, correct_ca, file_path (optional RAW for EXIF info), save_as

check_lens_supportA

Check whether a camera/lens combination has a Lensfun calibration profile.

Reads EXIF from a RAW file to detect camera/lens automatically, or accepts manual camera_make, camera_model, lens_model parameters. Parses the local Lensfun XML database (configured via RT_LENSFUN_DIR or auto-detected). Params: file_path (optional RAW for EXIF detection), camera_make, camera_model, lens_model

list_lutsA

List available HaldCLUT film simulation LUT files.

Scans RT_HALDCLUT_DIR (or the optional directory parameter) for PNG/TIFF HaldCLUT files and groups them by subdirectory category (e.g. 'Fuji', 'Kodak'). Params: directory (optional override), category (optional filter e.g. 'Fuji')

apply_lutB

Apply a HaldCLUT film simulation LUT to a PP3 profile.

Writes the [Film Simulation] section into the profile. lut_name is the relative path from RT_HALDCLUT_DIR, e.g. 'Fuji/Fuji Velvia 50.png'. strength controls blend intensity (0-100). Params: profile_path, lut_name, strength (0-100), save_as

preview_lutA

Render an inline preview of a RAW file with a HaldCLUT film simulation applied.

Optionally merges onto an existing PP3 base_profile so WB, exposure, etc. are preserved. Returns an inline thumbnail image. Params: file_path, lut_name, base_profile (optional PP3 path), strength (0-100), max_width

preview_lut_comparisonA

Render side-by-side inline previews for 2-5 HaldCLUT LUTs for quick comparison.

Renders each LUT sequentially and returns all thumbnails in a single response. Each image is labeled with its LUT name. Typical render time: 2-5s per LUT. Params: file_path, lut_names (list of 2-5 LUT relative paths), base_profile, strength (0-100), max_width (per image)

create_profile_variantA

Create a child PP3 profile variant derived from a parent template.

The variant is generated by merging the parent PP3 with the given overrides (raw PP3 section -> key -> value dict). A single merged PP3 is written to _generated/<variant_name>.pp3. The parent-child relationship is tracked in profile_hierarchy.json for update propagation. Params: parent_profile (template name or path), variant_name, overrides (e.g. {'White Balance': {'Temperature': '3800'}}), description

list_profile_variantsA

List profile variants tracked by the inheritance system.

Shows parent -> [variants] relationships with override summaries and effective PP3 paths. Optionally filter by parent_profile name. Params: parent_profile (optional filter)

update_base_profileA

Update a base PP3 template and optionally propagate changes to all its variants.

Applies adjustments (raw PP3 section -> {key: value} dict, same format as adjust_profile) to the named template, then regenerates all child variants so their override-specific settings are preserved on top of the updated base. Params: profile_name (template name or path), adjustments, propagate (default True)

inspect_metadataA

Inspect EXIF metadata in an exported JPEG/TIFF and classify by sensitivity.

Returns sensitive fields (GPS, serial numbers, owner), technical fields (camera, lens, ISO, aperture, shutter), processing info (software), rights (copyright, artist), and privacy recommendations for public sharing. Params: file_path (exported JPEG or TIFF)

strip_metadataA

Strip selected EXIF metadata from an exported JPEG file.

Operates losslessly — only the EXIF APP1 segment is rewritten, the JPEG image data is not recompressed. By default removes GPS and serial numbers. Use strip_all=True to remove everything except orientation (and copyright if keep_copyright=True). Params: file_path, strip_gps, strip_camera_serial, strip_lens_serial, strip_software, strip_owner, strip_all, keep_copyright, keep_orientation, output_path (None = in-place)

set_metadataA

Write copyright, artist, description, and keywords into an exported JPEG file.

Writes metadata losslessly (EXIF APP1 segment only, no JPEG recompression). Keywords are stored as XPKeywords (UTF-16LE, semicolon-separated) for compatibility with Windows Explorer and most DAM software. Params: file_path, copyright (e.g. '© 2026 Luca Marien'), artist, description, keywords (list of strings), output_path (None = in-place)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucamarien/rawtherapee-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server