@alisaitteke/photoshop-mcp 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -7
- package/dist/api/extendscript.d.ts +54 -0
- package/dist/api/extendscript.d.ts.map +1 -1
- package/dist/api/extendscript.js +535 -0
- package/dist/api/extendscript.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +10 -0
- package/dist/core/server.js.map +1 -1
- package/dist/prompts/registry.d.ts +1 -1
- package/dist/prompts/registry.d.ts.map +1 -1
- package/dist/prompts/registry.js +2 -0
- package/dist/prompts/registry.js.map +1 -1
- package/dist/prompts/templates/csv-to-cards.d.ts +3 -0
- package/dist/prompts/templates/csv-to-cards.d.ts.map +1 -0
- package/dist/prompts/templates/csv-to-cards.js +43 -0
- package/dist/prompts/templates/csv-to-cards.js.map +1 -0
- package/dist/tools/color-adjustment-tools.d.ts +4 -0
- package/dist/tools/color-adjustment-tools.d.ts.map +1 -0
- package/dist/tools/color-adjustment-tools.js +147 -0
- package/dist/tools/color-adjustment-tools.js.map +1 -0
- package/dist/tools/data-tools.d.ts +4 -0
- package/dist/tools/data-tools.d.ts.map +1 -0
- package/dist/tools/data-tools.js +132 -0
- package/dist/tools/data-tools.js.map +1 -0
- package/dist/tools/export-tools.d.ts +4 -0
- package/dist/tools/export-tools.d.ts.map +1 -0
- package/dist/tools/export-tools.js +62 -0
- package/dist/tools/export-tools.js.map +1 -0
- package/dist/tools/recipes/csv-to-cards.d.ts +4 -0
- package/dist/tools/recipes/csv-to-cards.d.ts.map +1 -0
- package/dist/tools/recipes/csv-to-cards.js +257 -0
- package/dist/tools/recipes/csv-to-cards.js.map +1 -0
- package/dist/tools/recipes/index.d.ts +1 -1
- package/dist/tools/recipes/index.d.ts.map +1 -1
- package/dist/tools/recipes/index.js +3 -0
- package/dist/tools/recipes/index.js.map +1 -1
- package/dist/tools/stack-tools.d.ts +4 -0
- package/dist/tools/stack-tools.d.ts.map +1 -0
- package/dist/tools/stack-tools.js +72 -0
- package/dist/tools/stack-tools.js.map +1 -0
- package/dist/tools/style-tools.d.ts +4 -0
- package/dist/tools/style-tools.d.ts.map +1 -0
- package/dist/tools/style-tools.js +75 -0
- package/dist/tools/style-tools.js.map +1 -0
- package/dist/utils/js-string.d.ts.map +1 -1
- package/dist/utils/js-string.js +1 -0
- package/dist/utils/js-string.js.map +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
[](https://opensource.org/licenses/MIT)
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
|
+
[](https://registry.modelcontextprotocol.io)
|
|
21
22
|
|
|
22
23
|
A Model Context Protocol (MCP) server that enables AI assistants like Claude and Cursor to control Adobe Photoshop programmatically. This allows you to create designs, manipulate images, and automate Photoshop workflows through natural language commands while working in your IDE — or through the bundled **standalone web UI**, which supports both API keys and CLI subscription accounts (Claude Code / Gemini CLI). The UI also offers an opt-in **Action Plan (beta)** mode that plans every Photoshop step in one LLM call, then runs them in a single pass.
|
|
23
24
|
|
|
@@ -171,16 +172,16 @@ requests into reliable Photoshop actions:
|
|
|
171
172
|
- **Server `instructions`** — workflow contract advertised on MCP `initialize`
|
|
172
173
|
(ping once, state-before-action, prefer recipes, error recovery). See
|
|
173
174
|
[`src/prompts/instructions.ts`](src/prompts/instructions.ts).
|
|
174
|
-
- **MCP `prompts` primitive** —
|
|
175
|
+
- **MCP `prompts` primitive** — 23 pre-engineered templates (16 recipe + 7 guide:
|
|
175
176
|
`ps.enhance_portrait`, `ps.remove_background`, `ps.generative_fill`, …)
|
|
176
177
|
via `prompts/list` and `prompts/get`.
|
|
177
|
-
- **Recipe tools** —
|
|
178
|
+
- **Recipe tools** — 16 outcome-oriented `photoshop_recipe_*` tools (remove
|
|
178
179
|
background, enhance portrait, prepare for web, export social variants, color
|
|
179
180
|
grade, frequency separation, batch mockup, organize layers, gradient fade,
|
|
180
181
|
sky blend, dodge & burn, remove distraction, split carousel, batch watermark,
|
|
181
|
-
passport photo). Each wraps steps in a single
|
|
182
|
-
Photoshop history state (one Undo reverts all). **
|
|
183
|
-
+
|
|
182
|
+
passport photo, csv to cards). Each wraps steps in a single
|
|
183
|
+
Photoshop history state (one Undo reverts all). **102 tools total** (86 atomic
|
|
184
|
+
+ 16 recipe).
|
|
184
185
|
- **Generative AI** — `photoshop_generative_fill`, `photoshop_generative_remove`,
|
|
185
186
|
`photoshop_generative_expand`, `photoshop_generative_upscale`, `photoshop_sky_replacement`,
|
|
186
187
|
`photoshop_generate_image` (Firefly via ExtendScript; Adobe account + credits required).
|
|
@@ -387,6 +388,17 @@ Note: framing is approximated from subject bounds — official acceptance is not
|
|
|
387
388
|
|
|
388
389
|
Equivalent MCP prompt template: `ps.passport_photo` with `{ spec: "us_2x2", make_sheet: "true" }`.
|
|
389
390
|
|
|
391
|
+
#### 🪪 CSV → cards (data-driven graphics)
|
|
392
|
+
|
|
393
|
+
<img src="./images/recipe-csv-cards.svg" alt="CSV rows become data sets; one personalized card exported per row" width="640" />
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
Generate a name card for every row in ~/cards/speakers.csv using the open template PSD.
|
|
397
|
+
PNG output to ~/cards/out — one file per row, named after the row.
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Equivalent MCP prompt template: `ps.csv_to_cards` with `{ csv_path: "~/cards/speakers.csv", output_dir: "~/cards/out", format: "PNG" }`.
|
|
401
|
+
|
|
390
402
|
### More examples
|
|
391
403
|
|
|
392
404
|
<details>
|
|
@@ -585,15 +597,20 @@ Never guess — read get_state after a failure and propose the next single step.
|
|
|
585
597
|
- **Supports Photoshop 2012-2025+**
|
|
586
598
|
- **ExtendScript API**: Universal compatibility via AppleScript/COM automation
|
|
587
599
|
- **Auto-Detection**: Automatically finds Photoshop installation on your system
|
|
588
|
-
- **
|
|
589
|
-
- **AI/Prompt Layer**:
|
|
600
|
+
- **102 Tools**: 86 atomic `photoshop_*` + 16 recipe `photoshop_recipe_*`
|
|
601
|
+
- **AI/Prompt Layer**: 23 MCP prompt templates (16 recipe + 7 guide), server instructions, state/preview/capabilities tools
|
|
590
602
|
- **Document Management**: Create, open, save, close, crop documents
|
|
591
603
|
- **Layer Operations**: Create, delete, duplicate, merge, transform layers
|
|
592
604
|
- **Layer Properties**: Opacity, blend modes, visibility, locking
|
|
605
|
+
- **Layer Styles**: Drop shadow, outer glow, stroke, bevel & emboss
|
|
593
606
|
- **Text Formatting**: Font, size, color, alignment controls
|
|
594
607
|
- **Image Placement**: Place images, open files, fit to document
|
|
595
608
|
- **Filters**: Gaussian Blur, Sharpen, Noise, Motion Blur
|
|
596
609
|
- **Color Adjustments**: Brightness/Contrast, Hue/Saturation, Curves, Auto Levels/Contrast
|
|
610
|
+
- **Color Grading**: 3D LUT (Color Lookup) layers, Vibrance, Exposure, Photo Filter, Gradient Map
|
|
611
|
+
- **Data-Driven Graphics**: CSV/variables XML → one image per row ("mail merge for images")
|
|
612
|
+
- **Image Stacking**: Mean/median stack modes for tourist removal & noise reduction
|
|
613
|
+
- **Modern Export**: PNG/JPEG plus WebP/AVIF (native, PS 23.2+)
|
|
597
614
|
- **Selections & Masks**: Rectangular selections, select subject, content-aware fill, gradient mask, layer masks
|
|
598
615
|
- **History Control**: Undo/Redo operations, view history states
|
|
599
616
|
- **Actions**: Play recorded actions, execute custom scripts
|
|
@@ -602,6 +619,17 @@ Never guess — read get_state after a failure and propose the next single step.
|
|
|
602
619
|
|
|
603
620
|
## Installation
|
|
604
621
|
|
|
622
|
+
### One-click install
|
|
623
|
+
|
|
624
|
+
[](https://cursor.com/en/install-mcp?name=photoshop&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhbGlzYWl0dGVrZS9waG90b3Nob3AtbWNwIl19)
|
|
625
|
+
[](https://vscode.dev/redirect/mcp/install?name=photoshop&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40alisaitteke%2Fphotoshop-mcp%22%5D%7D)
|
|
626
|
+
|
|
627
|
+
Or from a terminal — Claude Code:
|
|
628
|
+
|
|
629
|
+
```bash
|
|
630
|
+
claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcp
|
|
631
|
+
```
|
|
632
|
+
|
|
605
633
|
### Using NPX (Recommended)
|
|
606
634
|
|
|
607
635
|
No installation required! Just configure your MCP client:
|
|
@@ -314,6 +314,60 @@ export declare const ExtendScriptSnippets: {
|
|
|
314
314
|
generativeUpscale: (targetScale: number) => string;
|
|
315
315
|
skyReplacement: (skyImagePath: string) => string;
|
|
316
316
|
generateImage: (prompt: string, width: number, height: number) => string;
|
|
317
|
+
/**
|
|
318
|
+
* Apply a layer style (drop shadow / outer glow / stroke / bevel) via Action Manager layerEffects.
|
|
319
|
+
*/
|
|
320
|
+
applyLayerStyle: (options: {
|
|
321
|
+
style: "drop_shadow" | "outer_glow" | "stroke" | "bevel_emboss";
|
|
322
|
+
red: number;
|
|
323
|
+
green: number;
|
|
324
|
+
blue: number;
|
|
325
|
+
opacity: number;
|
|
326
|
+
size: number;
|
|
327
|
+
distance: number;
|
|
328
|
+
angle: number;
|
|
329
|
+
}) => string;
|
|
330
|
+
/**
|
|
331
|
+
* Color Lookup (3D LUT) adjustment layer — cinematic grades via built-in or file-based LUTs.
|
|
332
|
+
*/
|
|
333
|
+
applyLut: (lut: string) => string;
|
|
334
|
+
/**
|
|
335
|
+
* Vibrance adjustment layer.
|
|
336
|
+
*/
|
|
337
|
+
adjustVibrance: (vibrance: number, saturation: number) => string;
|
|
338
|
+
/**
|
|
339
|
+
* Exposure adjustment layer.
|
|
340
|
+
*/
|
|
341
|
+
adjustExposure: (exposure: number, offset: number, gamma: number) => string;
|
|
342
|
+
/**
|
|
343
|
+
* Photo Filter adjustment layer (warming/cooling/tint with density).
|
|
344
|
+
*/
|
|
345
|
+
applyPhotoFilter: (red: number, green: number, blue: number, density: number, preserveLuminosity: boolean) => string;
|
|
346
|
+
/**
|
|
347
|
+
* Gradient Map adjustment layer (black→white custom gradient by default).
|
|
348
|
+
*/
|
|
349
|
+
applyGradientMap: (reverse: boolean) => string;
|
|
350
|
+
/**
|
|
351
|
+
* List data sets defined on the active document (data-driven graphics).
|
|
352
|
+
*/
|
|
353
|
+
listDataSets: () => string;
|
|
354
|
+
/**
|
|
355
|
+
* Import variables/data sets XML (Image > Variables > Data Sets > Import).
|
|
356
|
+
*/
|
|
357
|
+
importDataSets: (xmlPath: string) => string;
|
|
358
|
+
/**
|
|
359
|
+
* Batch-export one file per data set: applies each data set then saves a copy.
|
|
360
|
+
*/
|
|
361
|
+
applyDataSetsExport: (outputDir: string, format: "JPEG" | "PNG" | "PSD", datasetNames: string[]) => string;
|
|
362
|
+
/**
|
|
363
|
+
* Load image files into one document, convert to a smart object and apply a stack mode.
|
|
364
|
+
* Classic "remove tourists with median stack" without any generative AI.
|
|
365
|
+
*/
|
|
366
|
+
imageStackMode: (files: string[], mode: string) => string;
|
|
367
|
+
/**
|
|
368
|
+
* Export a copy of the active document as PNG/JPEG (Save for Web) or WebP/AVIF (native, PS 23.2+).
|
|
369
|
+
*/
|
|
370
|
+
exportAs: (filePath: string, format: "PNG" | "JPEG" | "WEBP" | "AVIF", quality: number) => string;
|
|
317
371
|
};
|
|
318
372
|
/**
|
|
319
373
|
* Generate ExtendScript code with error handling
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqGH,mGAAmG;AACnG,eAAO,MAAM,4BAA4B,8rDAsCxC,CAAC;AAOF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wlHA6FlC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,eAAe,GACf,eAAe,GACf,eAAe,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;OAEG;;IASH;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAW3C;;OAEG;;IAYH;;OAEG;4BACqB,MAAM,wDAA8C,MAAM;IAiClF;;OAEG;2BACoB,MAAM;IA6C7B;;OAEG;0BACmB,MAAM;IAe5B;;OAEG;sBACe,MAAM;IAYxB;;OAEG;uBACgB,MAAM;IAazB;;OAEG;sBACe,MAAM;IAYxB;;OAEG;;IAUH;;OAEG;sBACe,MAAM;IAkBxB;;OAEG;;IAaH;;;;;;;OAOG;qBACc,MAAM,SAAS,MAAM,QAAQ,MAAM;IAyCpD;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAiB3C;;OAEG;;IAwCH;;OAEG;8BACuB,MAAM;IA6ChC;;OAEG;;IA8DH;;OAEG;+BACwB,MAAM;IAoBjC;;OAEG;wBACiB,MAAM,UAAU,MAAM;IAoB1C;;OAEG;2BACoB,MAAM;IAmB7B;;OAEG;+BACwB,MAAM;IAqBjC;;OAEG;mCAC4B,MAAM;IAqBrC;;OAEG;kCAC2B,OAAO;IAerC;;OAEG;6BACsB,OAAO;IAehC;;OAEG;2BACoB,MAAM;IAgB7B;;;;;;;OAOG;+BACwB,MAAM;IAoBjC;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;gCACyB,MAAM;IA+BlC;;OAEG;+BACwB,MAAM,UAAU,MAAM,aAAa,MAAM;IAyBpE;;OAEG;4BACqB,MAAM,gBAAgB,MAAM,iBAAiB,OAAO;IA0B5E;;OAEG;6BACsB,MAAM,UAAU,MAAM;IAwB/C;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAoB/D;;;;;;;OAOG;+BACwB,MAAM,cAAc,MAAM,aAAa,MAAM;IA2DxE;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;4BACoB,YAAY;IAmBnC;;OAEG;;IA+CH;;OAEG;;IAmBH;;OAEG;yBACkB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAgBvE;;OAEG;4BACqB,MAAM,aAAa,MAAM;IAwBjD;;OAEG;wBACiB,MAAM;IAuC1B;;OAEG;wBACiB,MAAM,SAAS,MAAM,QAAQ,MAAM;IAqBvD;;OAEG;kCAC2B,MAAM;IAiBpC;;OAEG;iCAC0B,MAAM;IAiBnC;;OAEG;4BACqB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAe1E;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IA0CH;;OAEG;;IA2BH;;OAEG;;IA6BH;;OAEG;oCAEU,qBAAqB,iDAGrB,MAAM;IA0DnB;;OAEG;;IAwBH;;OAEG;;IA4BH;;OAEG;6BACsB,MAAM,iBAAiB,MAAM;IAStD;;OAEG;gCACyB,MAAM;IAIlC;;OAEG;;IAgDH;;OAEG;;IAwCH;;OAEG;;IAwCH;;OAEG;;IAoCH;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAiD/D;;OAEG;;IAuBH;;OAEG;;IA4BH;;OAEG;;IAuCH;;OAEG;;IAuCH;;OAEG;;IAMH;;OAEG;;IA4CH;;;OAGG;;6BAyCsB,MAAM;kCA8CD,MAAM,qBAAqB,OAAO;kCAkDlC,MAAM,UAAU,MAAM;qCAqCnB,MAAM;mCAgCR,MAAM;4BAuCb,MAAM,SAAS,MAAM,UAAU,MAAM;
|
|
1
|
+
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"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"}
|