Skip to main content
Glama
atezer

F-MCP (Figma MCP Bridge)

by atezer

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
figma_list_connected_filesA

List all currently connected Figma/FigJam plugin instances (Figma Desktop, FigJam browser, Figma browser). Returns fileKey, fileName, and connection time for each. Use when multiple windows or agents are active. Pass the returned fileKey (or a Figma/FigJam URL via figmaUrl) to other tools to target a specific file.

figma_get_file_dataA

Get file structure and document tree from the open Figma file. No REST API or token. Use fileKey or figmaUrl to target a specific file when multiple plugins are connected. Defaults to depth=1, verbosity='summary'. Cached 60s per session.

figma_get_design_contextA

Design context for a node or whole file: structure + text, layout/visual/typography. Defaults to depth=1, verbosity='summary' for context safety. Pass depth/verbosity explicitly for deeper data. Cached 60s per session.

figma_get_variablesA

Get design tokens and variables from the open Figma file. No REST API or token. Use fileKey or figmaUrl to target a specific file when multiple plugins are connected.

figma_get_componentA

Get component metadata by node ID from the open Figma file. No REST API. Use fileKey or figmaUrl to target a specific file.

figma_get_stylesA

Get local paint, text, and effect styles from the open Figma file. No REST API. Use fileKey or figmaUrl to target a specific file.

figma_executeA

Run JavaScript in the Figma plugin context. Full Plugin API available. Use fileKey or figmaUrl to target a specific file. v1.8.1+: Static analysis detects design-system discipline violations (hardcoded colors, missing token bindings, no-instance usage, hardcoded typography). SEVERE warnings are promoted to the top of the response as _designSystemViolations — Claude must read and self-correct. Also detects gotchas: FILL/ABSOLUTE before appendChild, sync API usage, missing loadFontAsync, sync currentPage assignment. For component instances: use setProperties({...}), NOT findAll(TEXT). v1.9.6+: Post-execute scan — eğer kod return { createdNodeIds: [...] } veya nodeIds/ids/frameId/rootId/nodeId döndürürse plugin oluşturulan node'ları otomatik tarar, unbound fill/padding/radius/text-style varsa response'a _POST_EXECUTE_SCAN_BLOCKING: true ve _postExecuteViolations alanı ekler. Bu flag varsa execute geçersiz sayılır — kodu düzelt (setBoundVariable/setTextStyleIdAsync ekle) ve tekrar çalıştır.

figma_clone_screen_to_deviceA

⚠️ NARROW USE CASE — Device migration ONLY. Clone a Figma screen to a target device dimension, preserving library instances, bound variables, and auto-layout. USE ONLY WHEN: same design system + same layout structure + only screen size changes. DO NOT USE FOR: creating alternatives, variations, or new designs — these REQUIRE building from scratch with figma_execute following the generate-figma-screen SKILL Step 5 pattern (search_assets → instantiate_component → setBoundVariable → auto-layout FILL). Clone copies benchmark's EXISTING mistakes (hardcoded rectangles, missing token bindings, non-responsive layouts). Benchmark is INSPIRATION, not a copy source for variations. If the user says 'alternatif', 'varyasyon', 'farklı', 'yeni', 'tasarla' — USE figma_execute + Step 5, NOT this tool. Device presets: iPhone 17, iPhone 16 Pro Max, Android Compact, iPad Pro 11, Desktop, and more. Custom: 'WxH' format.

figma_validate_screenA

Validate a screen against design-system discipline criteria. Returns a compliance score (0-100) across 3 dimensions: instance coverage (library usage), token binding coverage (bound variables), and auto-layout coverage. Use this AFTER creating a screen to verify DS compliance. If score < minScore, Claude should delete the screen and rebuild it using DS components + token bindings. v1.9.4: breakdown now always includes coverage (granular fills/paddings/radius/itemSpacing/textStyle bind ratios) + overflow (root auto-layout overflow). For hardcoded samples + primitive fallback list, use figma_scan_ds_compliance instead. Read-only — never mutates the file.

figma_scan_ds_complianceA

v1.9.4: FINAL GATE — Full DS compliance scan for a completed screen. Returns the same score + breakdown as figma_validate_screen PLUS: (1) coverage = granular bind percentages (fills/paddings/radius/itemSpacing/textStyle/textColor/strokes), (2) samples.hardcodedHex = up to 8 nodes with hardcoded SOLID colors, (3) samples.hardcodedFontSize = up to 8 text nodes with hardcoded fontSize (no textStyleId), (4) samples.primitiveFrames = up to 8 frames that should have been DS component instances, (5) overflow = root auto-layout overflow analysis (frameSize vs contentSize). If passed: false, Claude MUST fix listed violations before presenting the screen as complete. Threshold 85 default (stricter than validate_screen's 80) because this flags granular gaps. Read-only — never mutates the file.

figma_create_mini_dsA

v1.9.7: Boş Figma dosyası için minimal Design System oluştur. Tek tool çağrısı ile 12 color variable + 8 sizing variable (spacing + radius) + 3 text style + Button/Input/Card component'leri kurar. Kullanıcı 'Blank File 4-option dialog'da (b) Mini DS seçerse çağır. Parametreler opsiyonel: primaryColor (default '#1464FF'), fontFamily (default 'Inter'), name (default 'Mini DS'), includeComponents (default true). Sonuç: { success, dsName, variableCollectionIds, textStyleIds, componentIds, summary } — sonrasında figma_execute ile ekran kurulabilir.

figma_capture_screenshotA

v1.9.5: 4 returnMode ile screenshot. Default 'file' (dosyaya yazar, base64 context'te YOK). 'summary' screenshot çekmeden metadata özeti (planlama için), 'regions' büyük ekranları children/slices olarak parçalar, 'base64' eski davranış (opt-in, ~30K token maliyetli). Context-aware fallback: >%80 context kullanımında base64/file → summary'ye otomatik düşer. Karar ağacı: planlama→summary, teslimat→file, scroll'lu ekran→regions, son çare→base64.

figma_set_instance_propertiesB

Set component instance properties (TEXT, BOOLEAN, VARIANT, etc.). Use fileKey or figmaUrl to target a specific file.

figma_update_variableA

Update a variable value in a mode. Get IDs from figma_get_variables.

figma_create_variableA

Create a variable in a collection. Get collectionId from figma_get_variables.

figma_create_variable_collectionC

Create a variable collection.

figma_delete_variableC

Delete a variable.

figma_delete_variable_collectionC

Delete a variable collection.

figma_rename_variableC

Rename a variable.

figma_add_modeC

Add a mode to a collection.

figma_rename_modeC

Rename a mode in a collection.

figma_get_design_system_summaryA

Get a compact overview: variable collection names and component counts. Minimal tokens. Use fileKey or figmaUrl to target a specific file.

figma_search_componentsA

Search local components by name. Returns nodeIds and names. No REST API. Use fileKey or figmaUrl to target a specific file.

figma_instantiate_componentA

Create a component instance. Use componentKey from figma_search_components, figma_search_assets, or REST API. Supports library components (importComponentByKeyAsync) and local components (by nodeId). After creation: use overrides with setProperties({...}) for component properties — do NOT use findAll(TEXT) to modify instance text.

figma_refresh_variablesC

Refresh variables from the file.

figma_get_console_logsA

Get plugin console logs (log/warn/error) from the F-MCP plugin buffer. No CDP. Limit default 50.

figma_watch_consoleA

Stream new plugin console logs until timeout. Polls the plugin buffer. Timeout default 30s.

figma_clear_consoleA

Clear the plugin console log buffer.

figma_set_descriptionB

Set description on a component, component set, or style node. Supports markdown (descriptionMarkdown).

figma_get_component_imageB

Get screenshot of a node (component/frame). Returns base64 image. Defaults to JPG@1x q70 (v1.8.0 context-safe).

figma_get_component_for_developmentA

Get component metadata plus base64 screenshot in one call. For design-to-code workflows. Defaults to JPG@1x q70 (v1.8.0 context-safe).

figma_batch_create_variablesA

Create up to 100 variables in one call. Each item: collectionId, name, resolvedType (COLOR/FLOAT/STRING/BOOLEAN), value, modeId. Returns created and failed lists.

figma_batch_update_variablesA

Update up to 100 variables. Each item: variableId, modeId, value. Returns updated and failed lists.

figma_setup_design_tokensA

Atomically create a variable collection + modes + variables. Rollback on any error. Params: collectionName, modes (array), tokens (array of { name, type?, value? or values? }).

figma_arrange_component_setA

Combine multiple component nodes into one Figma component set (combineAsVariants). Params: nodeIds (array of at least 2 component node IDs). Returns new component set nodeId.

figma_check_design_parityA

Compare Figma design tokens (variables + styles) with code-side tokens. Critical for design-code gap analysis. Returns matching, inFigmaOnly, inCodeOnly, and divergent (same name, different value). Optional codeTokens: JSON string of expected tokens, e.g. {"primary": "#0066cc", "spacing.md": 16} or {"primary": {"value": "#0066cc"}}.

figma_get_token_browserA

Token Browser: hierarchical view of design tokens for browsing. Returns variable collections with variables and modes, plus paint and text styles. Use for exploring and auditing tokens in the open Figma file. No REST API.

figma_get_statusB

Check if F-MCP ATezer Bridge plugin is connected and list all connected files. No REST API or token.

figma_create_frameA

Create a new frame node with optional auto-layout. Returns the created node ID. v1.8.0: defaults to layoutMode='VERTICAL' with paddingTop/Bottom=16, paddingLeft/Right=16, itemSpacing=12, primaryAxisSizingMode='AUTO', counterAxisSizingMode='AUTO'. Pass layoutMode='NONE' for legacy free-form frames.

figma_create_textA

Create a new text node on the current page. Returns the created node ID. IMPORTANT: fontFamily defaults to 'Inter' — if using a design system (e.g. SUI uses SHBGrotesk), specify the DS font. For DS text with proper token binding, prefer figma_execute with importStyleByKeyAsync + setTextStyleIdAsync instead.

figma_create_rectangleC

Create a new rectangle node on the current page.

figma_create_groupB

Group existing nodes into a new group. Provide node IDs to group.

figma_export_nodesA

Export one or multiple nodes as SVG, PNG, JPG, or PDF. Returns base64-encoded data for each node. Supports batch export (up to 50 nodes). No REST API token needed — uses plugin exportAsync. SVG preserves vectors; PNG/JPG are rasterized at configurable scale. v1.8.0: default scale=1 for context safety (was 2). Override for high-DPI exports.

figma_search_assetsA

Search for design system assets in the current Figma file. Returns: (1) team library VARIABLES via figma.teamLibrary API (all enabled libraries), (2) file-local COMPONENTS / COMPONENT_SETS, and (3) v1.8.0+: REMOTE LIBRARY COMPONENTS discovered by scanning existing INSTANCE nodes (returned as 'libraryComponents'). For library components to appear, at least one DS instance must exist in the file — place one manually first if empty. Pass currentPageOnly=false to scan all pages for instance discovery. Use the returned componentKey with figma_instantiate_component to place new instances. Pass assetTypes to filter: ['variables'], ['components'], or both (default).

figma_get_code_connectA

Get Code Connect hints for components/instances: documentationLinks, componentKey, name, description. Pass nodeIds for specific nodes, or scanCurrentPage=true to scan the current page for COMPONENT/COMPONENT_SET/INSTANCE nodes. Note: Full Code Connect source map lives in figma.config / Figma CLI; this tool returns plugin-accessible hints only. Use Figma's official MCP get_code_connect_map for native repo paths.

figma_useA

High-level orchestrator that bundles component, token and design-context lookups in one call. intent='component' -> node detail + Code Connect hint. intent='token' -> team library variable search. intent='design_context' -> full bundle (component + hints + tokens). Prefer this before implementing a design to collect all references in a single round-trip.

figma_get_library_variablesA

List variables from team library collections with import keys. Uses figma.teamLibrary API — works in the TARGET file, no need to connect the DS source file. Returns variable name, key (for importVariableByKeyAsync), resolvedType, collection, and library name. Use the returned keys with figma_bind_variable or figma.variables.importVariableByKeyAsync() in figma_execute.

figma_bind_variableA

Import a library variable by key and bind it to a node property. For colors: binds to fills or strokes via setBoundVariableForPaint. For spacing/sizing: binds via setBoundVariable (paddingLeft, itemSpacing, cornerRadius, etc.). Get variableKey from figma_get_library_variables. The node's fill/spacing will dynamically update when the DS token changes.

figma_import_styleA

Import a text, paint, or effect style from a team library by key, and optionally apply it to a node. IMPORTANT: This API only imports PUBLISHED LIBRARY styles, NOT local file styles. For local styles, use 'node.fillStyleId = style.id' (or textStyleId/effectStyleId) directly via figma_execute. Get library style keys from .claude/libraries/ cache or REST API: figma_rest_api GET /v1/files/{fileKey}/styles. For TEXT styles: applies via setTextStyleIdAsync (includes font, size, weight). For PAINT styles: applies via fillStyleId. For EFFECT styles: applies via effectStyleId.

figma_plugin_diagnosticsA

Get diagnostic info about plugin connection health: uptime, connected clients, pending requests, bridge version, memory usage.

figma_set_portA

Change the WebSocket bridge port at runtime. Stops the current bridge and restarts on the new port. Use when the default port is busy (e.g. another AI tool holds it). After calling this, the Figma plugin must reconnect to the new port. Valid range: 5454–5470.

figma_set_rest_tokenA

Set Figma REST API token for REST API calls (export, comments, version history, etc.). Token is stored in memory only — never written to disk. Cleared on restart. Get a token from Figma → Settings → Personal access tokens (max 90 days).

figma_clear_rest_tokenA

Clear the stored Figma REST API token from memory.

figma_rest_apiA

Call Figma REST API directly. Requires a token set via figma_set_rest_token. Use for: file export (SVG/PNG), comments, version history, team/project listing, image fills, and anything not available through the plugin bridge. Endpoint examples: GET /v1/files/:fileKey, GET /v1/images/:fileKey, GET /v1/files/:fileKey/comments

figma_create_prototype_connectionA

Create a prototype reaction between two nodes (source -> destination). Maps Figma Prototype panel: trigger (On click/hover/press/drag, After delay, Mouse events, Key/gamepad) + action (Navigate/Overlay/Swap/Back/Close/Change to/Scroll to/Open link) + transition type (Dissolve/Smart animate/Scroll animate/Move in-out/Push/Slide in-out) with direction (LEFT/RIGHT/TOP/BOTTOM) + easing + duration (ms, converted to seconds internally) + matchLayers (only on DirectionalTransition per Figma schema). Uses Figma Plugin API setReactionsAsync (reactions property is readonly in 2024+ API). v1 scope: SET_VARIABLE, SET_VARIABLE_MODE, UPDATE_MEDIA_RUNTIME, CONDITIONAL actions are NOT included (future release). Overlay background/close-on-outside are readonly in Plugin API — configure in Figma UI (Prototype tab -> Advanced -> Overlay).

figma_get_prototype_connectionsA

Read prototype reactions on a node subtree or the whole current page. Read-only audit — returns trigger, action, navigation, destinationId, transition, flowStartingPoints. Uses getReactionsAsync if available, falls back to node.reactions getter. At least one of nodeId or pageScope=true must be provided.

figma_set_flow_starting_pointA

Mark a FRAME as a prototype flow starting point (shown in Figma Prototype panel). Uses page.setFlowStartingPointsAsync if available (future API), falls back to direct assignment. Description is stored via pluginData (Figma FlowStartingPoint shape is { nodeId, name } only).

figma_create_interactionB

Create a variant state-change interaction on an INSTANCE/variant node (hover/press/focus -> variant). Uses reactions API with navigation: CHANGE_TO. Target variant resolved by id or name within the same COMPONENT_SET. Uses getMainComponentAsync for deprecation-safe main component access. v1 supports INSTANT/DISSOLVE/SMART_ANIMATE transitions (DirectionalTransition not applicable to variants).

figma_set_scroll_behaviorA

Set a node's scroll behavior (Figma Prototype panel > Scroll behavior). overflowDirection (FrameNode): NONE/HORIZONTAL/VERTICAL/BOTH — defines prototype scroll axis. scrollBehavior (SceneNode): SCROLLS/FIXED/STICKY_SCROLLS — FIXED = sticky header, STICKY_SCROLLS = becomes sticky after scrolling past. At least one of overflowDirection or scrollBehavior must be provided.

figma_get_rest_token_statusA

Check if a Figma REST API token is set and view rate limit usage.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/atezer/FMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server