@synthetic-ai/photoshop-mcp 1.0.0

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.
Files changed (3) hide show
  1. package/README.md +101 -0
  2. package/package.json +48 -0
  3. package/server.mjs +1052 -0
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ # Photoshop MCP
2
+
3
+ Servidor **MCP** para controlar e inspeccionar **Adobe Photoshop** desde Claude (o cualquier
4
+ cliente MCP), al estilo de los MCPs de Synthetic (After Effects / Premiere Pro).
5
+
6
+ Photoshop 2022+ ya no expone automatización COM funcional, así que el control se hace con un
7
+ **plugin puente** que corre *dentro* de Photoshop y se conecta por **WebSocket** a este server.
8
+
9
+ ```
10
+ Claude ──MCP──▶ server.mjs ──WebSocket(127.0.0.1:41219)──▶ plugin puente ──▶ Photoshop
11
+ ```
12
+
13
+ Producto **pago** (licencia mensual/anual, igual estructura que After Effects MCP). El server exige
14
+ una licencia válida (`PS_MCP_LICENSE`) para todas las tools excepto `ps_healthcheck` / `ps_info` /
15
+ `ps_help`. Conseguí una licencia en https://synthetic.com.ar/photoshop-mcp.
16
+
17
+ ## Componentes
18
+
19
+ - **`server.mjs`** — server MCP (Node, `@modelcontextprotocol/sdk` + `ws`). Expone las tools.
20
+ - **`bridge-cep/`** — plugin puente **CEP** (HTML/JS + ExtendScript). Se instala sin herramientas
21
+ extra (copiar a la carpeta de extensiones CEP + `PlayerDebugMode=1`). **Es el que está probado.**
22
+ - **`bridge-uxp/`** — plugin puente **UXP** (alternativa moderna; requiere UXP Developer Tools).
23
+
24
+ ## Convención de tools (estilo Synthetic)
25
+
26
+ - **Diagnóstico/app:** `ps_healthcheck`, `ps_info`, `ps_help`
27
+ - **Escape hatches:** `run_jsx`, `run_jsx_json`, `run_action`
28
+ - **Dominio:** `snake_case` verbo_sustantivo, sin prefijo —
29
+ `list_layers`, `add_text_layer`, `set_layer_opacity`, `export_png`, `apply_gaussian_blur`,
30
+ `adjust_brightness_contrast`, `select_rectangle`, `add_layer_mask`…
31
+
32
+ Dominios cubiertos: documentos, capas, texto, color, selección, máscaras, transform, filtros,
33
+ ajustes, efectos de capa, smart objects, guías, acciones, export. `ps_help` devuelve el catálogo
34
+ completo. Para cualquier cosa no nombrada todavía: `run_jsx` (ExtendScript) o `run_action`
35
+ (Action Manager).
36
+
37
+ ## Instalación
38
+
39
+ ### 1) Server
40
+ ```
41
+ npm install
42
+ ```
43
+
44
+ ### 2) Plugin puente (CEP — recomendado, sin herramientas extra)
45
+
46
+ **Opción A — instalador firmado (.zxp), para clientes finales:**
47
+ Bajá el `.zxp` desde https://synthetic.com.ar/dashboard/downloads (necesita licencia activa),
48
+ abrilo con [ZXP Installer](https://aescripts.com/learn/zxp-installer/) y reiniciá Photoshop.
49
+
50
+ **Opción B — desde el código fuente, para desarrollo:**
51
+ 1. Copiar `bridge-cep/` a `%APPDATA%\Adobe\CEP\extensions\com.matias.psmcpbridge\`.
52
+ 2. Habilitar extensiones sin firma: en `HKCU\Software\Adobe\CSXS.N\PlayerDebugMode = "1"`
53
+ (para N = 9..12, según versión de Photoshop). *(Reversible.)*
54
+ 3. Reiniciar Photoshop → **Ventana ▸ Extensiones (heredadas) ▸ PS-MCP Bridge**.
55
+ 4. El panel se conecta solo al server (reintenta cada 3s); debe decir **«Conectado»**.
56
+
57
+ ### 3) Licencia del panel
58
+
59
+ El panel necesita tu licencia para bajar actualizaciones (auto-update). Abrí el panel dentro de
60
+ Photoshop, clic en **⚙ (Settings)**, pegá tu clave de licencia y **Save license** — queda guardada
61
+ localmente junto a la extensión (`license.json`), no depende de variables de entorno del proceso
62
+ de Photoshop.
63
+
64
+ ### 4) Registrar el MCP en el cliente
65
+ ```
66
+ claude mcp add photoshop -- node "RUTA/server.mjs"
67
+ ```
68
+ Y agregá tu licencia al bloque `env` de esa entrada en la config del cliente MCP (Claude Desktop /
69
+ Cursor / Codex):
70
+ ```json
71
+ "env": { "PS_MCP_LICENSE": "tu-clave-de-licencia" }
72
+ ```
73
+ Sin esta variable, el server responde `License required` en todas las tools excepto
74
+ `ps_healthcheck` / `ps_info` / `ps_help`.
75
+
76
+ ## Uso
77
+
78
+ 1. Tener Photoshop abierto con el panel **PS-MCP Bridge** conectado.
79
+ 2. Arrancar el server (lo hace el cliente MCP al registrarlo).
80
+ 3. `ps_healthcheck` para confirmar; `ps_help` para ver todas las tools.
81
+
82
+ Las tools de export (`export_png`, `export_layer_png`, `export_jpg`) guardan a disco y devuelven
83
+ la ruta, para inspección visual.
84
+
85
+ ## Build del panel (.zxp)
86
+
87
+ ```
88
+ ZXP_SIGN_CMD="/ruta/a/ZXPSignCmd.exe" npm run package-cep
89
+ ```
90
+ Empaqueta `bridge-cep/`, estampa la versión de `package.json` en `CSXS/manifest.xml` y en la
91
+ constante `PANEL_VERSION` de `main.js`, ofusca `main.js` (no `host.jsx` — corre en el motor
92
+ ExtendScript de Photoshop, no en Chromium, y el código ofuscado puede fallar ahí) y firma el
93
+ `.zxp` resultante. Ver `scripts/package-cep.mjs` para el detalle completo del pipeline.
94
+
95
+ ## Notas
96
+
97
+ - Puerto configurable con `PS_MCP_PORT` (default 41219). Si lo cambiás, ajustá `PORT` en el
98
+ `main.js` del bridge y los `domains` del manifest UXP.
99
+ - Windows/macOS con Photoshop 2022+.
100
+ - El panel chequea actualizaciones al abrir y ofrece aplicarlas en un click (in-panel auto-update),
101
+ igual que el resto de los paneles CEP de Synthetic.
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@synthetic-ai/photoshop-mcp",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Control Adobe Photoshop with 409 AI tools via MCP — layers, text, masks, filters, adjustments, smart objects, export. By Synthetic (synthetic.com.ar).",
6
+ "homepage": "https://synthetic.com.ar/photoshop-mcp",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/matiasEltrece/photoshop-mcp"
10
+ },
11
+ "author": "Synthetic <hola@synthetic.com.ar> (https://synthetic.com.ar)",
12
+ "license": "UNLICENSED",
13
+ "keywords": [
14
+ "mcp",
15
+ "photoshop",
16
+ "adobe",
17
+ "model-context-protocol",
18
+ "claude",
19
+ "ai",
20
+ "synthetic"
21
+ ],
22
+ "main": "./server.mjs",
23
+ "bin": {
24
+ "photoshop-mcp": "./server.mjs"
25
+ },
26
+ "files": [
27
+ "server.mjs",
28
+ "README.md"
29
+ ],
30
+ "scripts": {
31
+ "start": "node server.mjs",
32
+ "package-cep": "node scripts/package-cep.mjs"
33
+ },
34
+ "engines": {
35
+ "node": ">=18"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "dependencies": {
41
+ "@modelcontextprotocol/sdk": "^1.6.0",
42
+ "ws": "^8.18.0",
43
+ "zod": "^3.23.8"
44
+ },
45
+ "devDependencies": {
46
+ "javascript-obfuscator": "^4.1.1"
47
+ }
48
+ }