Skip to main content
Glama

Photoshop MCP Elite (photoshop-mcp-elite)

License: MIT Python 3.12+ Model Context Protocol

A high-performance, native Python Model Context Protocol (MCP) server for Adobe Photoshop on macOS.

Unlike legacy Node.js wrappers that rely on outdated 2010 PatchMatch algorithms and crash on ExtendScript ES3 syntax mismatches, photoshop-mcp-elite delivers:

  • True Adobe Firefly Generative AI Automation: Autonomously triggers Generative Fill and AI object removal via macOS accessibility bridges.

  • Intelligent Photographic Workflows: Includes automated Sky Replacement with atmospheric horizon haze and foreground relighting, precision distraction removal, and color harmony adjustments.

  • Bulletproof ES3 Engine: Embedded JSON2 polyfill and isolated ActionManager execution that completely prevents JSON is undefined and quote-escaping errors.

  • Fast & Lightweight: Built on the official Python MCP SDK with sub-second execution speeds (0.1–0.3s).


🌟 Key Features

Category

Features

Generative AI

Autonomous Adobe Firefly Generative Fill (photoshop_generative_fill_ai, photoshop_generative_remove_ai) with zero human clicks required.

Photographic Workflows

photoshop_harmonize_sky (Sensei contour isolation + horizon haze + foreground warming), photoshop_smart_remove_distractions, photoshop_match_lighting_and_tone.

Adobe Sensei AI

One-shot AI selectSky and selectSubject (autoCutout).

Full Layer Suite

Non-destructive layer management, visibility, opacity, blend modes, duplication, merge, and flatten.

Precision Selection

Rectangular, elliptical, feathering, boundary expansion/contraction, inversion, and bounds inspection.

Adjustments

Curves (auto/points), Levels, Brightness/Contrast, Hue/Saturation, Desaturate, Invert, Gaussian Blur.

Document Management

Info query, document list, open image, save, and high-fidelity export as JPEG/PNG.


Related MCP server: Photoshop MCP Server

🚀 Quickstart

Prerequisites

  • macOS with Adobe Photoshop (Photoshop 2024, 2025, or 2026 recommended)

  • uv (recommended) or Python 3.12+

1. Clone the Repository

git clone https://github.com/baramesh/photoshop-mcp-elite.git
cd photoshop-mcp-elite

2. Install Dependencies

Using uv:

uv sync

3. Grant Accessibility Permissions (For Autonomous Generative AI)

To allow the server to autonomously trigger Adobe Firefly without requiring manual clicks on the Contextual Task Bar:

  1. Open System Settings on macOS.

  2. Navigate to Privacy & Security > Accessibility.

  3. Toggle ON for your terminal or MCP host app (e.g., Terminal, iTerm2, Claude Desktop, Cursor, or Antigravity).


🧠 AI Agent Skill (SKILL.md)

This repository includes a ready-to-use Agent Skill in skill/SKILL.md for AI coding assistants and autonomous agents (e.g., Antigravity, Claude Code, Cursor):

  • Photographic Intelligence: Guides agents on how to assess lighting direction, color temperature, and atmospheric horizon haze before editing.

  • Firefly & Inpainting Rules: Instructs agents when to avoid naive Content-Aware Fill and how to use autonomous Generative Fill with surgical selections.

  • Non-Destructive Standard: Enforces layer labeling and non-destructive retouching practices.

To install the skill in your local Antigravity / Agent configuration:

mkdir -p ~/.gemini/config/skills/photoshop-mcp-elite
cp skill/SKILL.md ~/.gemini/config/skills/photoshop-mcp-elite/

⚙️ MCP Configuration

Add photoshop to your client configuration:

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "photoshop": {
      "command": "/Users/YOUR_USERNAME/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/photoshop-mcp-elite",
        "python",
        "server.py"
      ]
    }
  }
}

Cursor / Windsurf / Antigravity (mcp_config.json)

{
  "mcpServers": {
    "photoshop": {
      "command": "/Users/YOUR_USERNAME/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/photoshop-mcp-elite",
        "python",
        "server.py"
      ]
    }
  }
}

🛠️ Tool Catalog (47 Tools)

Generative AI & Smart Workflows

  • photoshop_generative_fill_ai: Autonomously trigger Adobe Firefly on the current selection with an optional prompt.

  • photoshop_generative_remove_ai: Autonomously remove multiple bounding-box regions using Firefly AI.

  • photoshop_harmonize_sky: Sensei sky selection + replacement + horizon atmospheric haze + foreground ambient light matching.

  • photoshop_smart_remove_distractions: Multi-region precision removal with expansion + feathering on a non-destructive Retouch layer.

  • photoshop_match_lighting_and_tone: Photo-wide color harmony and contrast adjustment.

Pro Hollywood & Design Capabilities (New 🚀)

  • photoshop_apply_camera_raw_filter: Direct Adobe Camera Raw engine controls (Exposure, Contrast, Highlights, Shadows, Clarity, Dehaze, Vibrance, Saturation, Temperature, Tint).

  • photoshop_create_adjustment_layer: Creates true non-destructive Adjustment Layers (curves, hue_saturation, levels, brightness_contrast, vibrance, black_and_white).

  • photoshop_convert_to_smart_object: Wraps active or selected layers into a Smart Object for non-destructive filter stacks.

  • photoshop_add_text_layer: Creates vector Typography text layers with custom fonts, point size, hex colors, and alignment.

  • photoshop_apply_layer_style: Applies layer effects (FX) including Drop Shadow (opacity, distance, blur) and Stroke (color, size).

Sensei AI & Selections

  • photoshop_select_sky: Adobe Sensei AI sky contour isolation.

  • photoshop_select_subject: Adobe Sensei AI subject auto-cutout.

  • photoshop_select_rectangle, photoshop_select_ellipse, photoshop_select_all, photoshop_deselect, photoshop_invert_selection.

  • photoshop_feather_selection, photoshop_expand_selection, photoshop_contract_selection.

  • photoshop_get_selection_bounds.

Document & Layers

  • photoshop_get_document_info, photoshop_list_documents, photoshop_open_image, photoshop_save_document, photoshop_export_as.

  • photoshop_get_layers, photoshop_create_layer, photoshop_select_layer_by_name, photoshop_duplicate_layer, photoshop_delete_layer.

  • photoshop_set_layer_visibility, photoshop_set_layer_opacity, photoshop_merge_visible_layers, photoshop_flatten_image.

Adjustments & Filters

  • photoshop_adjust_brightness_contrast, photoshop_adjust_curves_auto, photoshop_adjust_hue_saturation.

  • photoshop_auto_levels, photoshop_auto_contrast, photoshop_desaturate, photoshop_invert, photoshop_apply_gaussian_blur.

Custom ExtendScript

  • photoshop_execute_custom_jsx: Direct raw ES3 ExtendScript execution with built-in JSON serialization.


🏛️ Architecture

AI Client (Claude / Cursor / Antigravity)
               │ (MCP JSON-RPC over stdio)
               ▼
   photoshop-mcp-elite (Python 3.12 / FastMCP)
        ├── core/bridge.py        (AppleScript / JSX Execution Engine)
        ├── core/vision.py        (Pillow / Luminance & Warmth Analyzer)
        ├── tools/workflows.py    (Autonomous Firefly & Sky Harmonization)
        └── tools/*.py            (Document, Layer, Selection, Adjustment)
               │
               ▼ AppleScript (osascript) & System Events
      Adobe Photoshop 2026 Core Engine

📄 License

MIT License. See LICENSE for details.

Available Tools

47 tools
photoshop_add_text_layerC

Create a vector typography Text Layer in the active document.

Inputs: text (required), x_px, y_px, color_hex, +3 more. Returns: object

photoshop_adjust_brightness_contrastC

Adjust brightness and contrast of the active layer (-100 to 100).

Inputs: contrast, brightness. Returns: object

photoshop_adjust_curves_autoA

Apply Auto Curves to the active layer.

Inputs: no named parameters. Returns: object

photoshop_adjust_hue_saturationC

Adjust Hue, Saturation, and Lightness of the active layer.

Inputs: hue, lightness, saturation. Returns: object

photoshop_apply_camera_raw_filterC

Apply professional Adobe Camera Raw Filter with exposure, clarity, dehaze, temperature, and vibrance controls.

Inputs: tint, dehaze, clarity, shadows, +6 more. Returns: object

photoshop_apply_gaussian_blurC

Apply Gaussian Blur filter to the active layer.

Inputs: radius (required). Returns: object

photoshop_apply_layer_styleC

Apply Layer Styles (FX) like Drop Shadow and Stroke to the active layer.

Inputs: stroke, drop_shadow, shadow_size, stroke_size, +3 more. Returns: object

photoshop_auto_contrastB

Apply Auto Contrast to the active layer.

Inputs: no named parameters. Returns: object

photoshop_auto_levelsB

Apply Auto Levels to the active layer.

Inputs: no named parameters. Returns: object

photoshop_content_aware_fillB

Fill the active selection using Content-Aware Fill.

Inputs: no named parameters. Returns: object

photoshop_contract_selectionC

Contract the active selection inwards by specified pixels.

Inputs: pixels (required). Returns: object

photoshop_convert_to_smart_objectB

Convert the active layer or selected layers into a Smart Object.

Inputs: no named parameters. Returns: object

photoshop_create_adjustment_layerB

Create a non-destructive Adjustment Layer (curves, hue_saturation, levels, brightness_contrast, vibrance).

Inputs: name, adj_type. Returns: object

photoshop_create_layerC

Create a new art layer with specified name and opacity.

Inputs: name, opacity, blend_mode. Returns: object

photoshop_delete_layerB

Delete the currently active layer.

Inputs: no named parameters. Returns: object

photoshop_desaturateA

Desaturate active layer to black and white.

Inputs: no named parameters. Returns: object

photoshop_deselectA

Deselect active selection.

Inputs: no named parameters. Returns: object

photoshop_duplicate_layerC

Duplicate a layer (or active layer) with an optional new name.

Inputs: name, new_name. Returns: object

photoshop_execute_custom_jsxC

Execute raw ES3 ExtendScript code directly inside Photoshop with full JSON serialization.

Inputs: script (required). Returns: object

photoshop_expand_selectionA

Expand the active selection outwards by specified pixels.

Inputs: pixels (required). Returns: object

photoshop_export_asC

Export the active document as PNG or JPEG.

Inputs: file_path (required), quality, format_type. Returns: object

photoshop_feather_selectionC

Feather the edge of the active selection by radius pixels.

Inputs: radius (required). Returns: object

photoshop_flatten_imageA

Flatten all layers into a single background layer.

Inputs: no named parameters. Returns: object

photoshop_generative_fill_aiC

Autonomously triggers Adobe Firefly Generative Fill on the active selection.

Inputs: prompt, wait_completion. Returns: object

photoshop_generative_remove_aiC

Autonomously removes regions using Adobe Firefly Generative Fill.

Inputs: regions (required), feather_px. Returns: object

photoshop_get_document_infoA

Get metadata about the currently active Photoshop document (dimensions, color mode, layers count, active layer).

Inputs: no named parameters. Returns: object

photoshop_get_layersA

Get list, visibility, opacity, blend modes, and pixel bounds of all layers in the active document.

Inputs: no named parameters. Returns: object

photoshop_get_selection_boundsA

Get pixel bounds [left, top, right, bottom] of the current selection.

Inputs: no named parameters. Returns: object

photoshop_harmonize_skyA

Seamlessly replaces and harmonizes sky: 1. Uses Sensei AI Select Sky for precise architectural contour isolation. 2. Places and scales replacement sky image. 3. Adds atmospheric horizon haze gradient layer to blend background naturally. 4. Automatically relights foreground subjects with warm ambient light to match the sky.

Args:
    sky_image_path: Local path to sky replacement image.
    haze_opacity: Opacity percentage (0-100) for horizon atmospheric haze.
    sky_opacity: Opacity percentage (0-100) for sky layer.
    warm_foreground: If True, warms non-sky foreground subjects with light tone curve matching.

Inputs: sky_image_path (required), sky_opacity, haze_opacity, warm_foreground. Returns: object

photoshop_invertB

Invert colors of the active layer.

Inputs: no named parameters. Returns: object

photoshop_invert_selectionB

Invert the active selection.

Inputs: no named parameters. Returns: object

photoshop_list_documentsA

List all open documents in Photoshop with their IDs and names.

Inputs: no named parameters. Returns: object

photoshop_match_lighting_and_toneC

Harmonizes lighting, contrast, and color vibrance across the entire composite.

Inputs: target_mood, contrast_amount, saturation_boost. Returns: object

photoshop_merge_visible_layersB

Merge all visible layers into one composite layer.

Inputs: no named parameters. Returns: object

photoshop_open_imageA

Open an image file from the filesystem into Photoshop.

Inputs: file_path (required). Returns: object

photoshop_redoA

Redo the last undone action in Photoshop.

Inputs: no named parameters. Returns: object

photoshop_save_documentB

Save the active document, optionally specifying a new path.

Inputs: file_path. Returns: object

photoshop_select_allB

Select entire canvas area.

Inputs: no named parameters. Returns: object

photoshop_select_ellipseC

Create an elliptical selection with optional feathering.

Inputs: top (required), left (required), right (required), bottom (required), +1 more. Returns: object

photoshop_select_layer_by_nameB

Select a layer by name to make it active.

Inputs: name (required). Returns: object

photoshop_select_rectangleC

Create a rectangular pixel selection [left, top, right, bottom] with optional feathering.

Inputs: top (required), left (required), right (required), bottom (required), +1 more. Returns: object

photoshop_select_skyA

Use Adobe Sensei AI to automatically detect and select the sky region.

Inputs: no named parameters. Returns: object

photoshop_select_subjectB

Use Adobe Sensei AI to automatically detect and select the primary subject(s).

Inputs: sample_all_layers. Returns: object

photoshop_set_layer_opacityB

Set the opacity percentage (0-100) of a layer by name.

Inputs: name (required), opacity (required). Returns: object

photoshop_set_layer_visibilityC

Show or hide a layer by name.

Inputs: name (required), visible (required). Returns: object

photoshop_smart_remove_distractionsA

Smartly removes unwanted people or background distractions. Combines context expansion + edge feathering + Content-Aware Fill on a non-destructive Retouch layer.

Args:
    regions: List of [left, top, right, bottom] bounding boxes in pixels.
    feather_px: Feather edge softness in pixels (default 2.5).
    expand_px: Context expansion in pixels to eliminate halo artifacts (default 6).
    create_backup_layer: If True, preserves the original layer and performs retouching on a duplicated layer.

Inputs: regions (required), expand_px, feather_px, create_backup_layer. Returns: object

photoshop_undoB

Undo the last action in Photoshop.

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 47 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap among selection manipulation tools (e.g., feather_selection, expand_selection, contract_selection), adjustment tools (adjust_brightness_contrast vs. adjust_hue_saturation vs. apply_camera_raw_filter), and removal tools (content_aware_fill vs. smart_remove_distractions vs. generative_remove_ai). Descriptions help distinguish them, but an agent might struggle to choose the right one without careful reading. The presence of a catch-all execute_custom_jsx tool adds ambiguity.

    Naming Consistency5/5

    All tools follow a consistent snake_case naming pattern with a clear verb_noun structure (e.g., select_all, duplicate_layer, adjust_brightness_contrast). The 'photoshop_' prefix is uniformly applied.

    Tool Count2/5

    With 47 tools, this server is very heavy for a Photoshop automation domain. While the breadth of features is impressive, such a large number increases the risk of misselection and makes it harder for an agent to navigate efficiently. Some tools could be consolidated (e.g., multiple selection expansion operations).

    Completeness4/5

    The tool surface covers a wide range of Photoshop operations: document management, layer manipulation, selections, adjustments, filters, AI features, and even custom script execution. There are minor gaps like missing specific layer management (reorder, group) and some common filters, but overall it provides comprehensive coverage for advanced workflows.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to control Adobe Photoshop programmatically through natural language, with state awareness, recipe tools, and a standalone UI.
      7,249 npm
      MIT
    • A
      license
      C
      quality
      B
      maintenance
      Enables natural-language control of Adobe Photoshop 2026 through a local, capability-gated MCP server and UXP bridge, supporting document editing, command execution, and safe automation with automatic approvals and validation.
      20
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to control Adobe Photoshop through natural-language requests for tasks like background removal, portrait retouching, web and social export, carousel creation, and batch watermarking. This privacy-focused fork supports a local, free Ollama provider so prompts and images can be processed without an API key or cloud account.
      7,249 npm
      MIT