Figma MCP Server with Chunking

Um servidor MCP para a API do Figma, com chunking e paginação para lidar com arquivos grandes.

Documentação

MseeP.ai Security Assessment Badge

Servidor MCP do Figma com Chunking

smithery badge

Um servidor Model Context Protocol (MCP) para interagir com a API do Figma, com recursos de chunking e paginação eficientes em termos de memória para lidar com arquivos grandes do Figma.

Figma Server with Chunking MCP server

Visão Geral

Este servidor MCP fornece uma interface robusta para a API do Figma com recursos integrados de gerenciamento de memória. Ele foi projetado para lidar com arquivos grandes do Figma de forma eficiente, dividindo as operações em blocos gerenciáveis e implementando paginação quando necessário.

Principais Recursos

  • Processamento com consciência de memória e limites configuráveis
  • Recuperação de dados em blocos para arquivos grandes
  • Suporte a paginação para todas as operações de listagem
  • Filtragem por tipo de nó
  • Acompanhamento de progresso
  • Tamanhos de bloco configuráveis
  • Capacidade de retomada para operações interrompidas
  • Registro de depuração
  • Suporte a arquivo de configuração

Instalação

Instalação via Smithery

Para instalar o Servidor MCP do Figma com Chunking para Claude Desktop automaticamente via Smithery:

npx -y @smithery/cli install @ArchimedesCrypto/figma-mcp-chunked --client claude

Instalação Manual

# Clone the repository
git clone [repository-url]
cd figma-mcp-chunked

# Install dependencies
npm install

# Build the project
npm run build

Configuração

Variáveis de Ambiente

  • FIGMA_ACCESS_TOKEN: Seu token de acesso à API do Figma

Arquivo de Configuração

Você pode fornecer a configuração por meio de um arquivo JSON usando a flag --config:

{
  "mcpServers": {
    "figma": {
      "env": {
        "FIGMA_ACCESS_TOKEN": "your-access-token"
      }
    }
  }
}

Uso:

node build/index.js --config=path/to/config.json

Ferramentas

get_file_data (Novo)

Recupera dados de arquivos do Figma com chunking e paginação eficientes em termos de memória.

{
  "name": "get_file_data",
  "arguments": {
    "fileKey": "your-file-key",
    "accessToken": "your-access-token",
    "pageSize": 100,          // Optional: nodes per chunk
    "maxMemoryMB": 512,       // Optional: memory limit
    "nodeTypes": ["FRAME", "COMPONENT"],  // Optional: filter by type
    "cursor": "next-page-token",  // Optional: resume from last position
    "depth": 2                // Optional: traversal depth
  }
}

Resposta:

{
  "nodes": [...],
  "memoryUsage": 256.5,
  "nextCursor": "next-page-token",
  "hasMore": true
}

list_files

Lista arquivos com suporte a paginação.

{
  "name": "list_files",
  "arguments": {
    "project_id": "optional-project-id",
    "team_id": "optional-team-id"
  }
}

get_file_versions

Recupera o histórico de versões em blocos.

{
  "name": "get_file_versions",
  "arguments": {
    "file_key": "your-file-key"
  }
}

get_file_comments

Recupera comentários com paginação.

{
  "name": "get_file_comments",
  "arguments": {
    "file_key": "your-file-key"
  }
}

get_file_info

Recupera informações do arquivo com travessia de nós em blocos.

{
  "name": "get_file_info",
  "arguments": {
    "file_key": "your-file-key",
    "depth": 2,               // Optional: traversal depth
    "node_id": "specific-node-id"  // Optional: start from specific node
  }
}

get_components

Recupera componentes com suporte a chunking.

{
  "name": "get_components",
  "arguments": {
    "file_key": "your-file-key"
  }
}

get_styles

Recupera estilos com suporte a chunking.

{
  "name": "get_styles",
  "arguments": {
    "file_key": "your-file-key"
  }
}

get_file_nodes

Recupera nós específicos com suporte a chunking.

{
  "name": "get_file_nodes",
  "arguments": {
    "file_key": "your-file-key",
    "ids": ["node-id-1", "node-id-2"]
  }
}

Gerenciamento de Memória

O servidor implementa várias estratégias para gerenciar a memória de forma eficiente:

Estratégia de Chunking

  • Tamanhos de bloco configuráveis via pageSize
  • Monitoramento do uso de memória
  • Ajuste automático do tamanho do bloco com base na pressão de memória
  • Acompanhamento de progresso por bloco
  • Capacidade de retomada usando cursores

Boas Práticas

  1. Comece com tamanhos de bloco menores (50-100 nós) e ajuste com base no desempenho
  2. Monitore o uso de memória por meio dos metadados da resposta
  3. Use a filtragem por tipo de nó quando possível para reduzir a carga de dados
  4. Implemente paginação para grandes conjuntos de dados
  5. Use a capacidade de retomada para arquivos muito grandes

Opções de Configuração

  • pageSize: Número de nós por bloco (padrão: 100)
  • maxMemoryMB: Uso máximo de memória em MB (padrão: 512)
  • nodeTypes: Filtrar tipos específicos de nós
  • depth: Controlar a profundidade da travessia para estruturas aninhadas

Registro de Depuração

O servidor inclui registro de depuração abrangente:

// Debug log examples
[MCP Debug] Loading config from config.json
[MCP Debug] Access token found xxxxxxxx...
[MCP Debug] Request { tool: 'get_file_data', arguments: {...} }
[MCP Debug] Response size 2.5 MB

Tratamento de Erros

O servidor fornece mensagens de erro detalhadas e sugestões:

// Memory limit error
"Response size too large. Try using a smaller depth value or specifying a node_id.""

// Invalid parameters
"Missing required parameters: fileKey and accessToken"

// API errors
"Figma API error: [detailed message]"

Solução de Problemas

Problemas Comuns

  1. Erros de Memória

    • Reduza o tamanho do bloco
    • Use filtragem por tipo de nó
    • Implemente paginação
    • Especifique valores de profundidade menores
  2. Problemas de Desempenho

    • Monitore o uso de memória
    • Ajuste os tamanhos dos blocos
    • Use filtros de tipo de nó apropriados
    • Implemente cache para dados acessados com frequência
  3. Limites da API

    • Implemente limitação de taxa
    • Use paginação
    • Armazene respostas em cache quando possível

Modo de Depuração

Ative o registro de depuração para obter informações detalhadas:

# Set debug environment variable
export DEBUG=true

Contribuição

Contribuições são bem-vindas! Leia nossas diretrizes de contribuição e envie pull requests para nosso repositório.

Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.