tokensStudioMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIGMA_ACCESS_TOKEN | Yes | Your Figma personal access token with scope File content: Read-only. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_metadata_with_tokensA | STEP 2 of the recommended flow (call |
| get_design_contextA | THE tool for building code from a Figma design — replaces the need for a separate Figma MCP. Returns a compact markdown tree of a node/subtree carrying everything needed to rebuild it: auto-layout (direction, gap, padding, alignment, hug/fill sizing), constraints, fills/strokes/gradients with resolved hex colors, stroke weight, corner radius, effects (shadows/blur), opacity, blend mode, typography (family, weight, size, line-height, tracking), text content, component/instance relationships + variant props — AND the Tokens Studio tokens applied to each node, so generated code can use design-token variables instead of hard-coded values. One line per node; defaults omitted. |
| get_node_tokensB | Return just the Tokens Studio applied tokens for a single Figma node, as a tiny XML snippet. Untokenized nodes come back as . |
| inspect_nodeA | Deep-inspect a Figma node (or its subtree) against the current token catalog: returns every applied token with its resolved value, flags broken references (unresolved / missing set / cycle / literal 'none'), and attaches the top remap suggestions for each broken token plus any style gaps. Pass scope='subtree' to walk descendants. Backs the plugin's Inspect tab; use it in chat when you need to audit a frame's token coverage end-to-end without assembling the pieces yourself. |
| list_tokensA | START HERE for any question about which design tokens a Figma frame uses. Cheap pre-flight: returns the unique Tokens Studio tokens applied anywhere in a subtree, grouped by property (fill, spacing, typography, …), with the layer names that use each value and a style-gap report at the bottom. Much smaller than |
| propose_token_remapA | Plan a token remap for a Figma subtree against a NEW token set the user pasted as JSON. Read-only — does NOT touch the Figma file. Returns candidate new tokens (with scores + reasoning) for every old token currently applied in the subtree, plus an |
| apply_token_remapA | Apply a remap plan to the live Figma file via the companion plugin. Requires the 'Tokens Studio MCP Bridge' Figma plugin to be running and connected — call |
| get_token_storage_configA | Auto-discover Tokens Studio's sync provider config from the live Figma file (via the companion plugin). Returns the storageType blob (provider, id, branch, filePath, ...) plus themes / activeTheme / tokenFormat / version metadata. Credentials are NOT returned — they live in env vars on the MCP server. Pair with |
| get_token_catalogA | Fetch the canonical Tokens Studio token catalog from its sync source (GitHub, GitLab, Bitbucket, ADO, JSONBin, URL, Tokens Studio SaaS, Supernova) — or from the file's local cache when no remote sync. By default auto-discovers the storage config from the live file via the plugin; pass |
| list_themesA | List the themes defined in the active token catalog (auto-fetched if needed). Each theme reports its enabled token sets so the agent can decide which one to apply. Pair with |
| apply_themeB | Switch the file to a theme and resolve every applied token to its concrete value. Sets the file's |
| bulk_rename_tokensA | Rename tokens by exact path or wildcard pattern, in two scopes: live (rewrite applied references on Figma nodes via apply_token_remap) and/or files (stage |
| create_branchA | Create a new branch on the active token source's remote. Defaults to branching from the current active branch. Optionally switch the plugin's saved override to the new branch so subsequent edits + applies target it. Currently supports GitHub only; other providers will return a 'not implemented' error. |
| set_tokenA | Stage a token write. Adds (or replaces) a token at |
| delete_tokenA | Stage a token deletion. Removes the token at |
| rename_tokenB | Stage a token rename. Moves a token from one path to another. By default also rewrites every other token's |
| list_pending_editsA | Show what's staged in the working copy: branch, base commit SHA, source description, and the full edit log. Returns null when no edits have been staged yet. |
| discard_pending_editsA | Throw away every staged edit and reset the working copy to the last fetched base catalog. Useful when you want to start over. |
| commit_and_pushA | Flush every staged edit as a single commit on the configured branch (or a new one via |
| suggest_tokensA | Suggest tokens from the loaded catalog that fit a Figma node, ranked. Reads the node + nearby context (name, type, parent variant axes, tokens already applied to siblings) and scores every catalog token of compatible type. Returns the top N with reasoning per candidate. Use this when the design system's naming convention isn't obvious or when the user just says 'tokenize this' without spelling out paths. |
| apply_to_variantsA | Bulk-apply tokens to every variant of a Figma component_set in a single call, using a token-path TEMPLATE with |
| bridge_statusA | Diagnostic: is the local WebSocket bridge running and is the companion Figma plugin connected? Returns the connected file's key/name when known. If the plugin is not connected, make sure the 'Tokens Studio MCP Bridge' plugin is open in Figma. |
| get_current_targetA | Returns the designer's currently pinned target (if any) and live selection from the connected Figma plugin. Use when the user says 'this', 'here', 'the current selection', or doesn't specify a URL. Prefer |
| inspect_bound_variablesA | Diagnostic: dump the per-node state that can override raw writes — |
| debug_resolve_tokenA | Diagnostic: resolve a specific token path under a given theme and return the full resolved value tree. Useful for debugging why a composition token doesn't produce the expected writes — if a sub-property is missing from the resolved entries, that reference couldn't be found in the theme's enabled sets. |
| figma_evalA | Execute JavaScript inside the connected Figma plugin sandbox with the full |
| create_nodeA | Create a node in the live Figma file via the plugin: frame, rectangle, ellipse, line, text, autolayout (frame with flex), or instance (from a componentId). Auto-positions right of existing content unless x is given. Supports fill/stroke (hex, rgb(), hsl(), or 'none'), cornerRadius, opacity, and auto-layout props (layout='row'|'col', gap, padding, justify/items = start|center|end|between, sizingHorizontal/Vertical = HUG|FILL|FIXED). Text supports characters, fontSize, fontFamily, fontStyle. Pass |
| set_node_propertiesA | Edit properties on existing nodes (by nodeIds, single nodeId, or the current Figma selection when neither is given). Same property surface as create_node — fill, stroke, strokeWeight, cornerRadius, opacity, x/y/width/height, name, visible, locked, rotation, auto-layout props (layout/gap/padding/justify/items/sizing), constraints ({horizontal,vertical} = MIN|CENTER|MAX|STRETCH|SCALE), and text (characters, fontSize, fontFamily/fontStyle — fonts auto-loaded). Applies to every target node; returns per-node ok/error. |
| node_actionA | Run a structural action on nodes (by nodeIds / nodeId / current selection): delete, clone (with offset), select (+scroll into view), zoom, group, to-component (convert each node to a component), combine-variants (promote frames to components and combine into a component set — name them 'Prop=Value' first), append (move into parentId), or arrange (grid-layout the targets with gap/columns). |
| get_canvas_treeA | Live node tree from the plugin — works in ANY file the plugin is open in (drafts, branches, files without REST access), no fileKey needed. Root = nodeId, else the single selected node, else the current page. Each node carries id/name/type, x/y/w/h, auto-layout props, fills, radius, and text font/size/content. Depth-limited (default 6, max 12). |
| find_nodesA | Find nodes on the current page by name substring and/or type (FRAME, TEXT, COMPONENT, INSTANCE, …) via the plugin. Returns id/name/type/bounds for up to |
| export_node_imageA | Export a node (by nodeId or current selection) as PNG/JPG/SVG via the plugin. PNG/JPG come back as an inline image for visual verification of what you just built; SVG comes back as text. |
| figma_variablesC | Figma Variables CRUD + binding via the plugin. sub-ops: 'listCollections', 'list' (optionally filter by name), 'createCollection' {name}, 'create' {name, collection, type: COLOR|FLOAT|STRING|BOOLEAN, value}, 'setValue' {variableId, value, modeId?}, 'bind' {variable (id or name), field: fill|stroke|cornerRadius|itemSpacing|paddingTop|…, nodeIds?/selection}, 'exportCss' / 'exportTailwind' {collection?} (CSS custom properties / Tailwind theme.colors from the file's variables). Colors accept hex/rgb()/hsl(). |
| create_iconA | Create an icon on the canvas from the Iconify catalog (200k+ icons: lucide:, mdi:, tabler:, heroicons:, …). The server fetches the SVG from api.iconify.design and the plugin renders it as vectors, optionally tinted with |
| create_image_from_urlA | Fetch an image from a URL (server-side) and place it on the canvas as a rectangle with an image fill — e.g. reference screenshots, logos, photos. Native image size is used unless width/height given. |
| canvas_auditA | Accessibility audit of the live canvas via the plugin (scope: nodeId → selection → current page). Checks: 'contrast' (WCAG AA/AAA text-vs-background ratios, large-text aware), 'touch' (interactive elements ≥44×44, detected by reactions or button/input-ish names), 'text' (minimum font size), or 'all'. Returns per-check counts + failing nodes with ids so fixes can target them directly. |
| analyze_designA | Usage statistics for the live canvas via the plugin (scope: nodeId → selection → current page): top solid fill colors, top typography combos (family/style/size), and top auto-layout gaps + paddings, each with usage counts. Use it to spot hard-coded values that should be tokens, or to derive a palette from an existing design. |
| dev_resourcesA | Manage dev resources (links to Storybook / GitHub / docs) on a node via the plugin: action='add' {url, name?}, 'list', or 'delete' {url}. Targets nodeId or the current selection. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Blyawon/tokensStudioMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server