figma-slides-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIGMA_WS_PORT | No | WebSocket port for plugin connection | 3055 |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/luan007/figma-slides-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server