The gap between a design tool and an agent is usually addressing: the model needs an identifier the human does not have. get_selection and read_my_design close it by making the designer's own cursor the reference, which turns instructions into the shape people naturally give them. The component instance tool is the other one that matters for output quality — generated layouts made from raw rectangles diverge from the design system immediately, and placing real component instances keeps them in it. The annotation tools are an unusual inclusion and a useful one, since annotations are where design intent lives and they are normally invisible to anything automated.
A Figma client covering both directions: reading the document, its selection, styles, local components and annotations, and writing — creating and modifying nodes, setting colours and text, cloning, resizing, deleting and exporting.
- Reading starts from where the designer is: get_selection and read_my_design work on the current selection, so 'this' means what is highlighted rather than a node id you had to find.
- get_node_info and get_nodes_info read specific nodes, singly or in bulk.
- Creation covers frames, rectangles and text, with set_fill_color, set_stroke_color and set_text_content editing what exists.
- Structural edits: move, resize, clone, delete a node, and delete several at once.
- create_component_instance places an instance of a local component, so generated work uses the design system rather than loose shapes.
- Annotations are first-class — read them, set one, or set several in a node in parallel.
- export_node_as_image takes a node out as an image, and get_styles and get_local_components expose what the document already defines.
A running Figma document the server can reach.
One command — npx -y cursor-talk-to-figma-mcp
