Skip to main content
Glama
luan007

figma-slides-mcp

by luan007

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FIGMA_WS_PORTNoWebSocket port for plugin connection3055

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
start_sessionA

Start the WebSocket server and wait for the Figma plugin to connect. Call this when the user says "start figma session", "connect to figma", or "open slides". Returns connection status and instructions if not yet connected.

connection_statusA

Check if the Figma plugin is connected. Does NOT start the server — use start_session first.

get_editor_infoA

Get editor type, document name, and page count from the connected Figma file

get_slide_gridA

Get the full slide deck structure: rows and slides with their IDs and names

get_slide_contextA

Get a rich semantic dump of everything on a slide: text content, shapes, images, positions, styles. Best for understanding what is on a slide before editing.

screenshot_slideA

Capture a visual screenshot of a slide as PNG. Returns base64-encoded image.

screenshot_all_slidesA

Capture thumbnails of all slides. Returns array of base64 PNG images.

create_slideB

Create a new empty slide (fixed 1920x1080).

clear_slideA

Remove all content from a slide, keeping the slide itself.

create_nodeA

Create a node (FRAME, RECTANGLE, ELLIPSE, POLYGON, STAR, LINE, VECTOR, TEXT) with optional properties. For tables, shapes-with-text, etc., use dedicated tools.

set_propertiesA

Modify properties of any node. Supports x, y, width, height, rotation, fills, strokes, strokeWeight, effects, opacity, blendMode, cornerRadius, visible, locked, layoutMode, itemSpacing, padding.

delete_nodeB

Remove a node from the canvas

clone_nodeB

Duplicate a node, optionally reparenting the clone.

reparent_nodeB

Move a node to a different parent container

group_nodesC

Group multiple nodes together

ungroup_nodeA

Ungroup a group node, returning children to parent

set_textA

Set text content of a text node. Font loading is automatic.

set_text_range_styleA

Apply styles to a character range: fontSize, fontName, fills, letterSpacing, lineHeight, textDecoration, textCase

get_text_contentA

Read text content and style segments from a text node

list_fontsA

Search available fonts. Use query to filter by family name. Without query, returns first 50 families.

place_imageA

Place an image from URL or bytes. Creates a rectangle with IMAGE fill.

create_slide_rowA

Create a new slide row in the deck grid

duplicate_slideB

Clone a slide with all content

delete_slideB

Remove a slide from the deck

delete_slide_rowA

Remove a slide row and all slides in it

reorder_slidesB

Set the order of slide rows in the deck

move_slide_to_rowC

Move a slide to a different row

set_slide_transitionA

Set transition: DISSOLVE, SLIDE_FROM_LEFT/RIGHT/TOP/BOTTOM, PUSH_FROM_*, SMART_ANIMATE, NONE

set_slide_skippedB

Mark slide as skipped in presentation

set_slide_themeC

Apply a theme to a slide

focus_slideC

Navigate to a specific slide in the editor

set_slides_view_modeB

Switch between grid and single-slide view

create_tableB

Create a table (Slides/FigJam only)

set_cell_contentC

Set text of a table cell

get_cell_contentB

Read text of a table cell

insert_table_rowC

Insert a row into a table

insert_table_columnC

Insert a column into a table

delete_table_rowC

Remove a row from a table

delete_table_columnC

Remove a column from a table

create_shape_with_textC

Create a shape with built-in text label (Slides/FigJam). shapeType: SQUARE, ELLIPSE, ROUNDED_RECTANGLE, DIAMOND, TRIANGLE_UP, etc.

create_gifB

Create a GIF node (Slides only, may have limited support)

create_videoA

Create a video node from URL or bytes (Slides only, MP4/MOV/WebM)

replace_mediaC

Replace media content of a video/image node

get_node_treeA

Get structural tree: IDs, types, names, bounds. Use depth to limit recursion.

get_node_propertiesB

Read all or specific properties of a node

find_nodesA

Search for nodes by name (substring), type, visible, locked. All criteria AND-combined.

get_selectionA

Get currently selected node IDs

set_selectionC

Select specific nodes

get_interactive_elementsA

List interactive elements on a slide (polls, embeds). Read-only.

list_themesA

List available slide themes

export_nodeB

Export any node to PNG, JPG, SVG, or PDF

set_viewportC

Set editor viewport center and zoom

zoom_to_fitC

Zoom to fit specific nodes or all content

batch_operationsA

Execute multiple commands in one round-trip. Use "$N.field" to reference results from earlier commands (e.g. "$0.nodeId"). All execute as single undo step.

create_svgA

Import an SVG string as editable Figma vector nodes. Use for icons, logos, simple graphics. The agent generates the SVG string directly.

render_d3A

Render a D3.js visualization as editable Figma vector nodes. PREFERRED for data visualizations, charts, graphs, diagrams.

The script runs in the plugin iframe with full D3 v7 available. Write JS that uses d3 to build SVG in the scratch div. The SVG is auto-extracted and converted to editable Figma nodes.

Available globals: d3, scratch (offscreen div to render into). The script should either return an SVG string or render into scratch (auto-extracted).

IMPORTANT: All text becomes editable Figma text nodes. This is the best renderer for data-driven graphics.

render_roughA

Render hand-drawn / sketchy style graphics using Rough.js as editable Figma nodes.

Use for: informal diagrams, whiteboard-style visuals, creative/playful graphics. Available: rough (Rough.js), scratch div, plus a pre-created SVG element.

Write JS that uses rough.svg(svg) to draw shapes. They render with a hand-drawn aesthetic (hachure, cross-hatch, zigzag, dots fills).

IMPORTANT: All output is editable vector nodes in Figma.

render_satoriA

Render HTML/CSS layout as editable Figma vector nodes using Satori (Vercel's HTML-to-SVG engine).

Use ONLY when you need complex CSS layouts that are hard to express as SVG — flexbox cards, multi-column layouts, UI components. For data viz, prefer render_d3 instead.

LIMITATIONS:

  • Text is rendered as vector PATHS, not editable text nodes. Users cannot edit text in Figma.

  • No CSS gradients (use solid colors instead)

  • No rgba() (use hex colors)

  • Requires fetching a font file (adds latency)

  • Uses JSX-object syntax, not HTML strings

The script runs in the iframe. Use the satori() function with JSX-like objects. Must fetch a font first: fetch Inter WOFF, pass as fonts array.

Available: satori (the render function), scratch div.

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/luan007/figma-slides-mcp'

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