MCP server for Figma integration enabling AI to read and manipulate Figma designs through a WebSocket bridge to a Figma plugin
37 tools with consistent basic structure, but significant gaps in descriptions and schema completeness. All tools have names starting with verbs (good), but most descriptions are generic and lack LLM-optimized guidance. Input schemas are present for all tools but lack constraints (enums, min/max, patterns). No output schemas documented. Error handling is absent, no guidance on recovery, retryability, or error categorization. Security concerns: no mention of API key/secret management, no permission gates, no audit trails visible in code. Composition is poor, many tools could be combined (e.g., set_fill_color + set_stroke_color → set_colors) or split further (e.g., create_rectangle + create_frame could share a 'create_shape' tool). Overall tone is 'basic CRUD operations on Figma API' without agent-friendly polish.
Clone a node in Figma
Create an instance of a component in Figma
Create connections between nodes in Figma
Create a new frame in Figma
Create a new rectangle in Figma
Create a new text node in Figma
Delete multiple nodes in Figma
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract response fields without knowing what structure to expect.
Descriptions are generic and brief (most under 50 chars). They do not explain WHEN to use each tool vs similar ones, prerequisites, or what is returned. Example: 'Get information about the current selection in Figma' does not explain if it returns canvas position, layer info, or both.
Input parameters lack constraints. No enums for 'format' in export_node_as_image (valid: PNG, JPG, SVG, should be enum). No min/max for numeric params (x, y, width, height, radius, spacing). No validation guidance for 'color' param in set_fill_color (must be hex code, should specify pattern or enum).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Delete a node in Figma
Export a node as an image from Figma
Get annotations for specified nodes in Figma
Get detailed information about the current Figma document
Get instance overrides for a component instance in Figma
Get local components in the Figma document
Get detailed information about a specific node in Figma
Get detailed information about multiple nodes in Figma
Get reactions for specified nodes in Figma
Get information about the current selection in Figma
Get available styles in the Figma document
Move a node to a new position in Figma
Get detailed information about the current selection in Figma, including all node details
Resize a node in Figma
Scan and return nodes of specified types in the document
Scan and return all text nodes in the document
Set annotation for a node in Figma
Set axis alignment for a layout node in Figma
Set the corner radius of a node in Figma
Set the default connector for a node in Figma
Set the fill color of a node in Figma
Set instance overrides for component instances in Figma
Set item spacing for a layout node in Figma
Set the layout mode for a node in Figma
Set layout sizing for a child node in a layout in Figma
Set annotations for multiple nodes in Figma
Set text content for multiple text nodes in Figma
Set padding for a layout node in Figma
Set the stroke color of a node in Figma
Set the text content of a text node in Figma
No error handling or recovery guidance. Tools can fail (e.g., node not found, invalid color, permission denied) but provide no actionable error messages. Agents cannot distinguish retryable from fatal errors or know what to do next.
Destructive operations (delete_node, delete_multiple_nodes) lack confirmation or dry-run support. An agent could irreversibly delete multiple nodes without a safety mechanism.
No permission gates or security scopes declared. No indication if tools require 'write:design', 'delete:document', etc. No audit trail visible, cannot trace who made what changes when.
Poor tool composition. Similar tools should be merged or split more clearly. Example: set_fill_color and set_stroke_color could combine into set_colors(nodeId, fill?, stroke?). Conversely, create_rectangle and create_frame are almost identical and could use a generic create_shape(type, ...).
No batch operation guidance. Tools like set_multiple_text_contents exist, but it's unclear if agents should use them or call single-item variants in a loop. Batch tools need clear descriptions on when to prefer them (e.g., 'Use for 5+ items for better performance').
Parameter naming inconsistency. Some tools use 'nodeId', others might infer 'id'. Document whether all accept human-readable node names or only system IDs. If only IDs, agents need a 'find_node_by_name' tool to resolve names.
No pagination or result limits documented. Tools like get_styles, get_local_components, scan_text_nodes, and scan_nodes_by_types can return large result sets. No guidance on max results, offset, or pagination parameters.