MCP (Model Context Protocol) server for Photoshop automation via Chrome DevTools Protocol.
This allows AI assistants to execute JavaScript code directly in Adobe Photoshop's UXP environment.
@bubblydoo/uxp-toolkit runtimepnpm add @bubblydoo/photoshop-mcp
# Using the CLI
pnpm photoshop-mcp
# Or with a custom port
PORT=3020 pnpm photoshop-mcp
# Or run directly
node dist/index.js
The server starts at http://localhost:3020/mcp by default.
pnpx @modelcontextprotocol/inspector --transport http --server-url http://localhost:3020/mcp
Add to your Cursor MCP settings:
{
"mcpServers": {
"photoshop": {
"url": "http://localhost:3020/mcp"
}
}
}
executeExecute JavaScript code in Photoshop's UXP context.
Input:
name (string): Descriptive name for the operation (shown in UI)code (string): ESM JavaScript code to executeFeatures:
@bubblydoo/uxp-toolkit and @bubblydoo/uxp-toolkit/commands are available as importsexport default to return valuesExample:
import { app } from '@bubblydoo/uxp-toolkit';
export default app.activeDocument?.name ?? 'No document open';
read-schemaRead the TypeScript type definitions for the toolkit packages.
Input:
package (enum): Either @bubblydoo/uxp-toolkit or @bubblydoo/uxp-toolkit/commandsread-docsRead the documentation for the toolkit packages.
| Variable | Default | Description |
|---|---|---|
PORT |
3020 |
HTTP server port |
PHOTOSHOP_MCP_PLUGIN_PATH |
(internal fake-plugin) | Path to UXP plugin directory |
PHOTOSHOP_MCP_PLUGIN_ID |
com.example.fakeplugin |
Plugin ID from manifest.json |
POST /mcp - MCP protocol endpoint (Streamable HTTP transport)GET /mcp - MCP protocol endpoint (for SSE connections)GET /health - Health check (returns { "status": "ok" })┌─────────────────┐ HTTP/MCP ┌──────────────────┐
│ AI Assistant │ ◄───────────────► │ photoshop-mcp │
│ (Cursor, etc) │ │ (Hono server) │
└─────────────────┘ └────────┬─────────┘
│ CDP
▼
┌──────────────────┐
│ Photoshop │
│ (UXP Runtime) │
└──────────────────┘
# Build
pnpm build
# Watch mode
pnpm dev
# Start server
pnpm start