Photopea MCP Server

Crie posters, edite fotos e manipule imagens diretamente do seu terminal. Alimentado pelo Photopea — uma alternativa gratuita e baseada em navegador ao Photoshop — conectado ao seu agente de IA via MCP.

Documentação

Photopea

Photopea MCP Server

Crie pôsteres, edite fotos e transforme imagens diretamente do seu terminal. Alimentado por Photopea -- uma alternativa gratuita e baseada em navegador ao Photoshop -- conectado ao seu agente de IA via MCP.

Glama score npm version license node

photopea-mcp-server MCP server

Demo

Demo

Prompt usado nesta demonstração: examples/album-cover-demo.md

Como Funciona

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

Seu agente envia comandos de edição através do protocolo MCP. O servidor os traduz em chamadas de API JavaScript do Photopea e os executa por meio de uma ponte WebSocket para o navegador.

Nota: Uma janela do navegador será aberta automaticamente na primeira chamada de ferramenta. Isso é esperado -- o Photopea é executado inteiramente no navegador e o servidor precisa dele para realizar operações de edição de imagem.

Início Rápido

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

Em seguida, inicie uma nova sessão do Claude Code e peça para editar imagens. O editor do Photopea será aberto no seu navegador automaticamente na primeira chamada de ferramenta.

Instalação

Claude Code

npx (recomendado):

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

Instalação global:

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

Claude Desktop

Adicione ao arquivo de configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS):

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

Cursor

Adicione às configurações MCP do Cursor (.cursor/mcp.json no seu projeto ou ~/.cursor/mcp.json globalmente):

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

VS Code (Copilot)

Adicione a .vscode/mcp.json no seu projeto:

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

Windsurf

Adicione às configurações MCP do Windsurf (~/.windsurf/mcp.json):

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

Ferramentas Disponíveis

Documento (5 ferramentas)

FerramentaDescrição
photopea_create_documentCria um novo documento com dimensões e configurações especificadas
photopea_open_fileAbre uma imagem de uma URL ou caminho de arquivo local
photopea_get_document_infoObtém informações do documento ativo (nome, dimensões, resolução, modo de cor)
photopea_resize_documentRedimensiona o documento ativo (reamostra o conteúdo para caber)
photopea_close_documentFecha o documento ativo

Camada (11 ferramentas)

FerramentaDescrição
photopea_add_layerAdiciona uma nova camada de arte vazia
photopea_add_fill_layerAdiciona uma camada de preenchimento de cor sólida
photopea_delete_layerExclui uma camada por nome ou índice
photopea_select_layerTorna uma camada ativa por nome ou índice
photopea_set_layer_propertiesDefine opacidade, modo de mesclagem, visibilidade, nome ou estado de bloqueio
photopea_move_layerTranslada uma camada por deslocamento x/y
photopea_duplicate_layerDuplica uma camada com nome novo opcional
photopea_reorder_layerMove uma camada na pilha (acima, abaixo, topo, base)
photopea_group_layersAgrupa camadas nomeadas em um grupo de camadas
photopea_ungroup_layersDesagrupa um grupo de camadas
photopea_get_layersObtém a árvore completa de camadas como JSON

Texto e Forma (3 ferramentas)

FerramentaDescrição
photopea_add_textAdiciona uma camada de texto em coordenadas especificadas
photopea_edit_textEdita conteúdo ou estilo de uma camada de texto existente
photopea_add_shapeAdiciona uma forma (retângulo ou elipse)

Imagem e Efeitos (9 ferramentas)

FerramentaDescrição
photopea_place_imageColoca uma imagem de URL ou caminho local
photopea_apply_adjustmentAplica brilho/contraste, matiz/saturação, níveis ou curvas
photopea_apply_filterAplica desfoque gaussiano, nitidez, máscara de nitidez, ruído ou desfoque de movimento
photopea_transform_layerEscala, gira ou inverte uma camada
photopea_add_gradientAplica um preenchimento de gradiente linear
photopea_make_selectionCria uma seleção retangular, elíptica ou completa
photopea_modify_selectionExpande, contrai, suaviza ou inverte uma seleção
photopea_fill_selectionPreenche a seleção atual com uma cor
photopea_clear_selectionDesfaz a seleção atual

Exportação e Utilitários (6 ferramentas)

FerramentaDescrição
photopea_export_imageExporta para PNG, JPG, WebP, PSD ou SVG
photopea_load_fontCarrega uma fonte personalizada de uma URL (TTF, OTF, WOFF2)
photopea_list_fontsLista fontes disponíveis, com filtro de pesquisa opcional
photopea_run_scriptExecuta JavaScript arbitrário do Photopea
photopea_undoDesfaz uma ou mais ações
photopea_redoRefaz uma ou mais ações

Exemplos de Uso

Após a instalação, peça ao seu agente para realizar tarefas de edição de imagem:

Criar um pôster:

"Crie um documento 1920x1080 com fundo azul escuro, adicione o título 'Hello World' em Arial branco 72px e exporte como PNG para ~/Desktop/poster.png"

Editar uma foto:

"Abra ~/photos/portrait.jpg, aumente o brilho em 30, aplique um leve desfoque gaussiano de 2px e exporte como JPG para ~/Desktop/edited.jpg"

Compor imagens:

"Crie um documento 1200x630, coloque ~/assets/background.png como camada base, depois coloque ~/assets/logo.png e mova-o para o canto superior direito"

Ajustes em lote:

"Abra ~/photos/sunset.jpg, aplique matiz/saturação com +20 de saturação, aplique uma máscara de nitidez com quantidade 50 e raio 2, depois exporte como PNG"

Desenvolvimento

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

Comandos

ComandoDescrição
npm run buildCompila TypeScript para dist/
npm run devModo de observação com recarga automática
npm testExecuta testes unitários e de integração
npm startInicia o servidor

Arquitetura

O servidor tem quatro componentes principais:

Servidor MCP (src/server.ts) -- Registra todas as 34 ferramentas com o SDK MCP e conecta via transporte stdio.

Ponte WebSocket (src/bridge/websocket-server.ts) -- Gerencia a conexão entre o servidor MCP e o navegador. Enfileira solicitações de execução de script e lida com respostas com tempos limite.

Construtor de Scripts (src/bridge/script-builder.ts) -- Funções puras que traduzem parâmetros de ferramentas em chamadas de API JavaScript do Photopea. Cada função construtora gera uma string de script que o Photopea pode executar.

Frontend do Navegador (src/frontend/index.html) -- Um aplicativo de página única que carrega o Photopea em um iframe, conecta-se à ponte WebSocket e transmite scripts para o Photopea via postMessage. Retorna os resultados de volta pelo 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

Segurança

  • O servidor MCP vincula-se a 127.0.0.1 (somente localhost) e não é acessível pela rede.
  • A ferramenta photopea_run_script executa JavaScript arbitrário dentro do iframe isolado do Photopea. Ela é marcada como destrutiva e requer aprovação do usuário em clientes MCP que suportam anotações de ferramentas.
  • As operações de arquivo (open_file, export_image, place_image) leem e gravam arquivos com as mesmas permissões do usuário que executa o servidor.

Limitações Conhecidas

  • Scripts pesados (por exemplo, gradientes com muitos passos de cor) podem fazer com que a interface do navegador do Photopea fique sem resposta. As operações ainda são concluídas com sucesso em segundo plano e as exportações funcionarão conforme o esperado.
  • Atualizar a página do navegador descartará todo o trabalho não salvo. Exporte seus documentos antes de atualizar.
  • Apenas uma aba do navegador deve estar aberta por vez. Várias abas entrarão em conflito pela conexão WebSocket.
  • A ferramenta reorder_layer pode fazer com que a interface do Photopea fique sem resposta. Para evitar isso, crie camadas na ordem desejada em vez de reordená-las após a criação.

Requisitos

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

Licença

MIT