Photopea MCP Server

Diseña carteles, edita fotos y manipula imágenes directamente desde tu terminal. Impulsado por Photopea, una alternativa gratuita basada en navegador a Photoshop, conectada a tu agente de IA a través de MCP.

Documentación

Photopea

Photopea MCP Server

Diseña carteles, edita fotos y transforma imágenes directamente desde tu terminal. Impulsado por Photopea -- una alternativa gratuita basada en navegador a Photoshop -- conectado a tu agente de IA mediante MCP.

Glama score npm version license node

photopea-mcp-server MCP server

Demostración

Demo

Prompt utilizado en esta demostración: examples/album-cover-demo.md

Cómo funciona

graph LR
    A[Agent] <-->|stdio| B[MCP Server]
    B <-->|WebSocket| C[Browser]
    C <-->|postMessage| D[Photopea]

Tu agente envía comandos de edición a través del protocolo MCP. El servidor los traduce en llamadas a la API de JavaScript de Photopea y los ejecuta mediante un puente WebSocket hacia el navegador.

Nota: Se abrirá una ventana del navegador automáticamente en la primera llamada a una herramienta. Esto es esperado -- Photopea se ejecuta completamente en el navegador y el servidor lo necesita para realizar operaciones de edición de imágenes.

Inicio rápido

claude mcp add -s user photopea -- npx -y photopea-mcp-server

Luego inicia una nueva sesión de Claude Code y pídele que edite imágenes. El editor de Photopea se abrirá en tu navegador automáticamente en la primera llamada a una herramienta.

Instalación

Claude Code

npx (recomendado):

claude mcp add -s user photopea -- npx -y photopea-mcp-server

Instalación global:

npm install -g photopea-mcp-server
claude mcp add -s user photopea -- photopea-mcp-server

Claude Desktop

Añade a tu archivo de configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):

{
  "mcpServers": {
    "photopea": {
      "command": "npx",
      "args": ["-y", "photopea-mcp-server"]
    }
  }
}

Cursor

Añade a la configuración de MCP de Cursor (.cursor/mcp.json en tu proyecto o ~/.cursor/mcp.json globalmente):

{
  "mcpServers": {
    "photopea": {
      "command": "npx",
      "args": ["-y", "photopea-mcp-server"]
    }
  }
}

VS Code (Copilot)

Añade a .vscode/mcp.json en tu proyecto:

{
  "servers": {
    "photopea": {
      "command": "npx",
      "args": ["-y", "photopea-mcp-server"]
    }
  }
}

Windsurf

Añade a la configuración de MCP de Windsurf (~/.windsurf/mcp.json):

{
  "mcpServers": {
    "photopea": {
      "command": "npx",
      "args": ["-y", "photopea-mcp-server"]
    }
  }
}

Herramientas disponibles

Documento (5 herramientas)

ToolDescription
photopea_create_documentCrear un nuevo documento con dimensiones y configuración especificadas
photopea_open_fileAbrir una imagen desde una URL o ruta de archivo local
photopea_get_document_infoObtener información del documento activo (nombre, dimensiones, resolución, modo de color)
photopea_resize_documentRedimensionar el documento activo (remuestrea el contenido para ajustarlo)
photopea_close_documentCerrar el documento activo

Capa (11 herramientas)

ToolDescription
photopea_add_layerAñadir una nueva capa de arte vacía
photopea_add_fill_layerAñadir una capa de relleno de color sólido
photopea_delete_layerEliminar una capa por nombre o índice
photopea_select_layerActivar una capa por nombre o índice
photopea_set_layer_propertiesEstablecer opacidad, modo de fusión, visibilidad, nombre o estado de bloqueo
photopea_move_layerTrasladar una capa mediante desplazamiento x/y
photopea_duplicate_layerDuplicar una capa con nombre nuevo opcional
photopea_reorder_layerMover una capa en la pila (arriba, abajo, superior, inferior)
photopea_group_layersAgrupar capas nombradas en un grupo de capas
photopea_ungroup_layersDesagrupar un grupo de capas
photopea_get_layersObtener el árbol completo de capas como JSON

Texto y forma (3 herramientas)

ToolDescription
photopea_add_textAñadir una capa de texto en coordenadas especificadas
photopea_edit_textEditar contenido o estilo de una capa de texto existente
photopea_add_shapeAñadir una forma (rectángulo o elipse)

Imagen y efectos (9 herramientas)

ToolDescription
photopea_place_imageColocar una imagen desde URL o ruta local
photopea_apply_adjustmentAplicar brillo/contraste, tono/saturación, niveles o curvas
photopea_apply_filterAplicar desenfoque gaussiano, enfocar, máscara de enfoque, ruido o desenfoque de movimiento
photopea_transform_layerEscalar, rotar o voltear una capa
photopea_add_gradientAplicar un relleno de degradado lineal
photopea_make_selectionCrear una selección rectangular, elíptica o completa
photopea_modify_selectionExpandir, contraer, difuminar o invertir una selección
photopea_fill_selectionRellenar la selección actual con un color
photopea_clear_selectionDeseleccionar la selección actual

Exportar y utilidades (6 herramientas)

ToolDescription
photopea_export_imageExportar a PNG, JPG, WebP, PSD o SVG
photopea_load_fontCargar una fuente personalizada desde una URL (TTF, OTF, WOFF2)
photopea_list_fontsListar fuentes disponibles, con filtro de búsqueda opcional
photopea_run_scriptEjecutar JavaScript arbitrario de Photopea
photopea_undoDeshacer una o más acciones
photopea_redoRehacer una o más acciones

Ejemplos de uso

Una vez instalado, pide a tu agente que realice tareas de edición de imágenes:

Crear un cartel:

"Crea un documento de 1920x1080 con un fondo azul oscuro, añade el título 'Hello World' en Arial blanco de 72px y expórtalo como PNG a ~/Desktop/poster.png"

Editar una foto:

"Abre ~/photos/portrait.jpg, aumenta el brillo en 30, aplica un ligero desenfoque gaussiano de 2px y exporta como JPG a ~/Desktop/edited.jpg"

Componer imágenes:

"Crea un documento de 1200x630, coloca ~/assets/background.png como capa base, luego coloca ~/assets/logo.png y muévelo a la esquina superior derecha"

Ajustes por lotes:

"Abre ~/photos/sunset.jpg, aplica tono/saturación con +20 de saturación, aplica una máscara de enfoque con cantidad 50 y radio 2, luego exporta como PNG"

Desarrollo

git clone https://github.com/attalla1/photopea-mcp-server.git
cd photopea-mcp-server
npm install
npm run build

Comandos

CommandDescription
npm run buildCompilar TypeScript a dist/
npm run devModo de observación con recarga automática
npm testEjecutar pruebas unitarias y de integración
npm startIniciar el servidor

Arquitectura

El servidor tiene cuatro componentes principales:

Servidor MCP (src/server.ts) -- Registra las 34 herramientas con el SDK de MCP y se conecta mediante transporte stdio.

Puente WebSocket (src/bridge/websocket-server.ts) -- Gestiona la conexión entre el servidor MCP y el navegador. Pone en cola las solicitudes de ejecución de scripts y maneja las respuestas con tiempos de espera.

Constructor de scripts (src/bridge/script-builder.ts) -- Funciones puras que traducen los parámetros de las herramientas en llamadas a la API de JavaScript de Photopea. Cada función constructora genera una cadena de script que Photopea puede ejecutar.

Frontend del navegador (src/frontend/index.html) -- Una aplicación de una sola página que carga Photopea en un iframe, se conecta al puente WebSocket y transmite scripts a Photopea mediante postMessage. Devuelve los resultados a través del WebSocket.

src/
  index.ts              # Entry point: HTTP server, browser launch, MCP startup
  server.ts             # MCP server initialization and tool registration
  bridge/
    websocket-server.ts # WebSocket bridge with request queue
    script-builder.ts   # Photopea JS code generators
    types.ts            # Protocol message types
  tools/
    document.ts         # Document operations (5 tools)
    layer.ts            # Layer operations (11 tools)
    text.ts             # Text and shape operations (3 tools)
    image.ts            # Image, adjustment, filter operations (9 tools)
    export.ts           # Export and utility operations (6 tools)
  utils/
    file-io.ts          # Local file read/write, URL fetching
    platform.ts         # Port discovery, browser launch
  frontend/
    index.html          # Browser UI with Photopea iframe

Seguridad

  • El servidor MCP se vincula a 127.0.0.1 (solo localhost) y no es accesible desde la red.
  • La herramienta photopea_run_script ejecuta JavaScript arbitrario dentro del iframe aislado de Photopea. Está marcada como destructiva y requiere aprobación del usuario en clientes MCP que admitan anotaciones de herramientas.
  • Las operaciones de archivo (open_file, export_image, place_image) leen y escriben archivos con los mismos permisos que el usuario que ejecuta el servidor.

Limitaciones conocidas

  • Los scripts pesados (por ejemplo, degradados con muchos pasos de color) pueden hacer que la interfaz del navegador de Photopea no responda. Las operaciones aún se completan correctamente en segundo plano y las exportaciones funcionarán como se espera.
  • Refrescar la página del navegador descartará todo el trabajo no guardado. Exporta tus documentos antes de refrescar.
  • Solo debe haber una pestaña del navegador abierta a la vez. Varias pestañas entrarán en conflicto por la conexión WebSocket.
  • La herramienta reorder_layer puede hacer que la interfaz de Photopea no responda. Para evitarlo, crea las capas en el orden deseado en lugar de reordenarlas después de crearlas.

Requisitos

  • Node.js >= 18
  • Un navegador web moderno (Chrome, Firefox, Edge, Safari)

Licencia

MIT