photoshop-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@photoshop-mcpcreate a 1080x1080 Instagram post, add a bold headline, and export it as PNG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
photoshop-mcp
An MCP server that lets an MCP client (Claude Code, Claude Desktop) work in a live Adobe Photoshop: open or place reference images, build documents and check the result with previews.
MCP client --stdio--> server (src/, Node) <--WebSocket 127.0.0.1 + token-- UXP plugin in Photoshop (plugin/)A UXP plugin can only make outgoing connections, so the server listens and the plugin connects to it. Each server
writes ~/.photoshop-mcp/bridges/<pid>.json (port + token, mode 0600). The plugin checks that folder every 2 s and
connects to every server it finds, so several Claude sessions can share one Photoshop. Commands run one at a time,
because Photoshop has one modal state. Every change runs in executeAsModal as one history step (one undo).
Status: 0.5.0. Needs Photoshop 26.9+ (tested on 27.10). Tested against a fake Photoshop (npm test) that models
every quirk found live, and against real Photoshop with npm run live. Changes: CHANGELOG.md.
Setup
Needs Node 22.18+ and Photoshop 26.9+ (tested: Photoshop 2026, 27.10).
npm install
npm run buildLoad the plugin (once). Either install the package: npm run package, then double-click
dist/photoshop-mcp-<version>.ccx (Creative Cloud installs it; not yet tried on a machine without Developer Mode), or
load it for development:
Photoshop: Settings > Plugins > Enable Developer Mode, then restart Photoshop.
Open Adobe UXP Developer Tools: Add Plugin > choose
plugin/manifest.json> Load. Accept the prompt for full file access (needed to read the bridge folder and your images).In Photoshop: Plugins > Photoshop MCP. The panel shows "Connected to 1 MCP server" once a server runs.
Register the server with Claude Code:
claude mcp add photoshop -- node /absolute/path/to/photoshop-mcp/dist/index.jsAfter changing plugin-src/, run npm run build and press Reload in UXP Developer Tools.
Related MCP server: Photoshop MCP Server
Tools
Group | Tool | What it does |
Documents |
| Open documents, and one document's size, mode and layer tree (ids, kinds, bounds). Defaults left out. |
| New RGB document (width, height, resolution, white / black / transparent). | |
| Open an image file (or base64 data) as its own document. | |
| Place an image as a smart-object layer: | |
| JPEG of the document or one layer, shrunk to | |
| Save as PNG / JPEG / PSD / GIF (sandboxed path, no overwrite unless asked, waits for the file). | |
Text |
| Create or edit text: font, size, colour, alignment, tracking, leading, caps, centre. Reports a substituted font. |
| Installed fonts and their PostScript names. | |
Selection |
| Rect / ellipse / polygon / all / none / inverse / subject / a layer's pixels; add / subtract / intersect; expand, contract, smooth, feather; make a layer mask from it. |
Colour |
| Colours at points and a palette of the main colours with their share. |
Layers |
| Name, visibility, opacity, fill, blend mode, lock, clipping; move, scale, rotate, flip about the centre; stacking order. |
| New layer / group, duplicate, delete, group, merge, rasterize. | |
Document |
| Crop, resize image (aspect kept), resize canvas, trim, rotate, flatten. |
| List states, undo / redo, go to a state. | |
Looks |
| Gaussian / motion blur, noise, high pass, unsharp mask, sharpen, median, dust & scratches, min / max, twirl, pinch, offset, clouds, despeckle. |
| Solid or gradient fill layer, full canvas or shaped (rect / ellipse / polygon becomes its mask). | |
| Brightness / contrast, hue / saturation, vibrance, black & white, levels, curves, photo filter, gradient map, invert, posterize, threshold. | |
| Stroke, drop shadow, outer / inner glow, colour overlay; keeps the other effects. | |
Anything else |
| Photoshop action descriptors, as one undo step. |
| Record what the user does by hand, as descriptors to replay with | |
| Search and read Adobe's Photoshop UXP reference (cached on disk; the only tool that uses the network). |
Errors are {error:{code,message,hint}} (arguments that fail the schema come back as the MCP SDK's own
validation text). code is one of NOT_FOUND, BAD_ARGS, PS_ERROR, BUSY
(Photoshop is in a dialog or modal tool), BRIDGE_DOWN, TIMEOUT, FORBIDDEN or UNSUPPORTED.
Reference images
An image you paste into the chat is visible to the model, but its bytes don't reach the server. Give the file's
path instead ("place ~/Desktop/ref.png"), or the client can pass base64 as data. Typical flow:
open_image (or create_document at the reference's size), then place_image with opacity: 40, locked: true,
build over it, and preview to compare.
Settings
Variable | Default | |
| home + temp | Folders path arguments may point into ( |
| 60000 | Per-command limit in Photoshop. |
| 4000 | How long a call waits for the plugin to connect. |
|
| Tests only: the plugin always reads the default. |
|
|
|
Development
npm test # build, then test/*.test.ts (no Photoshop needed)
npm run typecheck # server, plugin and tests
npm run live # every tool against real Photoshop (plugin loaded, panel open); creates "mcp-live" documents
npm run check-api # the Photoshop API the plugin declares, against Adobe's reference
npm run package # dist/photoshop-mcp-<version>.ccxtest/tools-document.test.ts,tools-edit.test.ts,tools-layers-looks.test.ts: the built plugin's commands in a vm againsttest/fake-ps.ts, which models what real Photoshop does (changes only inexecuteAsModal, a busy modal state, Photoshop's enums only, the quirks listed in CLAUDE.md).test/e2e.test.ts: the built server over stdio with a real MCP client, plus the real plugin over a real WebSocket: sandboxing (also insidebatch_playdescriptors), base64 uploads, timeouts, disconnects, bad tokens, two servers, stale bridge files, outdated plugin builds, the error format.test/docs.test.ts(uxp_docsagainst a local stand-in for GitHub),slim.test.ts,registry.test.ts,static.test.ts. CI (.github/workflows/test.yml) runs the typecheck, the tests and the package.
Security
The server listens on 127.0.0.1 only, with a random token per run (bridge files are mode 0600). Path arguments, and
every _path inside batch_play descriptors, must be inside PS_MCP_ALLOWED_DIRS. The plugin itself asks for full
file access (to read the bridge folder and your images) and network: all: Photoshop's manifest has no reliable way
to allow only a local WebSocket with a changing port. uxp_docs is the only tool that reaches the internet (GitHub).
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
- mcpOAuthco.aistoryhub
Remote MCP server for AIStoryHub: stories, chapters, story bible, Voiceprints, AI generation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables remote control of Adobe Photoshop on macOS and Windows via MCP, supporting multiple backends including AppleScript, PowerShell, and UXP plugin.13MIT
- AlicenseNot gradedqualityDmaintenanceEnables automation of Photoshop tasks such as PSD editing, layer toggling, text insertion, and exporting through MCP clients like Claude or Cursor.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets AI assistants drive Adobe Photoshop on Windows through ExtendScript and COM automation, offering ~122 tools for documents, layers, text, filters, color, selections, masks, layout QA, and design systems.MIT
- AlicenseNot gradedqualityBmaintenanceEnables controlling Adobe Photoshop from an MCP client, providing tools for layers, adjustments, masks, selections, filters, text, actions, and file operations, with configurable permission levels and extension support.1MIT