pslab
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
pslab
What it is
pslab is a Photoshop UXP plugin plus a local MCP server, so Claude can edit Photoshop documents by command. The plugin runs inside Photoshop and connects to the server over a local WebSocket (ws://localhost:9777); the server exposes Photoshop actions as MCP tools to Claude Desktop and Claude Code.
Edits are non-destructive by default: adjustment layers, masks and pasted pixel layers, one undo step per tool call. A bundled skill, interior-photo-edit, encodes a workflow for room photos: lighting, glare, replacing an object from a reference shot, and Instagram export.
Related MCP server: Photoshop MCP Server
Requirements
Photoshop 2026 (27.0 or later). Light, Clarity and Color-and-vibrance adjustment layers need 27.10 or later.
Node.js 24.
macOS.
scripts/register-mcp.shwrites~/Library/Application Support/Claude/claude_desktop_config.jsonand runsclaude mcp add.The UXP Developer Tool (from Creative Cloud) to sideload the plugin.
Install
In Creative Cloud, install the UXP Developer Tool.
In Photoshop, enable developer mode (Settings > Plugins > Enable Developer Mode) and restart Photoshop if asked.
In the UXP Developer Tool, choose Add Plugin, select
plugin/manifest.json, then click Load. Open the panel in Photoshop (Plugins > pslab) and click Connect.Build and register the server:
npm install npm run build -w server scripts/register-mcp.shRestart Claude Desktop / Claude Code so it picks up the server.
Install the skill:
scripts/install-skill.sh(symlinksskills/interior-photo-editinto~/.claude/skills/).
The plugin manifest asks for localFileSystem: "fullAccess" because export writes JPGs to the export folder and open_document reads files you name. The server binds 127.0.0.1 only and refuses connections that come from browser origins.
Tools
All coordinates are image pixels. doc is a document id from get_document; omitted, the active document is used.
See
Tool | Purpose |
| Document summary (size, ppi, profile, layer tree with ids) and the list of open documents |
| Open an image file from an absolute path as a new document |
| render_preview | Downscaled JPEG of the document or a region; returns scale (image px per preview px) |
| region_stats | Mean RGB and luminance, histogram and clipped-pixel percentages for a box |
Note: a Light adjustment layer reports kind light (pslab reads Photoshop's brightness-mode flag; legacy Brightness/Contrast reports brightnessContrast), Clarity and dehaze layers report clarity, and Color and vibrance layers report vibrance.
Edit
Tool | Purpose |
| Add an adjustment layer: |
| Change an existing adjustment layer's values in place (same types and params as |
| Neutralise a colour cast from a grey/white patch with a per-channel Levels layer placed directly above the Background; |
| Add an empty named pixel layer |
| Replace a layer's mask with a feathered polygon (optionally inverted) |
| Add a mask from Select Subject or Object Selection inside a box |
| Paint white or black brush strokes onto a layer's mask |
| Change opacity, blend mode, visibility, name, or invert the mask |
| Delete one layer; needs |
Masks
Tool | Purpose |
| Replace a layer's mask with a luminance range of the composite ( |
| Replace a layer's mask with a linear ( |
| Replace a layer's mask with a colour range (sampled 5x5 mean or given |
| Read-only downscaled JPEG of a layer's mask (white = revealed) with |
Composite
Tool | Purpose |
| Select an object (or the main subject) in a document |
| Copy the selection or a layer into another document, scaled and positioned |
| Build a contracted, feathered mask from a layer's transparency |
| Match a pasted layer's tone to a reference region with clipped Hue/Sat and Curves |
| Gaussian blur as a smart filter |
Geometry and cleanup
Tool | Purpose |
| Rotate a "Straightened" smart-object copy of the Background by |
| Remove something with Content-Aware Fill into a box or polygon; the patch lands on a new named layer |
| Copy a box of the image to a new named layer at another spot, optionally with a feathered edge |
Output
Tool | Purpose |
| Crop the document to a ratio (e.g. |
| Write an sRGB JPEG (default long edge 1350 px) to the export root; |
| Save the document as PSD or JPG; needs |
| Write a layered PSD copy next to the exports ( |
Shoot workflow
Tool | Purpose |
| Copy an adjustment stack (with masks) onto the top of another document, keeping its order; one undo step in the destination, the source is unchanged |
| Open every image in a folder (optional |
| One side-by-side JPEG: before (listed layers hidden) on the left, after on the right; leaves no history |
| One JPEG tiling the composites of up to 24 open documents in a grid |
Developer tool: dev_events returns recorded Photoshop events for discovering batchPlay descriptors.
Safety
crop,export,save,save_psdanddelete_layerdo nothing unless called withconfirm: true.Every editing call is one undo step in Photoshop (read-only tools and the file writers export, save and save_psd add none).
delete_layerrefuses the Background layer (PROTECTED_LAYER). There is no flatten or close-document tool.exportworks on a temporary copy; the open document is untouched, even with apreset(the ratio crop happens on the copy, unlikecrop). It overwrites a file with the same name.save_psdnever overwrites a file: it adds-editwhen the target would be the document's own file and-2,-3... when the name is taken. It saves a copy, so the open document keeps its own file (unlikesavewithformat: psd, which rebinds the document to the new file).straighten,content_aware_fillandclone_fromput their result on a new layer; the Background is never edited.Exports go to
~/Documents/pslab-exports/<shoot>/<filename>, where<shoot>is the name of the source file's folder, used as the export subfolder. SetPSLAB_EXPORT_ROOTto change the root.
Troubleshooting
Not connected: open the pslab panel in Photoshop and click Connect.
Permission denied on the socket: in
plugin/manifest.jsonsetnetwork.domainsto"all", then reload the plugin in the UXP Developer Tool.After every Photoshop restart: reload the plugin in the UXP Developer Tool, then open the panel.
Tools missing in Claude: re-run
scripts/register-mcp.shand restart Claude Desktop / Claude Code.Several Claude apps at once: every Claude app or session starts its own pslab server (Claude Desktop starts two). The first one owns port 9777 and talks to Photoshop; the others forward their tool calls to it, so every chat works. When the owner quits, one of the others takes over within about 5 s and the panel reconnects on its own within about 15 s. The server log says
bridge listening on 127.0.0.1:9777for the owner andfollowing owner pid <n>for the others; setPSLAB_DEBUG=1to also log mode changes and each forwarded call.PORT_BUSY: port 9777 is held by something that is not pslab. The error names the process; quit it, or set
PSLAB_PORT(and the panel's Port field) to another port.Can't find an export: files are under
~/Documents/pslab-exports/<shoot>/unlessPSLAB_EXPORT_ROOTis set.
Development
npm testruns the server and plugin tests.npm run build -w serverbuilds the server toserver/dist.scripts/dev-harness.mjsis a development tool that runs the real server in-process and exposes tool calls over HTTP on127.0.0.1:9778. It is loopback-only with no authentication; do not expose it.Layout:
server/(MCP server and WebSocket bridge),plugin/(UXP plugin),skills/(Claude skills),scripts/(install and register helpers),docs/(design, development log and research notes).
Disclaimer
pslab is an unofficial project. It is not affiliated with or endorsed by Adobe or Anthropic. Photoshop and UXP are trademarks of Adobe. Use at your own risk.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for AI photo editing: nothing to install, no desktop photo editor needed.
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
Holiday photo MCP server: list and fetch personal holiday photos inline in Claude chat.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseAqualityDmaintenanceA professional MCP server that lets AI assistants directly control Adobe Photoshop for document creation, layer management, filters, adjustments, shapes, text, and design intelligence like palette generation and font pairing.322MIT
- 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 gradedqualityDmaintenanceAn MCP server that enables AI assistants to programmatically control Adobe Photoshop through natural language, supporting design, image manipulation, and workflow automation.4,977 npmMIT
- AlicenseNot gradedqualityDmaintenanceAn 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.2MIT