Figma MCP Server with Chunking

Un servidor MCP para la API de Figma, con fragmentación y paginación para manejar archivos grandes.

Documentación

MseeP.ai Security Assessment Badge

Figma MCP Server with Chunking

smithery badge

Un servidor de Model Context Protocol (MCP) para interactuar con la API de Figma, con capacidades de fragmentación eficiente en memoria y paginación para manejar archivos de Figma de gran tamaño.

Figma Server with Chunking MCP server

Descripción general

Este servidor MCP proporciona una interfaz robusta para la API de Figma con funciones integradas de gestión de memoria. Está diseñado para manejar archivos de Figma de gran tamaño de manera eficiente, dividiendo las operaciones en fragmentos manejables e implementando paginación cuando sea necesario.

Características principales

  • Procesamiento consciente de la memoria con límites configurables
  • Recuperación de datos por fragmentos para archivos grandes
  • Soporte de paginación para todas las operaciones de listado
  • Filtrado por tipo de nodo
  • Seguimiento de progreso
  • Tamaños de fragmento configurables
  • Capacidad de reanudación para operaciones interrumpidas
  • Registro de depuración
  • Soporte de archivo de configuración

Instalación

Instalación mediante Smithery

Para instalar Figma MCP Server with Chunking para Claude Desktop automáticamente mediante Smithery:

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

Instalación manual

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

# Install dependencies
npm install

# Build the project
npm run build

Configuración

Variables de entorno

  • FIGMA_ACCESS_TOKEN: Su token de acceso a la API de Figma

Archivo de configuración

Puede proporcionar la configuración mediante un archivo JSON usando la opción --config:

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

Uso:

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

Herramientas

get_file_data (Nuevo)

Recupera datos de archivos de Figma con fragmentación eficiente en memoria y paginación.

{
  "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
  }
}

Respuesta:

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

list_files

Lista archivos con soporte de paginación.

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

get_file_versions

Recupera el historial de versiones por fragmentos.

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

get_file_comments

Recupera comentarios con paginación.

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

get_file_info

Recupera información del archivo con recorrido de nodos por fragmentos.

{
  "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 con soporte de fragmentación.

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

get_styles

Recupera estilos con soporte de fragmentación.

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

get_file_nodes

Recupera nodos específicos con soporte de fragmentación.

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

Gestión de memoria

El servidor implementa varias estrategias para gestionar la memoria de manera eficiente:

Estrategia de fragmentación

  • Tamaños de fragmento configurables mediante pageSize
  • Monitoreo del uso de memoria
  • Ajuste automático del tamaño de fragmento según la presión de memoria
  • Seguimiento de progreso por fragmento
  • Capacidad de reanudación mediante cursores

Buenas prácticas

  1. Comience con tamaños de fragmento más pequeños (50-100 nodos) y ajuste según el rendimiento
  2. Monitoree el uso de memoria a través de los metadatos de la respuesta
  3. Use el filtrado por tipo de nodo cuando sea posible para reducir la carga de datos
  4. Implemente paginación para conjuntos de datos grandes
  5. Use la capacidad de reanudación para archivos muy grandes

Opciones de configuración

  • pageSize: Número de nodos por fragmento (predeterminado: 100)
  • maxMemoryMB: Uso máximo de memoria en MB (predeterminado: 512)
  • nodeTypes: Filtrar tipos de nodo específicos
  • depth: Controlar la profundidad de recorrido para estructuras anidadas

Registro de depuración

El servidor incluye un registro de depuración completo:

// 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

Manejo de errores

El servidor proporciona mensajes de error detallados y sugerencias:

// 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]"

Solución de problemas

Problemas comunes

  1. Errores de memoria

    • Reduzca el tamaño del fragmento
    • Use el filtrado por tipo de nodo
    • Implemente paginación
    • Especifique valores de profundidad más pequeños
  2. Problemas de rendimiento

    • Monitoree el uso de memoria
    • Ajuste los tamaños de fragmento
    • Use filtros de tipo de nodo apropiados
    • Implemente almacenamiento en caché para datos de acceso frecuente
  3. Límites de la API

    • Implemente limitación de velocidad
    • Use paginación
    • Almacene respuestas en caché cuando sea posible

Modo de depuración

Active el registro de depuración para obtener información detallada:

# Set debug environment variable
export DEBUG=true

Contribuciones

¡Las contribuciones son bienvenidas! Por favor, lea nuestras pautas de contribución y envíe solicitudes de extracción (pull requests) a nuestro repositorio.

Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para obtener más detalles.