ScrabbleScratch/figma-mcp-server
If you are the rightful owner of figma-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A Model Context Protocol (MCP) server designed for seamless integration with the Figma API, providing a suite of tools for managing files, teams, comments, and user information.
Figma MCP Server
Un servidor MCP (Model Context Protocol) para integración con la API de Figma.
Funcionalidades
Este servidor MCP proporciona herramientas para:
- Gestión de archivos: Obtener archivos de Figma, nodos específicos e imágenes renderizadas
- Gestión de equipos: Acceder a proyectos, componentes y estilos de equipos
- Comentarios: Leer y escribir comentarios en archivos de Figma
- Información de usuario: Obtener datos del usuario actual
Configuración
Prerrequisitos
- Node.js v18 o superior
- Token de acceso personal de Figma
Instalación
npm install
npm run build
Obtener un Token de Acceso Personal de Figma
- Ve a tu configuración de cuenta de Figma
- Navega a la sección "Personal access tokens"
- Genera un nuevo token con los permisos necesarios
- Guarda el token de forma segura
Uso
Ejecutar el servidor
npm start
Configurar el cliente MCP
Primero, configura el acceso a la API de Figma:
{
"name": "configure_figma",
"arguments": {
"personalAccessToken": "tu-token-de-figma"
}
}
Herramientas disponibles
1. configure_figma
Configura el acceso a la API de Figma con tu token de acceso personal.
Parámetros:
personalAccessToken(requerido): Tu token de acceso personal de FigmabaseUrl(opcional): URL base de la API de Figma (por defecto: https://api.figma.com/v1)
2. get_file
Obtiene un archivo de Figma por su clave.
Parámetros:
fileKey(requerido): La clave que identifica el archivo de Figmaversion(opcional): ID de versión específicaids(opcional): Lista de IDs de nodos a recuperardepth(opcional): Profundidad del árbol de documentos a atravesargeometry(opcional): "paths" para exportar datos vectorialesplugin_data(opcional): Lista de IDs de pluginsbranch_data(opcional): Devuelve metadatos de rama
3. get_file_nodes
Obtiene nodos específicos de un archivo de Figma.
Parámetros:
fileKey(requerido): La clave del archivo de Figmaids(requerido): Lista de IDs de nodos a recuperarversion,depth,geometry,plugin_data(opcionales)
4. get_images
Obtiene imágenes renderizadas de nodos específicos.
Parámetros:
fileKey(requerido): La clave del archivo de Figmaids(requerido): Lista de IDs de nodos a renderizarscale(opcional): Factor de escala (0.01-4)format(opcional): Formato de salida (jpg, png, svg, pdf)version(opcional): ID de versión específica- Opciones adicionales para SVG
5. get_team_projects
Obtiene proyectos de un equipo específico.
Parámetros:
teamId(requerido): ID del equipo
6. get_project_files
Obtiene archivos de un proyecto específico.
Parámetros:
projectId(requerido): ID del proyectobranch_data(opcional): Devuelve metadatos de rama
7. get_comments
Obtiene comentarios de un archivo de Figma.
Parámetros:
fileKey(requerido): La clave del archivo de Figma
8. post_comment
Publica un comentario en un archivo de Figma.
Parámetros:
fileKey(requerido): La clave del archivo de Figmamessage(requerido): Contenido del comentarioclient_meta(opcional): Posición donde colocar el comentario
9. get_user
Obtiene información del usuario actual.
10. get_team_components
Obtiene componentes de un equipo específico.
Parámetros:
teamId(requerido): ID del equipopage_size(opcional): Número de elementos por páginaafter(opcional): Cursor para paginación
11. get_team_styles
Obtiene estilos de un equipo específico.
Parámetros:
teamId(requerido): ID del equipopage_size(opcional): Número de elementos por páginaafter(opcional): Cursor para paginación
Ejemplo de uso
// Configurar Figma
await callTool("configure_figma", {
personalAccessToken: "figd_..."
});
// Obtener información de un archivo
await callTool("get_file", {
fileKey: "abc123def456"
});
// Obtener nodos específicos
await callTool("get_file_nodes", {
fileKey: "abc123def456",
ids: ["1:2", "1:3"]
});
// Renderizar imágenes
await callTool("get_images", {
fileKey: "abc123def456",
ids: ["1:2"],
format: "png",
scale: 2
});
Desarrollo
# Modo desarrollo
npm run dev
# Compilar
npm run build
# Ejecutar
npm start
Estructura del proyecto
src/
├── index.ts # Servidor MCP principal
├── figma-client.ts # Cliente de la API de Figma
└── types.ts # Esquemas de tipos y validación
Manejo de errores
El servidor incluye validación de parámetros usando Zod y manejo robusto de errores. Todos los errores se devuelven como errores MCP estándar con códigos y mensajes descriptivos.
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo para más detalles.
¿Qué significa esto?
- ✅ Puedes usar este código comercialmente
- ✅ Puedes modificar y distribuir el código
- ✅ Puedes crear proyectos derivados
- ❌ Sin garantías (úsalo bajo tu propio riesgo)
🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
🐛 Reportar Issues
Si encuentras bugs o tienes sugerencias, por favor abre un issue.