PS-MCP-IMT — Photoshop for AI agents
Adobe Photoshop for AI agents on any UI language: 9-tool facade, UXP bridge that works when modal
Que pouvez-vous faire avec PS-MCP-IMT — Photoshop for AI agents ?
- "Open
poster.psd, put the client's logo on the billboard in perspective — corners at (412,88), - "Replace the sky with this dusk one (
sky.jpg), then export a 2000-px JPEG for review." - "Split this layout into Instagram, X and Story artboards and export each as PNG."
- "Set the headline to Inter Bold 96 pt, tracking −20, only the word SALE in red."
- "Build a frequency-separation stack at 6 px — I'll paint the Low / High layers myself."
- "Photoshop is showing a dialog — tell me what is open and save the document anyway." (the save
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
https://github.com/Immersive-Media-Technologies/photoshop-mcp-imt/releases/download/v1.0.0/photoshop-mcp-imt-1.0.0.mcpbDocumentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
PS-MCP-IMT — Photoshop for AI agents, with two ways in
An MCP server that lets an AI agent (Claude Desktop, Cursor, ChatGPT or any MCP-compatible client) drive a running Adobe Photoshop: documents, layers, text, masks, selections, filters, adjustments, Smart Objects, artboards, generative tools, export — from natural language.
Built by Immersive Media Technologies as the Photoshop backbone of the Deep Artisan agent pipeline, and released so that other agent builders can use the same layer. A fork of alisaitteke/photoshop-mcp (merged through 1.7.27) with a second transport, a small tool surface, honest errors and no telemetry.
macOS and Windows · Photoshop 2024–2026 · Node.js 18+ (we run 26). macOS is what we run every day (Photoshop 2026, 27.9–27.10); the Windows transport (ExtendScript through COM, with the UTF-16 result fix and a retry on the COM «busy» error) passes the same live sweep on Windows 11 with Photoshop 2026 — reports from Windows users are still welcome.
[!CAUTION] This tool edits real Photoshop documents and sends document contents (names, layer structure, text, rendered previews) to the AI service you use. Start with a copy, check your AI provider's data policy for NDA work, and keep
ps_execute_scriptandps_uxp script(arbitrary code inside Photoshop) behind your agent's permission policy.
Why this one
Most Photoshop MCP servers stop at «the AI can run a script». Two things break that in daily use: Photoshop goes modal (a dialog, a progress bar, a tool in search mode) and every script call hangs until a timeout; and the agent drowns in a hundred tool definitions. This fork keeps a second transport inside Photoshop (UXP) for exactly those moments, shows the agent 9 tools instead of 134, and tells it the truth when something cannot be done.
| PS-MCP-IMT (this repo) | alisaitteke/photoshop-mcp | mikechambers/adb-mcp | dcc-mcp/dcc-mcp-photoshop | |
|---|---|---|---|---|
| Talks to Photoshop via | ExtendScript (osascript / COM) and a UXP panel plugin — chosen per call, UXP as fallback or first (PS_MCP_UXP_PREFER=1) | ExtendScript via AppleScript / COM (we are a fork) | UXP plugin → separate WebSocket proxy (Python) → MCP server | UXP plugin → Rust broker (adobepy) → Python MCP server |
| When Photoshop is modal | photoshop_busy in 4 s with an instruction for the user, 8 s hold; reads / save / export continue through UXP (via: uxp) | 30 s timeout → extendscript_timeout, retry ping | — | UXP only, so unaffected — but no ExtendScript DOM at all |
| Tool surface | 134 tools registered, 9 visible (ps_catalog / ps_do / ps_batch …) — ~900 tokens of definitions per turn instead of ~25 K; every tool reachable through ps_do | 118–122 tools, all visible (photoshop_* + 16 recipes) | «a subset of functionality» per app, low-level tools (proof of concept) | 40+ typed tools in 8 skill packages |
| Headless corner-pin | photoshop_distort_layer: four corners → custom warp solved for the homography; verified that Trnf + quadrilateral is silently ignored in Photoshop 2026 (12 combinations probed) | — | — | — |
| Telemetry | none — analytics module is a no-op, feedback nudge removed, server sends nothing | anonymous analytics on by default (opt-out), product-feedback nudge via photoshop_ping | — | — |
| Undo | recipes = one history state (upstream); photoshop_busy / command_unavailable / extendscript_timeout / scratch_disk_full tell the agent why instead of a generic timeout | recipes = one history state; extendscript_timeout, scratch_disk_full | — | staged install with --dry-run / receipts |
| Install | one click: .mcpb for Claude Desktop (no Node needed), «Add to Cursor» button, npx for any other client; install.sh / install.ps1 with a live self-test that write the client configs; UXP plugin as .ccx, UXP Developer Tools or a manual layout — every path documented with its failure modes | npx -y @alisaitteke/photoshop-mcp; UXP plugin for Neural Filters only | Python 3 + Node + UXP Developer Tools + proxy process | pip install or binaries; Rust broker |
| Verified on | Photoshop 2026 (27.9–27.10), macOS, UXP 9.4.1, Russian and English UI — live sweep of every tool: 193 pass / 0 fail / 11 environment skips (2026-10-01); Windows 11 (ARM) + Photoshop 2026 — same sweep, 193 / 0 / 11 (2026-10-04) | Windows + macOS | Photoshop 26+, macOS + Windows | Windows, Linux, macOS |
| License | IMT Non-Commercial for our work (attribution + link required, free for non-commercial use); upstream code stays MIT | MIT | MIT | MIT |
Facts about other projects are from their READMEs and repository metadata on GitHub on 2026-10-01 (adb-mcp: 716 stars, last push 2026-07-08, «proof of concept»; dcc-mcp-photoshop: v0.2.0; alisaitteke/photoshop-mcp: 1.7.27 of 2026-09-30); corrections welcome.
What you can ask for
- "Open
poster.psd, put the client's logo on the billboard in perspective — corners at (412,88), (1388,140), (1370,690), (430,655) — and keep it editable." - "Replace the sky with this dusk one (
sky.jpg), then export a 2000-px JPEG for review." - "Split this layout into Instagram, X and Story artboards and export each as PNG."
- "Set the headline to Inter Bold 96 pt, tracking −20, only the word SALE in red."
- "Build a frequency-separation stack at 6 px — I'll paint the Low / High layers myself."
- "Photoshop is showing a dialog — tell me what is open and save the document anyway." (the save goes through the UXP bridge)
The agent combines the operations itself through ps_do, checking ps_get_state /
ps_get_layers between steps and verifying with ps_export_frame (a PNG of the current state).
Install
Requirements: Adobe Photoshop 2024+ running on this computer (2026 verified), macOS or Windows — platform specifics are in the two sub-sections below the table. Pick the route for your client:
| Client | Route | What you need |
|---|---|---|
| Claude Desktop | download photoshop-mcp-imt.mcpb, double-click it, click Install (Windows: if the file opens with an app picker instead, drag the .mcpb onto Settings → Extensions) — the settings dialog has the switches (compact tool surface, UXP bridge) | nothing else: Claude Desktop brings its own Node.js |
| Cursor | — one click, Cursor writes the config | Node.js 18+ (npx fetches the package) |
| Google Antigravity | Settings → Customizations → Installed MCP Servers → View raw config (or type /mcp in the prompt panel) and add the photoshop entry from the snippet below to ~/.gemini/config/mcp_config.json; install.sh / install.ps1 write it for you | Node.js 18+ |
| ChatGPT and other clients that take only remote servers | one command on the Photoshop machine — npx -p @immersive-media-technologies/photoshop-mcp-imt photoshop-mcp-imt-chatgpt — starts the server behind a Streamable-HTTP gateway and a tunnel, and prints the public URL to paste into ChatGPT → Settings → Connectors → Create (developer mode, authentication: none). Photoshop stays on your machine; the tunnel is your door — whoever knows the URL can drive Photoshop while it runs, so stop it (Ctrl+C) after the session | Node.js 18+ and a tunnel tool: cloudflared (no account; brew install cloudflared / winget install Cloudflare.cloudflared) or ngrok (free account) |
| Any MCP client with a JSON config | the snippet below in its mcpServers | Node.js 18+ |
{
"mcpServers": {
"photoshop": {
"command": "npx",
"args": ["-y", "@immersive-media-technologies/photoshop-mcp-imt"],
"env": { "PS_MCP_FACADE": "1", "PS_MCP_UXP": "1" }
}
}
}
macOS
Verified daily (Photoshop 2026, 27.9–27.10). The server drives Photoshop through AppleScript; the first call asks for the Automation permission (System Settings → Privacy & Security → Automation; AppleScript error −1743 means it was denied). From source, with a live self-test — the route we run ourselves:
git clone https://github.com/Immersive-Media-Technologies/photoshop-mcp-imt.git
cd photoshop-mcp-imt && ./install.sh
The script checks Photoshop and Node, builds the server and the UXP plugin, pings the running
Photoshop through the real transport, and — after asking — writes the entry into Claude Desktop's,
Cursor's and Google Antigravity's config files (backing them up first). --no-config only prints
the snippet; --yes skips the questions.
Windows
Verified on Windows 11 with Photoshop 2026 (same live sweep as macOS: 193 / 0 / 11). The server
talks to Photoshop through COM (cscript + a VBScript shim, results decoded as UTF-16); the bridge
retries the transient COM «busy» error (PSMCP_BUSY_RETRY_MS, default 2000 ms). Set
PHOTOSHOP_PATH when Photoshop is not under C:\Program Files\Adobe.
- Claude Desktop: the
.mcpbhas no file association on Windows — if a double-click shows an app picker, drag the file onto Settings → Extensions instead. - From source:
.\install.ps1(same steps asinstall.sh; if scripts are blocked:powershell -ExecutionPolicy Bypass -File .\install.ps1). Node.js 18+ from nodejs.org; Git for Windows or MinGit. - UXP bridge: on Windows x64 install the
.ccxas on macOS. On Windows on ARM Photoshop has no Plugins menu and loads no third-party UXP plugins at all (Adobe has not enabled the plugin infrastructure there yet) — the server works without the bridge.
| Variable | Default | Meaning |
|---|---|---|
PS_MCP_FACADE | off | 1 / true → the client sees the 9 ps_* tools only; everything else through ps_do |
PS_MCP_UXP | off | 1 / true → start the bridge server for the UXP plugin (127.0.0.1:38452) and register ps_uxp |
PS_MCP_UXP_PREFER | off | 1 / true → UXP first for state / layers / save / export, ExtendScript second |
PS_MCP_UXP_TOKEN_FILE | ~/.deepartisan/state/uxp-bridge.token | shared secret the plugin must send (X-DA-Bridge-Token); created 0600 on first start |
PHOTOSHOP_UXP_BRIDGE_PORT | 38452 | bridge port |
PS_MCP_READ_TIMEOUT_MS | 8000 | ExtendScript timeout for read-only tools (fast fallback to UXP when Photoshop is modal) |
PHOTOSHOP_SCRIPT_TIMEOUT | 30000 | ExtendScript timeout for everything else; timeout_ms on ps_execute_script overrides per call |
PHOTOSHOP_PATH | auto-detect | path to the Photoshop app / executable |
LOG_LEVEL | 1 | 0 debug · 1 info · 2 warn · 3 error (stderr) |
The UXP bridge (second transport)
A 10-KB panel plugin, Deep Artisan Bridge (uxp-plugin/, id com.deepartisan.ps-bridge),
lives inside Photoshop and polls the server. It runs state, layers, batchplay, eval_js,
export_png, save and neural_filter inside core.executeAsModal, so it answers while
ExtendScript is blocked. Install one of three ways, in this order of convenience:
- Double-click
dist/uxp/deepartisan-ps-bridge.ccx(Creative Cloud). If Creative Cloud says «Plugin Not Compatible» — it does when Photoshop is missing from its installed-apps list — use 2 or 3. - UXP Developer Tools → Add
Plugin →
uxp-plugin/manifest.json→ Load. - Manual layout into Adobe's UXP plugin folder plus one entry in
PluginsInfo/v1/PS.json— exact paths and the JSON line indocs/development.md.
Then Photoshop → Plugins → Deep Artisan Bridge; leave the panel in your workspace so the plugin
loads with Photoshop. The port is protected by a shared-secret file the server creates on first
start and the plugin reads; a request without it gets 401, /health is open and reveals nothing.
Several MCP clients at once (Claude Desktop, Cursor, Deep Artisan …) share one bridge: the first
server owns the port, the others relay to it.
Honest about the boundary: the file is readable by any process of your user account (like an
.env) — it protects against other users, sandboxes and a stray client on the port, not against
malware running as you.
Tools
With PS_MCP_FACADE=1 the agent sees nine tools:
| Tool | What it does |
|---|---|
ps_catalog(category?) | categories with counts and operation names; with a category — every operation and its parameters |
ps_do(operation, args) | run any registered operation by name (create_text_layer, distort_layer, recipe_remove_background …) |
ps_batch(ops[]) | several operations in order, one result per op, stops at the first error (stopOnError) |
ps_get_state / ps_get_layers | document and layer state (ExtendScript, 8 s timeout, UXP fallback) |
ps_save_document / ps_export_frame(path) | save (PSD / in place) and a PNG of the current state for the agent to look at — both with UXP fallback |
ps_execute_script | arbitrary ExtendScript (timeout_ms per call) — gate it in your agent policy |
ps_recipe(name, args) | the 16 recipes (remove background, enhance portrait, frequency separation, social variants, CSV → cards, watermark, mockup …) |
ps_uxp(action: ping | batchplay | script) appears when the bridge is on: batchPlay descriptors
and JavaScript in the UXP context (photoshop, uxp, params, await allowed).
Behind the facade: 134 tools — 109 atomic photoshop_* in 21 categories (document, layer,
image, smart_object, transform, filter, adjust, text, selection, mask, action, history, state,
generative, neural, style, color, data, stack, export, artboard) and 16 recipes,
each recipe one history state. Without the facade flag all of them are exposed directly, as in
upstream. Reference: docs/available-tools.md; the fork-specific
photoshop_distort_layer takes corners (four [x, y] in document pixels), mode
(perspective | bilinear) and rasterize for Smart Objects.
Safety model for agents
- One envelope for every failure:
{ ok: false, code, message, suggested_next_tool }. The codes that matter for an autonomous loop:photoshop_busy(Photoshop is modal — tell the user, do not retry blindly),extendscript_timeout(a script is still running — ping until it answers),scratch_disk_full,command_unavailable(the document state forbids the command — not a version problem),no_active_document,generative_credits_exhausted. photoshop_pingnever launches Photoshop and fails while a previous script is still running instead of reporting a healthy connection; other tools launch Photoshop when it is closed, as upstream does.- Gate what Cmd+Z cannot revert:
ps_execute_script,ps_uxp script,close_document,save_documentover the original, batch exports. Everything else is one history state. - Nothing leaves the machine except what your MCP client sends to its model: there is no
analytics, no feedback prompt, no update check. The UXP bridge listens on
127.0.0.1only and requires the shared-secret header. - Upstream's live test suite (
npm run test:mcp-all) edits a scratch document in the running Photoshop; run it with no client work open.
Changes against upstream
See CHANGELOG.md (section 0.4.1) and
THIRD-PARTY-NOTICES.md. In short: the UXP bridge as a second
transport with a shared-secret token; the 9-tool facade; photoshop_distort_layer; photoshop_busy
/ command_unavailable and the 8-second read timeout; telemetry, feedback nudge, web UI, website
and packaging removed. Upstream fixes are merged from
alisaitteke/photoshop-mcp by topic, one at a time
(currently through 1.7.27).
Release history
Each version is described on the **Releases** page — what the server does at that version and what the release added:
- v0.4.5 · 2026-10-03 — fix: Photoshop is detected automatically on the first call (no more «detect Photoshop first»).
- v0.4.4 · 2026-10-01 —
fix: the ChatGPT gateway command under
npx -p. - v0.4.3 · 2026-10-01 — ChatGPT in one command (gateway + tunnel), client icons in Install.
- v0.4.2 · 2026-10-01 —
one-click installs: Claude Desktop extension (
.mcpb), «Add to Cursor», npm package,install.sh/install.ps1that write the client configs. - v0.4.1 · 2026-10-01 — first public release of the IMT fork: the full server (134 tools) on upstream 1.7.27, plus the UXP bridge, the facade, headless corner-pin and the modal-Photoshop error model.
Every change, including the upstream history 1.0.0 – 1.7.27, is in CHANGELOG.md.
License
IMT Non-Commercial License — © Immersive Media Technologies.
- Non-commercial use only. Selling this software, offering it as or inside a paid product or service, or using it in commercial client work requires a separate written license from Immersive Media Technologies.
- Attribution is mandatory. Every use, copy, fork or derived product must credit the creator,
visibly to its users:
PS-MCP-IMT by Immersive Media Technologies — https://github.com/Immersive-Media-Technologies. - No warranty.
Full terms: LICENSE. Third-party notices: THIRD-PARTY-NOTICES.md.
Questions fréquentes
Qu'est-ce que PS-MCP-IMT — Photoshop for AI agents ?
Adobe Photoshop for AI agents on any UI language: 9-tool facade, UXP bridge that works when modal
Comment installer PS-MCP-IMT — Photoshop for AI agents ?
Suivez les étapes d'installation de sa documentation, affichée sur cette page et dans son dépôt.
Faut-il une clé API pour PS-MCP-IMT — Photoshop for AI agents ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
PS-MCP-IMT — Photoshop for AI agents est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient PS-MCP-IMT — Photoshop for AI agents ?
Il est publié par Immersive-Media-Technologies. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.