photoshop-mcp

Puente MCP de Photoshop

Documentación

Servidor Photoshop MCP

Photoshop MCP — AI-driven Photoshop automation

Idiomas: English · 简体中文 · Español · Deutsch · 日本語 · Türkçe · Sitio web

v1.1+ — flujos de trabajo con recetas, menos idas y vueltas, sesiones más ágiles. La interfaz independiente incluye Action Plan (beta) para ejecuciones de planificar-y-ejecutar.

Nota: Este es un proyecto no oficial, mantenido por la comunidad, y no está afiliado ni respaldado por Adobe Inc.

npm version GitHub release Action Plan License: MIT TypeScript Platform MCP Registry Website

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a asistentes de IA como Claude y Cursor controlar Adobe Photoshop de forma programática. Esto te permite crear diseños, manipular imágenes y automatizar flujos de trabajo de Photoshop mediante comandos en lenguaje natural mientras trabajas en tu IDE — o a través de la interfaz web independiente incluida, que admite tanto claves de API como cuentas de suscripción de CLI (Claude Code / Gemini CLI). La interfaz también ofrece un modo Action Plan (beta) opcional que planifica cada paso de Photoshop en una sola llamada de LLM y luego los ejecuta en una sola pasada.

Por qué existe esto

Diseñadores y desarrolladores quieren manejar Photoshop desde asistentes de IA, pero las llamadas ExtendScript en bruto son frágiles: los agentes desperdician tokens en prueba y error, los tipos de capa rompen los filtros, y un comando fallido deja el documento en un estado desconocido.

Photoshop MCP añade conciencia de estado (get_state, get_preview, get_capabilities), herramientas de receta que envuelven resultados de varios pasos en un único paso de deshacer, y envolturas de error estructuradas para que los agentes sepan qué intentar a continuación. La interfaz independiente opcional y el modo Action Plan reducen las idas y vueltas en flujos de trabajo más largos — para que el lenguaje natural pueda realmente producir píxeles, no solo sugerirlos.

Análisis técnico en profundidad: docs/architecture.md.

🖥️ Interfaz independiente (sin necesidad de IDE)

¿No quieres conectarlo a Claude Desktop o Cursor? El mismo paquete incluye una interfaz web totalmente local que te permite chatear con un modelo de IA y manejar Photoshop a través de este servidor MCP por debajo. Conéctate con una clave de API del proveedor o, para Anthropic y Google, reutiliza la sesión OAuth de Claude Code o Gemini CLI — sin necesidad de una clave de API separada.

Standalone UI Screenshot

npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui

Eso es todo. Un servidor local se inicia en 127.0.0.1 (puerto libre aleatorio) y tu navegador predeterminado abre la interfaz de chat automáticamente.

Proveedores compatibles

Elige cualquiera de los siguientes en el primer inicio — usa una clave de API o tu cuenta de suscripción CLI existente (Anthropic y Google):

ProveedorModelosClave de APICuenta CLI
AnthropicClaude Sonnet / Opus / Haikuconsole.anthropic.comnpm i -g @anthropic-ai/claude-codeclaude auth login
OpenAIGPT-5, GPT-4.1, serie oplatform.openai.com
GoogleGemini 2.5 Pro / Flash / Flash-Liteaistudio.google.comnpm i -g @google/gemini-cligemini auth login
OpenRouterMás de 100 modelos de cualquier proveedoropenrouter.ai

Modos de autenticación

  • api_key (predeterminado) — Vercel AI SDK + tu clave de API del proveedor. El uso se factura por token a las tarifas de API; la interfaz muestra el costo estimado por chat.
  • cli_account — Usa tu sesión OAuth local de Claude Code o Gemini CLI. No se almacena ninguna clave de API; la interfaz sondea claude auth status / gemini en modo headless para verificar el inicio de sesión. El uso cuenta contra tu cuota de suscripción, no contra la facturación de API — la barra de estado muestra "Incluido en la suscripción".

Puedes cambiar el método de autenticación por proveedor en Configuración sin perder la otra credencial (por ejemplo, mantener una clave de API mientras pruebas la cuenta CLI y luego volver a cambiar).

Action Plan (beta)

Un modo de ejecución opcional en la interfaz web independiente solo para autenticación con clave de API (cli_account siempre usa el flujo agéntico predeterminado). Actívalo con el interruptor Action Plan junto al selector de modelo en el compositor.

En lugar de un bucle ReAct paso a paso (modelo → herramienta → modelo → herramienta …), Action Plan:

  1. Hace una llamada de LLM de planificación que genera una lista ordenada de tareas con llamadas a herramientas de Photoshop MCP con parámetros.
  2. Ejecuta esas herramientas directamente en secuencia — sin llamadas adicionales al modelo entre pasos.
  3. Ante un paso fallido o una dependencia no resuelta, ejecuta un bucle de reparación acotado (replanifica solo los pasos restantes, hasta 3 veces).

El plan aparece como una lista de tareas en vivo sobre las tarjetas de llamadas a herramientas, con estado por paso (pendingrunningdone / error). Los planes se guardan en el historial del chat para que sobrevivan a una recarga. El interruptor está desactivado por defecto; el flujo agéntico existente no cambia cuando Action Plan está deshabilitado.

Ideal para indicaciones de varios pasos como "elimina el fondo y exporta para web" donde quieres menos llamadas al modelo y una ejecución de extremo a extremo más rápida.

Qué sucede en el primer inicio

  1. Elige un proveedor y selecciona Clave de API o Usa tu cuenta.
  2. Valida la clave o verifica la conexión CLI. La configuración se almacena localmente en ~/.photoshop-mcp/data.db (SQLite, chmod 600). Las claves de API nunca salen de tu máquina; el modo CLI hereda OAuth de ~/.claude/ o ~/.gemini/.
  3. Escribe indicaciones en lenguaje natural. La interfaz transmite la respuesta del modelo, ejecuta llamadas a herramientas de Photoshop en tiempo real y muestra cada llamada como una tarjeta inspeccionable (entrada + resultado).
  4. Cambia de proveedor, método de autenticación o modelo en cualquier momento desde Configuración / selector de modelo — los chats, costos e historial de herramientas se conservan entre sesiones.

Cambiar el método de autenticación más tarde

Abre Configuración desde la barra lateral en cualquier momento:

AcciónModo clave de APIModo cuenta CLI
ConfigurarPegar clave → GuardarInstalar CLI → auth loginVerificar conexión
CambiarElegir Clave de API — la clave almacenada se conservaElegir Usa tu cuenta — la clave no se elimina
Binario personalizadoRuta CLI opcional si claude / gemini no está en PATH
Visualización de costosEstimación por token en la barra de estadoInsignia Incluido en la suscripción

El método de autenticación se almacena por proveedor en ~/.photoshop-mcp/data.db (authMethod: api_key o cli_account). Las configuraciones existentes sin authMethod usan por defecto api_key y siguen funcionando sin cambios.

Banderas de CLI

photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]

Seguridad de la API local

El servidor de la interfaz almacena tus claves de API del proveedor y puede manejar Photoshop, por lo que /api/* no está abierto a todo lo que se ejecuta en tu máquina. Cada solicitud debe pasar tres verificaciones:

  1. Host — debe ser la dirección de bucle local (o el --host al que te vinculaste) en el puerto del servidor. Bloquea el rebinding de DNS.
  2. Origin — cuando está presente, debe coincidir con el origin propio de la interfaz. Bloquea llamadas de navegadores de origen cruzado.
  3. Token de sesión — un secreto aleatorio por inicio. Bloquea otros procesos locales, que pueden falsificar cualquier cabecera pero no pueden leer el token.

El navegador nunca tiene que lidiar con el token: el servidor lo inyecta en el index.html que sirve. Para scripting, léelo desde ~/.photoshop-mcp/ui-session.json (chmod 600) y envíalo como x-psmcp-token o Authorization: Bearer, o fija el tuyo propio con PSMCP_UI_TOKEN antes de iniciar el servidor. Las solicitudes sin un token válido reciben 401 unauthorized.

Notas

  • El agente está restringido solo a las herramientas de Photoshop MCP — las herramientas integradas de shell, archivos y web están deshabilitadas.
  • Pila tecnológica: Vue 3 + Tailwind v4 + shadcn-vue en el frontend; Hono en el backend. El modo de clave de API usa el Vercel AI SDK; el modo de cuenta CLI usa el Claude Agent SDK (Anthropic) o Gemini CLI headless stream-json (Google). Todas las rutas hablan con este mismo servidor Photoshop MCP a través de STDIO.
  • Limitaciones de la cuenta CLI: Gemini headless puede abrir una nueva sesión en cada turno (el historial se antepone a la indicación). La cuenta CLI de Anthropic consume cuota de suscripción. El inicio de sesión OAuth es prioritario para macOS (claude auth login / gemini auth login en Terminal).

Capa de IA / Indicaciones para Photoshop

Sobre las herramientas atómicas photoshop_*, el servidor incluye una capa de IA/indicaciones con opinión propia que ayuda a los LLM anfitriones (Cursor, Claude Desktop, etc.) a traducir solicitudes vagas de usuarios en acciones confiables de Photoshop:

  • instructions del servidor — contrato de flujo de trabajo anunciado en initialize de MCP (haz ping una vez, estado antes de la acción, prefiere recetas, recuperación de errores). Ver src/prompts/instructions.ts.
  • Primitiva prompts de MCP — 23 plantillas predefinidas (16 recetas + 7 guías: ps.enhance_portrait, ps.remove_background, ps.generative_fill, …) a través de prompts/list y prompts/get.
  • Herramientas de receta — 16 herramientas photoshop_recipe_* orientadas a resultados (eliminar fondo, mejorar retrato, preparar para web, exportar variantes sociales, gradación de color, separación de frecuencias, maqueta por lotes, organizar capas, degradado, fusión de cielo, esquivar y quemar, eliminar distracción, carrusel dividido, marca de agua por lotes, foto de pasaporte, csv a tarjetas). Cada una envuelve los pasos en un único estado de historial de Photoshop (un Deshacer revierte todo). 102 herramientas en total (86 atómicas + 16 recetas).
  • IA generativaphotoshop_generative_fill, photoshop_generative_remove, photoshop_generative_expand, photoshop_generative_upscale, photoshop_sky_replacement, photoshop_generate_image (Firefly mediante ExtendScript; se requiere cuenta de Adobe y créditos).
  • Filtros neuronalesphotoshop_neural_filter mediante un plugin de puente UXP opcional (uxp-plugin/): suavizado de piel, armonizar, desenfoque de profundidad, súper zoom y coloreado (B&N → color).
  • Estado y vista previaphotoshop_get_state (instantánea económica), photoshop_get_preview (JPEG en base64 para verificación visual), photoshop_get_capabilities (indicadores de funciones según versión).
  • Errores estructurados — los fallos devuelven envolturas JSON con code y suggested_next_tool para la autocorrección.

Referencia completa: docs/prompt-layer.md.

Verificar paridad: npm run verify:photoshop-prompts. Resultados más recientes: docs/development.md#integration-test-results.

Indicaciones de ejemplo

A continuación se muestran indicaciones de ejemplo que puedes usar con asistentes de IA (Claude, Cursor, etc.) cuando este servidor MCP está configurado. Prefiere herramientas de receta (photoshop_recipe_*) para resultados de varios pasos — cada receta es un único paso de deshacer. Usa herramientas atómicas photoshop_* solo para ediciones de grano fino que ninguna receta cubra.

🧠 Sesión con conciencia de estado (primer paso recomendado)
Ping Photoshop and read capabilities for my installed version.
Get the current document state before changing anything.
Open portrait.jpg, get a downscaled preview so you can verify the subject.
After each major recipe, get another preview to confirm the result.

Recetas

Cada receta envuelve un resultado de varios pasos en un único paso de deshacer y se corresponde 1:1 con una plantilla de indicación ps.*.

✂️ Eliminación de fondo

Remove background: subject isolated on transparency via Select Subject + layer mask
Remove the background from the active portrait layer.
Use Select Subject + a layer mask with a 2px feather. Keep the original pixels behind the mask.
The subject must be on the active layer — not a flat color fill.

Plantilla de indicación MCP equivalente: ps.remove_background con { feather_px: "2", keep_shadow: "false" }.

🧹 Eliminar distracción

Remove distraction: content-aware fill on the current selection
There's a tourist photobombing my landscape on the active layer.
I'll rough-select him with the lasso — then run the remove-distraction recipe with a 1px feather.
Content-aware fill only; don't touch anything outside the selection.

Plantilla de indicación MCP equivalente: ps.remove_distraction con { feather_px: "1" }.

👤 Retoque de retrato

Enhance portrait: skin smoothing + auto tone in one undoable step
Enhance the portrait on the active layer at medium intensity with skin smoothing.
Use the enhance-portrait recipe — I want frequency separation + auto-tone in one undoable step.
If the active layer is text or a Smart Object, rasterize first or pick a raster layer.
Show me a preview when done.

Plantilla de indicación MCP equivalente: ps.enhance_portrait con { intensity: "medium", skin_smoothing: "true" }.

🔥 Esquivar y quemar

Dodge and burn: 50% gray overlay for non-destructive light sculpting
Set up dodge & burn on the active portrait layer: a 50% gray layer in overlay blend mode.
I'll paint with a white/black brush myself — just prepare the non-destructive setup.

Plantilla de indicación MCP equivalente: ps.dodge_burn con { blend_mode: "overlay" }.

🔬 Configuración de separación de frecuencias

Frequency separation: split texture from color into Low and High layers
Set up frequency separation on the active raster layer with a 6px blur radius.
I will paint on the Low and High layers myself — do not apply extra smoothing.
Tell me which layers to edit when the stack is ready.

Plantilla de indicación MCP equivalente: ps.frequency_separation con { radius_px: "6" }.

🌗 Degradado

Gradient fade: melt the subject into the background via a mask gradient
Fade the isolated subject into the background from the bottom up.
Apply a bottom_to_top gradient on the layer mask, 0 to 100%. Keep the mask editable.

Plantilla de indicación MCP equivalente: ps.gradient_fade con { direction: "bottom_to_top" }.

🌤️ Fusión de cielo

Sky blend: replace a blown sky with your own sky image at the horizon
The sky in my landscape is blown out. Blend ~/skies/sunset.jpg in as the new sky,
horizon at 45% of the frame height, feathered so the treeline stays natural.

Plantilla de indicación MCP equivalente: ps.sky_blend con { sky_image_path: "~/skies/sunset.jpg", horizon_pct: "45" }.

🎨 Gradación de color

Apply color grade: flat image to teal-orange via adjustment layers
Apply a warm film color grade to the open document as non-destructive adjustment layers.
Use the apply-color-grade recipe with preset warm_film.
Preview the result when finished.

Plantilla de indicación MCP equivalente: ps.apply_color_grade con { preset: "warm_film" }.

🌐 Preparar para web + exportación social

Prepare for web: sRGB, downscale, sharpen, optimized JPEG Export social variants: one JPEG per platform at spec dimensions
Prepare the active document for web: sRGB, downscale, sharpen, export one optimized JPEG to ~/.photoshop-mcp/exports.
Then export Instagram post and X post variants as separate JPEGs from the same document.
List the output paths in a table.

Plantillas equivalentes: ps.prepare_for_web, ps.export_social_variants.

📦 Reemplazo de mockups por lotes

Batch mockup replace: swap a Smart Object per asset, one render each
I have a mockup PSD open with a Smart Object layer named "Screen".
Replace it with every PNG/JPG in ~/assets/mockups/ and export one JPEG per asset.
Do not place flat layers — swap the Smart Object so perspective is preserved.

Plantilla de prompt MCP equivalente: ps.batch_mockup_replace.

🗂️ Organizar capas

Organize layers: messy stack renamed by kind and grouped into folders
Organize the layer stack: rename by kind, auto-group related layers, preserve originals.
Run the organize-layers recipe, then list layers so I can review the new structure.

Plantilla de prompt MCP equivalente: ps.organize_layers.

🎞️ División de carrusel sin costuras

Split one wide document into numbered carousel slides
Split the active document into a 5-slide seamless Instagram carousel.
Each slide should be 1080x1350 — crop the slices, don't letterbox them.
Give me the exported file paths in swipe order so I can upload them as-is.

Plantilla de prompt MCP equivalente: ps.split_carousel con { slides: "5", size: "1080x1350" }.

💧 Marca de agua por lotes

Watermark every image in a folder
Watermark every photo in ~/photos/portfolio with the text "© Jane Doe 2026".
Bottom-right corner, 40% opacity, small margin from the edges.
Export watermarked JPEGs — never touch the originals.

Plantilla de prompt MCP equivalente: ps.batch_watermark con { assets_dir: "~/photos/portfolio", text: "© Jane Doe 2026", position: "bottom_right", opacity: "40" }.

🛂 Foto de pasaporte / identificación

Turn a portrait into a passport photo at official size
Turn the open portrait into a US passport photo: white background, proper headroom,
exact 600x600 px at 300 DPI. Also give me a 10x15 cm print sheet with copies.
Note: framing is approximated from subject bounds — official acceptance is not guaranteed.

Plantilla de prompt MCP equivalente: ps.passport_photo con { spec: "us_2x2", make_sheet: "true" }.

🪪 CSV → tarjetas (gráficos basados en datos)

CSV rows become data sets; one personalized card exported per row
Generate a name card for every row in ~/cards/speakers.csv using the open template PSD.
PNG output to ~/cards/out — one file per row, named after the row.

Plantilla de prompt MCP equivalente: ps.csv_to_cards con { csv_path: "~/cards/speakers.csv", output_dir: "~/cards/out", format: "PNG" }.

Más ejemplos

🎨 Creación básica de diseño
Create a 1920x1080 Photoshop document with RGB color mode.
Add a light blue background layer and fill it with RGB(240, 248, 255).
Add centered text "Welcome" in 64pt font.
Save as welcome.psd to my Desktop.
🖼️ Diseño con imagen de stock (con Pexels MCP)
Search Pexels for "mountain sunset" images.
Create a 1920x1080 Photoshop document.
Place the downloaded image and fit it to fill the entire canvas.
Apply a subtle Gaussian blur of 3px.
Increase brightness by 15 and contrast by 10.
Add white text "Adventure Awaits" centered at the top in 72pt.
Set the text opacity to 90% and blend mode to OVERLAY.
Save as adventure.jpg with quality 10.
✨ Mejora de fotos
Open photo.jpg from my Desktop in Photoshop.
Get state, then run the enhance-portrait recipe at low intensity.
If I only need quick tone fixes, apply auto levels, auto contrast, and unsharp mask (120%, 1.5, 0) on the active layer instead.
Adjust hue +15 and saturation +15, or use prepare-for-web when I'm ready to export.
For old black-and-white scans, run the colorize neural filter first (requires the UXP bridge plugin).
Save as enhanced-photo.jpg with quality 12.
🎭 Efectos de capa y fusión
Create a 1200x800 document.
Add a new layer named "Background" and fill with RGB(50, 50, 50).
Place logo.png at position (100, 100).
Fit the logo layer to 50% of its current size.
Set blend mode to SCREEN and opacity to 85%.
Add another layer, fill with RGB(255, 100, 50).
Set this layer's blend mode to MULTIPLY and opacity to 60%.
Merge all visible layers.
Save as composite.psd.
📝 Diseño de póster de texto
Create a 1080x1350 portrait document (Instagram story size).
Add a layer and fill with gradient-like color RGB(120, 40, 200).
Add text "SUMMER" at (540, 300) in 96pt.
Change text color to white RGB(255, 255, 255).
Set text alignment to CENTER.
Add another text "2026" at (540, 450) in 128pt, white color.
Apply Gaussian blur 2px to the background layer.
Save as summer-poster.png.
🎬 Procesamiento por lotes
Open image1.jpg.
Resize to 1920x1080.
Apply auto contrast.
Apply subtle sharpen (amount 80%, radius 1.0).
Save as processed-1.jpg with quality 10.
Close without saving changes to original.

Repeat for image2.jpg and image3.jpg.
🖌️ Manipulación creativa
Create a 2000x2000 square document.
Place abstract-pattern.jpg and fit to fill document.
Duplicate the layer.
On the duplicate, apply motion blur at 45 degrees, radius 50px.
Set blend mode to OVERLAY and opacity to 70%.
Add centered text "MOTION" in 120pt white.
Apply a rectangular selection from (200, 200) to (1800, 1800).
Invert the selection and delete (to create a border effect).
Flatten the image.
Save as motion-art.jpg.
🎯 Flujo de trabajo avanzado
Create a 3000x2000 document at 300 DPI for print.
Place hero-image.jpg and fit to fill the canvas.
Duplicate the image layer.
On the duplicate, desaturate it completely.
Set blend mode to LUMINOSITY and opacity to 50%.
Create a new layer named "Overlay".
Fill with RGB(255, 150, 0) and set blend mode to SOFTLIGHT at 30% opacity.
Add text "PORTFOLIO" at top center (1500, 200) in 96pt.
Set text color to white.
Add subtext "2026 Collection" at (1500, 320) in 36pt.
Create a rectangular selection around the text area.
Create a layer mask on the overlay layer.
Merge visible layers.
Save as portfolio-cover.psd.
Export as portfolio-cover.jpg at quality 12.
🔄 Usar acciones
Open my-photo.jpg.
Play the "Vintage Look" action from "My Actions" set.
Adjust brightness by -10 to darken slightly.
Save as vintage-photo.jpg.
⚡ Ejecución de scripts personalizados
Execute this custom ExtendScript code:
app.beep();
alert('Processing started!');
⏮️ Operaciones de deshacer/rehacer
Apply Gaussian blur 15px to the active layer.
[Wait for result]
Actually, that's too much blur. Undo that.
Apply Gaussian blur 5px instead.

O:

Get the history states to see what operations were performed.
Undo the last 3 operations.
Redo 1 step to bring back one operation.
🔁 Recuperación de errores (envolturas estructuradas)
If a recipe returns version_unsupported or generative_unavailable, call get_capabilities and tell me which Photoshop feature is missing.
If a tool fails with suggested_next_tool, follow that hint (e.g. rasterize_layer before a raster-only recipe).
Never guess — read get_state after a failure and propose the next single step.

Características

  • Interfaz web independiente — interfaz de chat local (photoshop-mcp-ui); autenticación por API key o CLI por proveedor (Anthropic, Google)
  • Plan de acción (beta) — modo opcional de planificar-y-ejecutar en la interfaz web (solo API key): una llamada de planificación, ejecución directa de herramientas, reparación limitada en caso de fallo
  • Funciona tanto en Windows como en macOS
  • Compatible con Photoshop 2012-2025+
  • API ExtendScript: Compatibilidad universal mediante automatización AppleScript/COM
  • Detección automática: Encuentra automáticamente la instalación de Photoshop en tu sistema
  • 102 herramientas: 86 photoshop_* atómicas + 16 photoshop_recipe_* de recetas
  • Capa de IA/Prompts: 23 plantillas de prompt MCP (16 recetas + 7 guías), instrucciones del servidor, herramientas de estado/vista previa/capacidades
  • Gestión de documentos: Crear, abrir, guardar, cerrar, recortar documentos
  • Operaciones con capas: Crear, eliminar, duplicar, fusionar, transformar capas
  • Propiedades de capa: Opacidad, modos de fusión, visibilidad, bloqueo
  • Estilos de capa: Sombra paralela, resplandor exterior, trazo, bisel y relieve
  • Formato de texto: Control de fuente, tamaño, color y alineación
  • Colocación de imágenes: Colocar imágenes, abrir archivos, ajustar al documento
  • Filtros: Desenfoque gaussiano, enfocar, ruido, desenfoque de movimiento
  • Ajustes de color: Brillo/Contraste, Tono/Saturación, Curvas, Niveles/Contraste automáticos
  • Corrección de color: Capas de LUT 3D (búsqueda de color), Vibrance, Exposición, Filtro de fotos, Mapa de degradado
  • Gráficos basados en datos: CSV/XML de variables → una imagen por fila ("combinación de correspondencia para imágenes")
  • Apilamiento de imágenes: Modos de pila media/mediana para eliminar turistas y reducir ruido
  • Exportación moderna: PNG/JPEG más WebP/AVIF (nativo, PS 23.2+)
  • Selecciones y máscaras: Selecciones rectangulares, seleccionar sujeto, relleno según contenido, máscara de degradado, máscaras de capa
  • Control de historial: Operaciones de deshacer/rehacer, ver estados del historial
  • Acciones: Reproducir acciones grabadas, ejecutar scripts personalizados
  • Rasterización automática: Convierte capas automáticamente cuando es necesario para filtros
  • Seguimiento de contexto: Devuelve el estado del documento/capa después de cada operación para la conciencia contextual de la IA

Instalación

Instalación con un clic

Install in Cursor Install in VS Code

O desde una terminal — Claude Code:

claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcp

Usar NPX (recomendado)

¡No se requiere instalación! Solo configura tu cliente MCP:

npx @alisaitteke/photoshop-mcp

Para modificar el repositorio localmente, consulta Desde el código fuente en la guía de desarrollo.

Configuración

Para Cursor

Añade a la configuración de Cursor (.cursor/config.json o configuración del espacio de trabajo):

{
  "mcpServers": {
    "photoshop": {
      "command": "npx",
      "args": ["-y", "@alisaitteke/photoshop-mcp"],
      "env": {
        "LOG_LEVEL": "1"
      }
    }
  }
}

Para Claude Desktop

Añade a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS o %APPDATA%\Claude\claude_desktop_config.json en Windows):

{
  "mcpServers": {
    "photoshop": {
      "command": "npx",
      "args": ["-y", "@alisaitteke/photoshop-mcp"],
      "env": {
        "LOG_LEVEL": "1"
      }
    }
  }
}

¿No encuentras el archivo de configuración? En Claude Desktop, abre Configuración → Desarrollador → Editar configuración — se abrirá la ruta correcta para tu instalación (la ruta %APPDATA% puede diferir en algunas configuraciones).

Para Claude Code

Usa la CLI de Claude Code o el SDK de Claude Agent con la misma entrada del servidor MCP.

Recomendado (CLI):

claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcp

JSON manual — fusiona en tu .mcp.json del proyecto o en la configuración MCP de Claude Code (consulta examples/claude-code-mcp.json):

{
  "mcpServers": {
    "photoshop": {
      "command": "npx",
      "args": ["-y", "@alisaitteke/photoshop-mcp"],
      "env": {
        "LOG_LEVEL": "1"
      }
    }
  }
}

SDK de agente (TypeScript) — pasa el mismo bloque mcpServers en tus opciones de query():

import { query } from '@anthropic-ai/claude-agent-sdk';

const q = query({
  prompt: 'List open documents in Photoshop',
  options: {
    mcpServers: {
      photoshop: {
        command: 'npx',
        args: ['-y', '@alisaitteke/photoshop-mcp'],
        env: { LOG_LEVEL: '1' },
      },
    },
    allowedTools: ['mcp__photoshop__*'],
  },
});

Variables de entorno

  • PHOTOSHOP_PATH: (Opcional) Especifica una ruta de instalación de Photoshop personalizada
  • LOG_LEVEL: Nivel de registro (0=DEBUG, 1=INFO, 2=WARN, 3=ERROR)
  • ANALYTICS_DISABLED: Establécelo en 1 o true para deshabilitar por completo los análisis de uso anónimos
  • POSTHOG_DISABLED: Alias heredado para ANALYTICS_DISABLED
  • ANALYTICS_PROVIDER: Backend de análisis — mixpanel (predeterminado) o posthog (reversión)
  • MIXPANEL_TOKEN: (Opcional) Sobrescribe el token del proyecto Mixpanel
  • MIXPANEL_API_HOST: (Opcional) Host de ingesta de Mixpanel (predeterminado: https://api-eu.mixpanel.com)
  • POSTHOG_KEY: (Opcional, heredado) Clave de proyecto PostHog — se usa solo cuando ANALYTICS_PROVIDER=posthog
  • POSTHOG_API_HOST: (Opcional, heredado) Host de ingesta de PostHog (predeterminado: https://a.alisait.com)
  • POSTHOG_UI_HOST: (Opcional, heredado) Host de interfaz de PostHog (predeterminado: https://eu.posthog.com)

Herramientas disponibles

Referencia completa de todas las herramientas photoshop_* atómicas (parámetros, ejemplos y uso): docs/available-tools.md.

Seguimiento de contexto

Cada herramienta devuelve información de contexto completa sobre el estado actual de Photoshop, incluido:

  • Información del documento: Nombre, dimensiones, resolución, modo de color, número de capas
  • Información de la capa activa: Nombre, tipo, opacidad, modo de fusión, visibilidad, estado de bloqueo
  • Estado de selección: Si hay una selección activa
  • Resultado de la operación: Detalles específicos sobre lo que se cambió

Esto permite que los asistentes de IA mantengan la conciencia de:

  • Qué documento está activo
  • En qué capa se está trabajando
  • Propiedades actuales de la capa (opacidad, modo de fusión, etc.)
  • Dimensiones y configuración del documento

Ejemplo de respuesta:

{
  "applied": true,
  "filter": "Gaussian Blur",
  "radius": 10,
  "wasRasterized": true,
  "context": {
    "hasDocument": true,
    "document": {
      "name": "design.psd",
      "width": 1920,
      "height": 1080,
      "resolution": 72,
      "colorMode": "RGBColorMode",
      "layerCount": 3,
      "hasSelection": false
    },
    "activeLayer": {
      "name": "Background",
      "kind": "NORMAL",
      "opacity": 100,
      "blendMode": "NORMAL",
      "visible": true,
      "locked": false,
      "isBackground": false
    }
  }
}

Este contexto ayuda a los asistentes de IA a recordar en qué documento y capa están trabajando en múltiples comandos.


Notas específicas de la plataforma

Windows

  • Usa automatización COM para comunicarse con Photoshop
  • Detección automática basada en el registro para rutas de instalación
  • Compatible con versiones de 32 y 64 bits

macOS

  • Usa AppleScript/OSA para la comunicación con Photoshop
  • Detección automática basada en Spotlight
  • Compatible con múltiples versiones de Photoshop instaladas simultáneamente
  • Autenticación de cuenta CLI (interfaz independiente) es prioritaria en macOS: ejecuta claude auth login / gemini auth login en Terminal; las credenciales se guardan en ~/.claude/ y ~/.gemini/

Versiones de Photoshop compatibles

  • Todas las versiones de Photoshop (2012-2025+): Usa la API ExtendScript mediante AppleScript (macOS) o COM (Windows)

Nota importante: Aunque Photoshop 2022+ admite UXP para complementos, la automatización externa mediante AppleScript/COM solo puede usar ExtendScript. UXP está diseñado para complementos internos y no se puede invocar desde scripts externos. Por lo tanto, este servidor MCP usa ExtendScript para máxima compatibilidad en todas las versiones de Photoshop.

Solución de problemas

Problemas comunes de conexión, scripting y registro: docs/troubleshooting.md.

Interfaz independiente — autenticación de cuenta CLI

SíntomaCausa probableSolución
cli_not_foundClaude Code / Gemini CLI no instaladonpm i -g @anthropic-ai/claude-code o npm i -g @google/gemini-cli
not_authenticatedSin sesión OAuth de CLI (la autenticación por API key / SDK no cuenta)Ejecuta claude auth login o gemini auth login en Terminal, o cambia a autenticación con API key
El cliente SDK funciona, el modo CLI de la interfaz fallaLas credenciales del SDK/API son independientes del OAuth de la CLI de Claude CodeUsa API key en la interfaz independiente, o inicia sesión con claude auth login para el modo de cuenta CLI
claude / gemini no está en PATHUbicación de instalación personalizadaConfiguración → Ruta de CLIVerificar conexión
El chat funciona en el IDE pero no en la interfaz (modo CLI)Los tokens OAuth son solo de CLIUsa Cuenta CLI en la interfaz; las API keys y las sesiones CLI son independientes
Gemini de múltiples turnos parece olvidadizoLa CLI sin interfaz puede iniciar una sesión nueva en cada turnoLimitación conocida; el historial se antepone al prompt (MVP)

Desarrollo

Configuración desde el código fuente, compilación, lint, pruebas de integración (con resultados más recientes) y ejemplos de uso: docs/development.md.

Arquitectura

Diseño del sistema, flujo de datos, abstracción de plataforma y modos de agente de interfaz: docs/architecture.md.

¿Compartes en LinkedIn o redes sociales? Usa images/og-social.png y docs/social-preview.md para la configuración de OG y el texto de la publicación.

Contribuciones

¡Las contribuciones son bienvenidas! Lee CONTRIBUTING.md antes de abrir un PR.

Sobre el mantenedor

Ali Sait Teke — Ingeniero full-stack y arquitecto de software de la era de la IA (Python, Go, Node.js, React, Next.js, Vue).

Este proyecto comenzó con una pregunta práctica: ¿cómo haces que Photoshop sea controlable de forma fiable por LLMs sin scripts frágiles de un solo uso? Creció hasta convertirse en un servidor MCP con 80 herramientas, una capa de recetas/prompts para flujos de trabajo de varios pasos fiables y una interfaz web local para que el trabajo creativo no requiera un IDE.

Lo que demuestra este código base: diseño de sistemas TypeScript, integración del protocolo MCP, automatización de escritorio multiplataforma (AppleScript de macOS / COM de Windows), recuperación de errores estructurada para bucles de agentes y una interfaz local-first orientada a producción (Vue 3 + Hono + SQLite).

Licencia

MIT

Análisis de uso anónimo

Los eventos de uso anónimos y agregados se recopilan de forma predeterminada para mejorar el producto. Puedes optar por no participar en cualquier momento. Detalles completos: docs/anonymous-usage-analytics.md.

Agradecimientos