Figma Copilot
Permite que assistentes de IA interajam e automatizem designs do Figma de forma programática.
Documentação
Figma Copilot
Um servidor Model Context Protocol (MCP) que permite que assistentes de IA interajam programaticamente com designs do Figma. Compatível com qualquer cliente MCP, incluindo Cursor, Claude Desktop e outros aplicativos habilitados para MCP. Oferece recursos avançados de manipulação de texto, operações em lote e capacidades abrangentes de automação de design.
Créditos
Este projeto é baseado em cursor-talk-to-figma-mcp por Sonny Lazuardi.
Aviso Legal
Este é um projeto independente e não é afiliado, mantido oficialmente, autorizado, endossado ou patrocinado pela Figma, Inc. Todos os nomes de produtos e empresas são marcas registradas™ ou marcas registradas® de seus respectivos proprietários.
Principais Aprimoramentos
v0.3.2 (Mais recente)
- Preservação de Formatação de Texto - Atualizações de texto não perdem mais a formatação (negrito, itálico, cores, fontes). Veja o Guia de Operações de Texto Aprimoradas.
- Operações em Lote - Melhoria de desempenho de 50-90% para operações em massa. Veja o Guia de Operações em Lote.
- Tratamento de Erros Aprimorado - Mensagens de erro específicas e acionáveis com sugestões
- Soluções de Timeout - Novas opções de varredura com controle de profundidade e resultados parciais
- Operações de Texto Inteligentes - Localizar/substituir com preservação de formatação
Aprimoramentos Anteriores
- Corrigido o erro "Cannot unwrap symbol" ao trabalhar com fontes mistas. Veja a Documentação de Tratamento de Fontes.
- Carregamento de fontes melhorado com a API
getRangeAllFontNames() - Melhor tratamento de erros com
Promise.allSettled()para carregamento de fontes - Retornos de valor seguros para evitar problemas de serialização
- Registro aprimorado para depuração de problemas de fontes
Estrutura do Projeto
src/talk_to_figma_mcp/- Servidor MCP TypeScript para integração com Figmasrc/figma_copilot_plugin/- Plugin Figma para comunicação com clientes MCPsrc/socket.ts- Servidor WebSocket que facilita a comunicação entre o servidor MCP e o plugin Figma
Começando
- Instale o Bun se ainda não tiver:
curl -fsSL https://bun.sh/install | bash
- Execute a configuração para configurar o MCP
bun setup
- Inicie o servidor WebSocket
bun socket
- Servidor MCP
bunx figma-copilot
- NOVO Instale o plugin Figma a partir da página da comunidade do Figma ou instale localmente
Guia de Início Rápido
Tutoriais em vídeo em breve!
Exemplo de Automação de Design
Substituição em massa de conteúdo de texto
Agradecimentos a @dusskapark por contribuir com o recurso de substituição em massa de texto.
Propagação de Substituições de Instância Outra contribuição de @dusskapark Propague substituições de instância de componente de uma instância de origem para várias instâncias de destino com um único comando. Esse recurso reduz drasticamente o trabalho repetitivo de design ao trabalhar com instâncias de componente que precisam de personalizações semelhantes.
Melhorias de Desempenho (v0.3.2)
Com base no uso real em produção com criação de infográficos em massa:
| Operação | Antes v0.3.2 | Depois v0.3.2 | Melhoria |
|---|---|---|---|
| Clonar 20 nós | 50 segundos | 5 segundos | 90% mais rápido |
| Atualizar 112 nós de texto | 15 minutos | 30 segundos | 96% mais rápido |
| Escanear documento grande | Timeout após 30s | 3 segundos | Sem timeouts |
| Atualização de texto + formatação | 2 chamadas separadas | 1 chamada combinada | 50% menos chamadas de API |
Configuração e Instalação Manual
Servidor MCP: Integração com Clientes MCP
Adicione o servidor à configuração do seu cliente MCP. Por exemplo, no ~/.cursor/mcp.json do Cursor ou na configuração do Claude Desktop:
{
"mcpServers": {
"figma-copilot": {
"command": "bunx",
"args": ["figma-copilot@latest"]
}
}
}
Servidor WebSocket
Inicie o servidor WebSocket:
bun socket
Plugin Figma
- No Figma, vá em Plugins > Desenvolvimento > Novo Plugin
- Escolha "Vincular plugin existente"
- Selecione o arquivo
src/figma_copilot_plugin/manifest.json - O plugin agora deve estar disponível em seus plugins de desenvolvimento do Figma
Guia para Windows + WSL
- Instale o bun via PowerShell
powershell -c "irm bun.sh/install.ps1|iex"
- Descomente o hostname
0.0.0.0emsrc/socket.ts
// uncomment this to allow connections in windows wsl
hostname: "0.0.0.0",
- Inicie o websocket
bun socket
Uso
- Inicie o servidor WebSocket
- Instale o servidor MCP no seu cliente MCP
- Abra o Figma e execute o Plugin Figma Copilot
- Conecte o plugin ao servidor WebSocket entrando em um canal usando
join_channel - Use seu cliente MCP para se comunicar com o Figma usando as ferramentas MCP
Ferramentas MCP
O servidor MCP fornece as seguintes ferramentas para interagir com o Figma:
Documento e Seleção
get_document_info- Obter informações sobre o documento Figma atualget_current_context- Obter contexto abrangente incluindo seleção, slide focado (se estiver no modo Slides) e opcionalmente informações do documento- DEPRECADO: Useget_selectionget_current_contextem vez dissoread_my_design- Obter informações detalhadas do nó sobre a seleção atual sem parâmetrosget_nodes- Obter informações detalhadas sobre um ou mais nós (aceita ID único ou array)- DEPRECADO: Useget_node_infoget_nodescom ID de nó único em vez disso- DEPRECADO: Useget_nodes_infoget_nodescom array de IDs de nós em vez disso- DEPRECADO: Useget_focused_slideget_current_contextcom a opção includeSlideDetails em vez disso- DEPRECADO: Useget_slides_modeget_current_contextcom a opção includeSlideDetails em vez disso
Anotações
get_annotations- Obter todas as anotações no documento atual ou em um nó específicoset_annotation- Criar ou atualizar uma anotação com suporte a markdownset_multiple_annotations- Criar/atualizar várias anotações em lote de forma eficientescan_nodes_by_types- Escanear nós com tipos específicos (útil para encontrar alvos de anotação)
Prototipagem e Conexões
get_reactions- Obter todas as reações de protótipo de nós com animação de destaque visualset_default_connector- Definir um conector FigJam copiado como o estilo de conector padrão para criar conexões (deve ser definido antes de criar conexões)create_connections- Criar linhas de conector FigJam entre nós, com base em fluxos de protótipo ou mapeamento personalizado
Criação de Elementos
create_rectangle- Criar um novo retângulo com posição, tamanho e nome opcionalcreate_frame- Criar um novo frame com posição, tamanho e nome opcionalcreate_text- Criar um novo nó de texto com propriedades de fonte personalizáveis
Operações de Texto
Operações Básicas de Texto
- DEPRECADO: Usescan_text_nodesscan_nodes_with_optionscomnodeTypes: ['TEXT']em vez dissoscan_nodes_with_options- Varredura aprimorada com controle de profundidade, tratamento de timeout e resultados parciaisset_text_content- Definir o conteúdo de texto de um único nó de texto (Nota: perde formatação)set_multiple_text_contents- Atualizar vários nós de texto em lote de forma eficiente (Nota: perde formatação)
Texto com Preservação de Formatação (v0.3.2)
Veja o Guia de Operações de Texto Aprimoradas para uma visão geral.
update_text_preserve_formatting- Atualizar texto preservando toda a formatação de caracteres (negrito, itálico, cores, fontes)smart_text_replace- Localizar e substituir texto preservando a formatação das partes não alteradasset_multiple_text_contents_with_styles- Atualizar texto em lote com formatação em uma única operação
Estilização de Texto
Veja o Guia de Estilização de Texto para uso detalhado.
set_text_style_range- Aplicar estilização de texto (negrito, itálico, sublinhado, tachado) a intervalos específicos de caracteresget_text_style_range- Obter estilização de texto para um intervalo específicoset_text_decoration_range- Definir propriedades avançadas de decoração de textoget_text_decoration_range- Obter propriedades de decoração de texto para um intervaloset_range_font- Alterar família e estilo de fonte para um intervalo de textoset_range_font_size- Alterar tamanho da fonte para um intervalo de textoset_range_fills- Definir cor do texto para um intervalo específicoget_styled_text_segments- Obter informações detalhadas sobre segmentos de texto e suas propriedadesset_component_description- Definir descrição do componente usando Markdownget_component_description- Obter descrição do componente em formato Markdownnormalize_markdown- Normalizar texto Markdown para o subconjunto suportado pelo Figma
Auto Layout e Espaçamento
set_layout_mode- Definir o modo de layout e o comportamento de quebra de um frame (NONE, HORIZONTAL, VERTICAL)set_padding- Definir valores de preenchimento para um frame de auto-layout (superior, direito, inferior, esquerdo)set_axis_align- Definir alinhamento do eixo principal e contrário para frames de auto-layoutset_layout_sizing- Definir modos de dimensionamento horizontal e vertical para frames de auto-layout (FIXED, HUG, FILL)set_item_spacing- Definir distância entre filhos em um frame de auto-layout
Estilização
set_fill_color- Definir a cor de preenchimento de um nó (RGBA)set_stroke_color- Definir a cor e a espessura do traço de um nóset_corner_radius- Definir o raio do canto de um nó com controle opcional por canto
Layout e Organização
move_node- Mover um nó para uma nova posiçãoresize_node- Redimensionar um nó com novas dimensõesdelete_node- Excluir um nódelete_multiple_nodes- Excluir vários nós de uma vez de forma eficienteclone_node- Criar uma cópia de um nó existente com deslocamento de posição opcional
Operações em Lote (v0.3.2)
Veja o Guia de Operações em Lote para melhores práticas.
clone_multiple_nodes- Clonar um nó para várias posições em uma única operação (50-90% mais rápido do que clones individuais)- DEPRECADO: Useget_multiple_nodes_infoget_nodescom array de IDs de nós em vez dissoset_multiple_nodes_property- Definir o mesmo valor de propriedade em vários nós de uma vezexecute_batch- Executar vários comandos diferentes em sequência com uma única ida e voltaget_connection_status- Obter status atual da conexão e estatísticas
Componentes e Estilos
get_styles- Obter informações sobre estilos locaisget_local_components- Obter informações sobre componentes locaiscreate_component_instance- Criar uma instância de um componenteget_instance_overrides- Extrair propriedades de substituição de uma instância de componente selecionadaset_instance_overrides- Aplicar substituições extraídas às instâncias de destino
Ferramentas Compostas
extract_slide_content- Extrair todo o conteúdo de um slide do Figma, incluindo texto, tabelas e opcionalmente imagens (suporta saída bruta ou estruturada)get_presentation_summary- Gerar uma visão geral de uma apresentação do Figma, incluindo contagem de slides, títulos de slides e opcionalmente um resumo com os pontos principaisget_table_data- Extrair dados de um nó de tabela do Figma em vários formatos (array, objeto ou CSV) com tratamento personalizável de cabeçalho
Exportação e Avançado
export_node_as_image- Exportar um nó como imagem (PNG, JPG, SVG ou PDF) - suporte limitado em imagem atualmente retornando base64 como texto
Gerenciamento de Conexão
join_channel- Entrar em um canal específico para se comunicar com o Figma
Prompts MCP
O servidor MCP inclui vários prompts auxiliares para guiá-lo em tarefas complexas de design:
design_strategy- Melhores práticas para trabalhar com designs do Figmaread_design_strategy- Melhores práticas para ler designs do Figmatext_replacement_strategy- Abordagem sistemática para substituir texto em designs do Figmaannotation_conversion_strategy- Estratégia para converter anotações manuais em anotações nativas do Figmaswap_overrides_instances- Estratégia para transferir substituições entre instâncias de componente no Figmareaction_to_connector_strategy- Estratégia para converter reações de protótipo do Figma em linhas de conector usando a saída de 'get_reactions' e orientar o uso de 'create_connections' em sequênciabatch_operations_guide- Melhores práticas para operações em lote eficientes no Figma (v0.3.2)error_recovery_guide- Como lidar com erros comuns e timeouts em operações do Figma (v0.3.2)text_formatting_guide- Melhores práticas para atualizar texto preservando formatação (v0.3.2)
Desenvolvimento
Construindo o Plugin Figma
- Navegue até o diretório do plugin Figma:
cd src/figma_copilot_plugin - Edite code.js e ui.html
Melhores Práticas
Ao trabalhar com o Figma MCP:
- Sempre entre em um canal antes de enviar comandos
- Obtenha uma visão geral do documento usando
get_document_infoprimeiro - Verifique o contexto atual com
get_current_contextantes de modificações - Use ferramentas de criação apropriadas com base nas necessidades:
create_framepara contêinerescreate_rectanglepara formas básicascreate_textpara elementos de texto
- Verifique as alterações usando
get_node_info - Use instâncias de componentes quando possível para consistência
- Lide com erros adequadamente, pois todos os comandos podem lançar exceções
- Para designs grandes:
- Use
scan_nodes_with_optionscom configurações apropriadas de tempo limite e profundidade- Monitore o progresso por meio de atualizações WebSocket
- Implemente o tratamento de erros adequado
- Use
- Para operações de texto:
- Use operações em lote quando possível
- Considere relacionamentos estruturais
- Verifique as alterações com exportações direcionadas
- Use operações em lote quando possível
- Para converter anotações legadas:
- Examine os nós de texto para identificar marcadores numerados e descrições
- Use
scan_nodes_by_typespara encontrar elementos de interface aos quais as anotações se referem - Corresponda os marcadores aos seus elementos de destino usando caminho, nome ou proximidade
- Categorize as anotações adequadamente com
get_annotations - Crie anotações nativas com
set_multiple_annotationsem lotes - Verifique se todas as anotações estão devidamente vinculadas aos seus destinos
- Exclua os nós de anotação legados após a conversão bem-sucedida
- Use
- Examine os nós de texto para identificar marcadores numerados e descrições
- Visualize os "noodles" de protótipo como conectores do FigJam:
- Use
get_reactionspara extrair fluxos de protótipo, - defina um conector padrão com
set_default_connector, - e gere linhas de conector com
create_connectionspara um mapeamento visual claro do fluxo.
Solução de problemas
Problemas de Fonte
Se você encontrar erros de "Cannot unwrap symbol" ao atualizar texto, isso provavelmente se deve a fontes mistas em nós de texto. Consulte Documentação de Tratamento de Fontes para obter detalhes sobre como o plugin lida com fontes mistas e estratégias disponíveis.
Problemas de Tempo Limite
Para documentos grandes que causam tempos limite, use scan_nodes_with_options com limitação de profundidade e resultados parciais. Consulte Guia de Operações em Lote para estratégias de otimização.
Documentação
- Guia de Operações em Lote - Aprenda a usar operações em lote para ganhos massivos de desempenho
- Guia de Operações de Texto Aprimoradas - Preserve a formatação ao atualizar texto
- Guia de Estilização de Texto - Aplique e gerencie estilos de texto
- Documentação de Tratamento de Fontes - Lide com fontes mistas e estratégias de carregamento de fontes
- Changelog v0.3.2 - Notas de versão mais recentes