Zero-dependency MCP bridge with write access to a live Figma canvas, auto-framed screenshot feedback, and one-call rollback. Works on the Figma free plan.
Server has 9 tools with clear verb-noun naming (figma_get_*, figma_execute_code, figma_job_status, figma_rollback, figma_list_files). All tools have descriptions (10-100 chars, mostly 50-80 range). Input schemas are present and properly typed with enums for format/scale parameters. However, descriptions are terse (e.g., 'Fetch the full Figma file structure' lacks WHEN/WHY context). Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from tool definitions. The figma_execute_code tool is high-risk (arbitrary JS execution) but lacks confirmation/dry-run pattern. Parameter descriptions are minimal; 'format' enum is documented but 'scale' lacks range constraints. No pagination guidance for list_files despite potential large result sets.
Execute arbitrary JavaScript code inside the user's open Figma document with live canvas access
Fetch all components from a Figma file
Fetch the full Figma file structure with optimized context formatting
Export a node as an image (PNG, SVG, or PDF)
Fetch a specific node from a Figma file with optimized context formatting
Fetch all styles (colors, typography, effects) from a Figma file
Check the status of a long-running figma_execute_code job
Output schemas not documented. LLMs cannot predict response structure for any tool, forcing them to guess at field names and types. This violates pattern:tool and increases hallucination risk.
figma_execute_code lacks confirmation/dry-run pattern. Arbitrary JS execution is high-risk; agents should not execute without explicit user confirmation. No recovery guidance if execution fails.
Descriptions are terse (45-65 chars) and lack WHEN/WHY context. 'Fetch the full Figma file structure' does not explain when to use this vs figma_get_node, or what 'optimized context formatting' means. Descriptions should be 50-200 chars with actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
List all Figma files accessible to the authenticated user
Rollback the last checkpoint created during a figma_execute_code call
Parameter 'scale' in figma_get_image lacks range constraints. Description says 'default 1' but does not specify min/max (e.g., 0.1 - 4.0). Unbounded numbers let LLMs pass absurd values.
figma_list_files has no pagination parameters (limit, offset, cursor). If user has hundreds of files, response could exhaust context window. No guidance on result limits.