MCP server that enables Claude to create and manipulate designs in Figma via the Model Context Protocol. Provides tools for creating frames, shapes, text, and applying styles to Figma designs.
26 tools with complete JSON schemas and basic descriptions, but significant quality gaps. All tools have descriptions (10-50 chars avg, below 194-char baseline), lacking LLM-optimized context on WHEN to use each tool and dependencies. Parameter descriptions are minimal (5-20 chars). No output schemas documented. Error handling absent, tools return success/failure with no recovery guidance. Naming is verb-first and clear (create_*, set_*, get_*), following pattern:tool conventions. However, many parameters lack type constraints (e.g., 'color' accepts free-form hex strings with no validation hint). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (WRITE, DESTRUCTIVE, READ_ONLY). Composition is sound, tools chain well (create_frame → set_auto_layout → append_child), but descriptions don't guide this workflow.
Append a child node to a parent node
Create an ellipse or circle shape
Create a new frame (container) in Figma. Frames are used to group and organize design elements.
Create an instance of a component
Create a line
Create a polygon shape (triangle, pentagon, hexagon, etc.)
Create a rectangle shape
No output schemas documented. LLMs cannot infer what fields tools return, forcing guesswork on downstream chaining and data extraction.
Descriptions are 25 - 40 chars (well below 194-char baseline). Missing WHEN to use, dependencies, and prerequisites. E.g., 'Create a rectangle shape' doesn't explain when to use vs create_frame or create_polygon.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. remove_node is DESTRUCTIVE but unmarked; get_selection is READ_ONLY but unmarked. LLMs cannot reason about safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Create a star shape
Create a text element
Detach a component instance, converting it to a regular group
Get information about the current Figma document
Get the currently selected nodes in the Figma document
List all components in the document
Move a node to a new position
Remove a node from the document
Resize a node to new dimensions
Configure auto-layout (flexbox-like) on a frame for responsive design
Set the corner radius of a node (for rounded corners)
Add effects like shadows or blur to a node
Set the fill color of a node
Set properties on a component instance
Set the opacity of a node
Set the stroke (border) of a node
Update the text content of an existing text node
Update the style of an existing text node
Swap a component instance to a different component
No error handling or recovery guidance. Tools return success/failure with no actionable next steps. E.g., if remove_node fails, LLM has no hint on why or what to try next.
Parameter descriptions lack format/constraint hints. 'color' accepts free-form hex but no validation hint (e.g., '#RRGGBB format'). 'sides' for create_polygon has no min/max (3 - 12?). LLMs guess and pass invalid values.