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
Servidor MCP do Figma com Chunking
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.
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
- Comece com tamanhos de bloco menores (50-100 nós) e ajuste com base no desempenho
- Monitore o uso de memória por meio dos metadados da resposta
- Use a filtragem por tipo de nó quando possível para reduzir a carga de dados
- Implemente paginação para grandes conjuntos de dados
- 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ósdepth: 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
-
Erros de Memória
- Reduza o tamanho do bloco
- Use filtragem por tipo de nó
- Implemente paginação
- Especifique valores de profundidade menores
-
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
-
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.
