MCP server for fetching Figma design data and downloading images from Figma files
Two tools with complete schemas and descriptions, but quality is uneven. get_figma_data has a vague description ('When the nodeId cannot be obtained...') that doesn't clearly state what the tool does or when to use it. download_figma_images has better clarity but both tools lack output schema documentation. Parameter descriptions are present but some are verbose and could be more concise. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Error handling and recovery guidance are absent from descriptions.
Download SVG and PNG images used in a Figma file based on the IDs of image or icon nodes
When the nodeId cannot be obtained, obtain the layout information about the entire Figma file
get_figma_data description is unclear and task-focused rather than action-focused. 'When the nodeId cannot be obtained, obtain the layout information...' does not explain what the tool does or when an LLM should call it. Should state: 'Fetch layout, structure, and metadata for a Figma file or specific node.'
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract required fields without knowing what get_figma_data or download_figma_images returns. Must document return types (e.g., 'Returns object with fields: nodes[], metadata, errors[]').
No tool annotations despite clear risk profiles. get_figma_data is READ_ONLY; download_figma_images is WRITE (creates files). Should include readOnlyHint and destructiveHint in tool definitions to guide agent behavior.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Error handling and recovery guidance absent. Descriptions do not explain what errors can occur (invalid fileKey, missing nodeId, API rate limits) or how to recover. Should add: 'If fileKey is invalid, verify the URL format. If rate limited, retry after 60 seconds.'
download_figma_images parameter 'imageRef' description is confusing ('If a node has an imageRef fill, you must include this variable. Leave blank when downloading Vector SVG images.'). Unclear when imageRef is required vs optional. Should clarify: 'Required for raster images with fills; omit for vector SVG exports.'