Mokido
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIGMA_MCP_LEGACY_TOOLS | No | Set to '1' to enable optional legacy tools (figma_create_ui_card, get_me, get_image_fills). | 0 |
| FIGMA_MCP_NO_UPDATE_CHECK | No | Set to '1' to disable the startup update check. | 0 |
| FIGMA_PERSONAL_ACCESS_TOKEN | No | Your Figma personal access token for cloud REST access. Without it, REST tools (get_file, get_node, etc.) are not registered. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| figma_execute_codeA | WRITE tool: run JavaScript in the open Figma document (Figma Desktop + 'Mokido' plugin) to create, edit, move, style or delete nodes. To READ (explore a section, list children, find layers, check texts / fonts / variants / table columns) call figma_inspect instead: every id in one call, one line per node, view:"table" for tables; a read script here costs a model turn per question and its reply names the figma_inspect call to use (use_instead). Every call is a full model turn, so make the whole change in ONE call — all screens / breakpoints, verified in the same code with bridge.check — and put capture_node_ids on that same call instead of a separate figma_screenshot. Globals: |
| figma_inspectA | READ the live Figma document in ONE call — the tool for any read (not figma_execute_code); pass every node id you need at once instead of one call per node. Default: a compact outline, one line per node (TYPE "name" #id WxH @x,y [V gap8 pad16 fill/hug a:start/center] size:fill/hug fill:#FFF stroke:#E8EAF0/0,1,1,1 r0,0,3,3 shadow:… font "text…"; non-defaults only; a TEXT named after its text drops the name; |
| figma_screenshotA | Capture PNG screenshots of specific nodes or the current selection in Figma, to check layout, contrast, typography and spacing. Each image costs ~1k tokens at the default max_px, and stays in context: check mechanical things through write-call |
| figma_get_selectionA | Get information and properties (dimensions, coordinates, text, fills, parent, page, AutoLayout context) of the currently selected nodes on the Figma canvas. |
| figma_find_componentsA | Find and inspect components, component sets, variants, and component property definitions in the active Figma file without flooding LLM context. Returns names, variant values, keys, and IDs. |
| figma_insert_component_instanceA | Create and insert an instance of a master component or component set into the canvas or target AutoLayout container. Supports selecting variants, applying text overrides with auto font loading, and can return a PNG screenshot (capture: true) for visual verification. |
| figma_get_variablesA | Retrieve all Figma Variable collections, modes (e.g. Light/Dark), and design tokens (colors, numbers, strings, booleans) from the active document. |
| figma_set_variables_modeA | Switch the active Figma Variables mode (e.g. Dark Mode, Light Mode, Brand theme) for a specific artboard/frame or the entire page. |
| figma_insert_svgA | Insert raw SVG/vector code directly into Figma canvas or target AutoLayout container with automatic scale-proportional resizing, fill/stroke color overrides, optional component creation, and an optional PNG screenshot (capture: true). |
| figma_get_canvas_layoutA | Inspect top-level frames and artboards on the active Figma page to prevent overlap. Returns all screen coordinates, bounding box, and a calculated 'suggestedNextPosition' for placing new artboards safely. |
| figma_rollbackA | Undo what a previous write call (figma_execute_code, figma_insert_component_instance, figma_insert_svg) did: removes nodes it created and restores properties on nodes it modified. Deletions the code performed on pre-existing nodes are never recoverable. Every write call's response includes the checkpoint_id to pass here. |
| figma_job_statusA | Wait for a figma_execute_code call that came back as { status: 'running', job_id } (it ran past 45s, or was called with async: true). BLOCKS until the job finishes or wait_ms passes, then returns the same result/screenshot the synchronous call would have — so call it once, not in a polling loop. |
| figma_list_targetsA | List every Figma document currently connected to this bridge (fileName, current page, which one is focused). Use this when a LIVE tool call fails with AMBIGUOUS_TARGET, or before working with a specific file among several open at once — pass the fileName as |
| figma_read_canvasA | Read the LIVE, currently-open Figma document as token-optimized Pseudo-JSX/Tree/JSON — the same pipeline get_file/get_node use for the cloud API, applied to whatever is open in Figma Desktop right now. Prefer this over hand-writing a tree walk in figma_execute_code; it is far cheaper in tokens and its output format matches get_file/get_node exactly. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Several read-oriented tools overlap: figma_inspect, figma_read_canvas, figma_get_selection, and figma_find_components all inspect live document content, and figma_inspect itself claims to be the tool for any read. figma_screenshot also overlaps with the capture option on write calls. Descriptions give strong guidance, but an agent could still hesitate between plausible read paths.
All tools share the figma_ prefix and most follow a verb_noun pattern such as figma_get_selection, figma_find_components, and figma_insert_svg. Minor deviations include noun-like names (figma_screenshot, figma_job_status) and mixed read verbs (inspect, read, get, find), but the set remains predictable.
14 tools is well within a reasonable range for a Figma bridge that spans reading, writing, component insertion, variables, screenshots, rollback, and async job handling. Each tool has a plausible role, and the count does not feel bloated.
The surface covers a broad design-editing lifecycle: live inspection, arbitrary writes, component and SVG insertion, variables, screenshots, rollback, and job status. Some operations such as explicit export, selection mutation, or variable creation are not first-class, though figma_execute_code can handle them as workarounds.