A MCP server that provides a WebSocket bridge to Figma Plugin API, enabling remote execution of Figma commands through the Model Context Protocol
All 5 tools have basic schemas and descriptions, but quality is significantly below production standards. Tool descriptions are minimal (10-50 chars, well below the 194-char baseline). No parameter descriptions beyond the bare parameter name. No output schemas documented. No error handling guidance. Tools lack context about when to use them vs. alternatives. The server exposes internal WebSocket mechanics (command_id, futures) rather than abstracting them away. No pagination, no result limits, no structured output guidance.
Export a Node from Figma
Get all components of the Node in Figma
Get all pages of the document in Figma
Get all layers of a specific page in Figma
Get the current selection in Figma
Tool descriptions are too short (10-50 chars vs. 194-char baseline). LLMs cannot determine when to select each tool or how it differs from similar tools. E.g., 'Get all pages of the document in Figma' lacks context about prerequisites, return structure, or when to call it.
No parameter descriptions beyond the parameter name itself. 'pageId' and 'nodeId' lack format guidance, constraints, or examples. LLMs cannot validate inputs or understand what constitutes a valid ID.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., does get_pages return page IDs needed for get_root_layers_of_page?). Breaks tool composition.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
No error handling guidance. Tool implementation catches exceptions but returns raw error strings. LLMs receive no recovery hints (e.g., 'No WebSocket clients connected' tells agent nothing about how to proceed).
Tool names are generic and lack clear action verbs. 'figma_get_node_children' is ambiguous, does it return child nodes, components, or layers? 'figma_export_node' lacks context about export format or destination.