Model Context Protocol server enabling AI assistants to interact with Figma designs and projects
The Figma MCP server has 7 tools with moderate definition quality. Strengths: tool names follow verb_noun convention; input schemas present with enums for format parameters. Weaknesses: descriptions are generic and lack actionable guidance for LLM selection; parameter descriptions are minimal (avg ~40 chars, well below 72-char baseline); output schemas are completely undocumented; error handling is absent; no tool annotations (destructiveHint/readOnlyHint) despite 3 write/destructive tools. The export tools (1-3) have reasonable schema structure but vague descriptions. Comment tools (4-7) include two write operations (create_comment, resolve_comment) and one destructive (delete_comment) without any error guidance or idempotency documentation. Missing: recovery hints, constraint explanations, dependency documentation, and chaining IDs in responses.
Create a new comment on a Figma file at a specific position or node
Delete a comment (Note: May require Plugin API or may not be available via REST)
Export all pages from a Figma file as images
Export multiple nodes from a Figma file in a specified format
Export a specific node (component, frame, etc.) as an image in PNG, SVG, PDF, or JPG format
Retrieve all comments from a Figma file
Output schemas completely undocumented. No response structure defined for any tool. LLMs cannot plan downstream calls or extract return values reliably.
Destructive tools (delete_comment) and write tools (create_comment, resolve_comment) lack tool annotations. No readOnlyHint/destructiveHint/idempotentHint declared. Cannot signal risk to LLM clients.
Descriptions are too generic and lack actionable guidance. 'Retrieve all comments' (35 chars) does not explain when to call vs other tools, what data structure is returned, or pagination behavior. Average param description ~40 chars, well below 72-char baseline.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | 2024-11-05+ | v1 |
Mark a comment as resolved (Note: This may require Plugin API, currently returns info)
resolve_comment and delete_comment have notes indicating API limitations ('May require Plugin API', 'may not be available via REST'). No error guidance or recovery paths documented. Agents will fail silently or retry indefinitely.
create_comment parameters have unclear mutual exclusivity. Description states 'x, y required if node_id not provided' but this is buried in one param description. LLMs frequently miss conditional constraints and pass both or neither.
No pagination parameters on get_comments. If a Figma file has hundreds of comments, will all be returned? This violates the baseline that tools returning lists accept limit/page/cursor.
Export tools (1-3) do not document what is returned by export. Is it a download URL? Base64 data? Figma file reference? LLMs cannot chain this output to downstream tools without knowing the response structure.