rawtherapee-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RT_CLI_PATH | No | Path to `rawtherapee-cli` binary | Auto-detect |
| RT_LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | WARNING |
| RT_OUTPUT_DIR | No | Default output directory | ~/Pictures/rawtherapee-mcp-output |
| RT_PREVIEW_DIR | No | Preview image directory | OS temp dir |
| RT_JPEG_QUALITY | No | Default JPEG quality (1-100) | 95 |
| RT_PREVIEW_MAX_WIDTH | No | Max preview width in pixels | 1200 |
| RT_CUSTOM_TEMPLATES_DIR | No | Custom PP3 templates directory | ./custom_templates |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
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