MCP server and Figma plugin bridge for Claude/Cursor. No REST token required. Bridges Figma API to MCP clients via plugin UI window.
F-MCP provides 10 tools with clear action-verb naming (figma_get_*, figma_search_*, figma_execute, figma_capture_screenshot). Most tools have descriptions (8/10 have descriptions >20 chars). Input schemas are present and use JSON Schema with type declarations and defaults. However, significant gaps exist: (1) parameter descriptions are sparse or missing for many inputs, (2) output schemas are not documented in the visible code, (3) error handling guidance is absent, (4) no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite obvious write/read distinction, (5) security posture unclear (figma_execute accepts arbitrary JavaScript with no validation guidance). The tool suite is domain-coherent (Figma design introspection and manipulation) but lacks production-grade polish in parameter documentation and error recovery patterns.
Capture screenshot of a node (or current selection). Returns base64 or URL.
Run JavaScript in the Figma plugin API (figma.root, figma.currentPage, etc.).
Get design context for a node: type, variant props, layout, colors, typography.
Get design system overview: variable collections and component counts. Uses current page by default.
Get file structure and document tree. Use depth=1 and verbosity=summary for minimal tokens.
Get node metadata: id, type, name, position, size (XML-style).
Check if the Figma plugin is connected. Returns status.
Output schemas not documented for any tool. LLMs cannot infer what fields to expect, forcing lossy parsing of unstructured responses and preventing effective data chaining.
figma_execute accepts arbitrary JavaScript code with no input validation, sanitization guidance, or security constraints. Agents can pass injection payloads. Tool description lacks timeout/error recovery guidance.
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). figma_execute and any mutation tools lack metadata to guide agent planning and safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Get local paint, text, and effect styles.
Get all variable collections and variables from the open Figma file. No REST API.
Search local components by name. Returns nodeIds and names.
Parameter descriptions are sparse or missing context. E.g., figma_get_metadata's node_id has minimal description (15 chars); figma_get_styles has no context on when to call it vs figma_get_file_data.
No error handling guidance. Tools do not explain what to do on failure (e.g., 'node not found, try search_components first'). LLMs lack recovery paths.
Pagination not addressed. Tools like figma_get_variables, figma_get_file_data (with depth parameter), and figma_search_components may return large result sets without explicit pagination guidance or result caps mentioned in descriptions.
Default limit=0 (unlimited) in multiple tools (figma_get_design_system_summary, figma_search_components) risks context bloat. Rubric baseline: cap results at 20-50.
Consider renaming to figma_run_plugin_script or figma_eval_plugin_api to clarify intent.