Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Descripción del creador (original en inglés)
Let Claude create and edit fully editable vector nodes on the Figma canvas.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
FVMCP_CHANNEL, FVMCP_PORTNecesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"figma-vector": {
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add figma-vector --env FVMCP_CHANNEL=your-value --env FVMCP_PORT=your-value -- npx -y figma-vector-mcpCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"figma-vector": {
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"figma-vector": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
FVMCP_CHANNEL envFVMCP_PORT envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub workingmodel, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.3.3) llegó al registro hace 14 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Figma Context MCP, Claude Real Video, Figma MCP Server
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
The Figma MCP server brings Figma design context directly into your AI workflow.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
A Figma plugin + MCP server that lets Claude (or any MCP client) create and manipulate fully-editable vector nodes on the Figma canvas — paths, shapes, gradients, text, effects, image fills, and more — via a local WebSocket relay.
Developed by [Working Model Inc](https://workingmodel.co)
Version 0.3.3 — 58 tools across creation, styling, layout, components, effects, pages, and export.
cursor-talk-to-figma-mcp is great for reading Figma state and creating basic primitives, but it has no vector path creation, gradient, effects, or compositing tools. This plugin fills that gap:
| Capability | cursor-talk-to-figma-mcp | figma-vector-mcp |
|---|---|---|
| Create rectangle / ellipse / frame / text | ✅ | ✅ |
| Create from SVG string | ❌ | ✅ |
Create from path d string | ❌ | ✅ |
| Create polyline / polygon | ❌ | ✅ |
| Gradient fills (linear, radial, angular, diamond) | ❌ | ✅ |
| Image fills (base64 → canvas) | ❌ | ✅ |
| Effects (shadow, blur) | ❌ | ✅ |
| Blend modes | ❌ | ✅ |
| Boolean operations (union, subtract, etc.) | ❌ | ✅ |
| Auto-layout | ❌ | ✅ |
| Components + instances | ❌ | ✅ |
| Font discovery | ❌ | ✅ |
| Node search | ❌ | ✅ |
| Multi-page management | ❌ | ✅ |
| Named node registry | ❌ | ✅ |
| Batch commands (single round-trip) | ❌ | ✅ |
| Auto-reconnect + command queue | ❌ | ✅ |
| Export SVG + PNG | ❌ | ✅ |
Claude (MCP client)
↕ stdio (MCP protocol) server.ts (MCP server) ↕ WebSocket (ws://localhost:3055) socket.ts (relay — channel-based routing) ↕ WebSocket Figma plugin (ui.html ↔ code.js) ↕ postMessage Figma Plugin API → canvas
The socket relay runs locally. The Figma plugin connects and joins a named channel. The MCP server joins the same channel and sends commands. Results flow back the same path.
For AI agents (Claude Code, Cursor, etc.) — the recommended call sequence to start any session:
1. health_check → confirm plugin is connected
Color convention: All RGB values are 0–1 throughout (matching Figma's internal format). r: 1, g: 0, b: 0 = red. Never use 0–255.
Gradient workflow:
1. create_frame({ width, height }) → get frameId
Image fill workflow (with generative AI):
1. Generate image via Replicate/fal.ai → get base64 PNG
Batch compositions — use $prev.id to chain commands without extra round-trips:
{ "commands": [
{ "command": "create_frame", "params": { "width": 400, "height": 300, "name": "Card" } }, { "command": "set_gradient_fill", "params": { "nodeId": "$prev.id", "type": "LINEAR", "stops": [{"color":{"r":0.1,"g":0.1,"b":0.9},"position":0}, {"color":{"r":0.8,"g":0.2,"b":0.5},"position":1}] } }, { "command": "create_text", "params": { "parentId": "$results.0.id", "text": "Hello", "fontSize": 32, "x": 24, "y": 24 } } ]}
Known SVG limits: figma.createNodeFromSvg() strips , gradients, filters, masks, and animations. Use set_gradient_fill for gradients instead of SVG .
Reconnection: If the plugin disconnects, it auto-reconnects with exponential backoff (1s→30s max) and replays queued commands (up to 30s old). No manual intervention needed for short interruptions.
src/figma-plugin/manifest.jsonnpm install -g figma-vector-mcp
bun run socket
Listens on ws://localhost:3055. Auto-start on login (macOS):
./scripts/setup.sh --launchd
# Auto-detect Claude Code / Cursor and write config:
./scripts/setup.sh
./scripts/setup.sh --local
./scripts/setup.sh --hooks
Manual config (~/.claude/settings.json or ~/.cursor/mcp.json):
{
"mcpServers": { "FigmaVectorMCP": { "command": "bunx", "args": ["figma-vector-mcp@latest"], "env": { "FVMCP_CHANNEL": "figma-vector-mcp" } } } }
ws://localhost:3055) → Connectfigma-vector-mcp) → JoinThe plugin saves your last URL and channel — pre-filled on next open. Keep the plugin panel open during your session — closing it terminates the WebSocket connection.
health_check → { "status": "ok", "version": "0.3.3", "currentPage": { ... } }
| Variable | Default | Description |
|---|---|---|
FVMCP_PORT | 3055 | Socket relay port |
FVMCP_CHANNEL | figma-vector-mcp | Channel name — must match the plugin |
FVMCP_TIMEOUT_MS | 10000 | Default command timeout (ms) |
Per-tool timeout overrides: health_check → 3s, export_node_as_png → 30s, export_node_as_svg → 15s, create_batch → 60s.
| Tool | Description | Key Params |
|---|---|---|
health_check | Ping plugin; confirm connectivity | — |
join_channel | Join a named channel | channel |
| Tool | Description | Key Params |
|---|---|---|
create_vector_from_svg | Place editable vector from SVG string | svg, x, y, name, parentId |
create_path | Vector from SVG d path string | d, x, y, fillColor, strokeColor, strokeWeight |
create_polyline | Vector from x,y point pairs | points, closed, strokeColor, strokeWeight |
| Tool | Description | Key Params |
|---|---|---|
create_frame | Container frame | width, height, x, y, fillColor |
create_rectangle | Rectangle | width, height, x, y, fillColor |
create_ellipse | Ellipse / circle | width, height, x, y, fillColor |
create_text | Text node with optional fixed-width column | text, fontSize, fontFamily, fontStyle, fillColor, width, height, textAutoResize |
| Tool | Description | Key Params |
|---|---|---|
set_fill_color | Solid RGBA fill (0–1) | nodeId, r, g, b, a |
set_gradient_fill | Gradient fill — LINEAR, RADIAL, ANGULAR, DIAMOND | nodeId, type, stops, angle, center, gradientTransform |
set_image_fill | Base64 image as fill | nodeId, base64, scaleMode, opacity |
| Tool | Description | Key Params |
|---|---|---|
set_stroke | Full stroke control | nodeId, color, weight, position, dashPattern, lineCap, lineJoin |
set_stroke_color | Quick stroke colour + weight | nodeId, r, g, b, a, weight |
| Tool | Description | Key Params | |
|---|---|---|---|
set_effect | Drop shadow, inner shadow, blur, background blur | nodeId, effects[] (type, color, offset, blur, spread), mode (REPLACE \ | APPEND) |
set_blend_mode | Layer blend mode | nodeId, mode (NORMAL, MULTIPLY, SCREEN, OVERLAY…) |
| Tool | Description | Key Params |
|---|---|---|
set_corner_radius | Corner radius — uniform or per-corner | nodeId, radius or topLeft, topRight, bottomLeft, bottomRight |
set_opacity | Opacity 0–1 | nodeId, opacity |
set_text_style | Modify text properties + text box size | nodeId, fontSize, fontFamily, fontStyle, letterSpacing, lineHeight, textAlign, fillColor, width, height, textAutoResize |
rename_node | Rename a node | nodeId, name |
set_visibility | Show or hide a node | nodeId, visible |
reorder_node | Change Z-order within parent | nodeId, action (BRING_TO_FRONT / SEND_TO_BACK / BRING_FORWARD / SEND_BACKWARD) or index |
move_node | Reposition | nodeId, x, y |
resize_node | Resize | nodeId, width, height |
delete_node | Remove from canvas | nodeId |
clone_node | Duplicate, optionally reposition | nodeId, x, y, parentId |
group_nodes | Group nodes | nodeIds[], name, parentId |
ungroup_nodes | Ungroup | nodeId |
boolean_operation | Union, subtract, intersect, exclude | nodeIds[], operation, name |
create_mask | Clip mask — maskNode clips targetNode | maskNodeId, targetNodeId, name |
| Tool | Description | Key Params |
|---|---|---|
set_auto_layout | Enable / configure auto-layout | nodeId, direction, spacing, padding, primaryAxisAlign, counterAxisAlign, primaryAxisSizingMode, counterAxisSizingMode, wrap |
set_layout_grid | Column / row / grid guides on a frame | nodeId, grids[] (pattern, count, gutterSize, sectionSize, alignment, color) |
batch_set_properties | Bulk update fill/stroke/opacity/position/size | operations[] (nodeId + any subset of properties) |
| Tool | Description | Key Params |
|---|---|---|
create_component | Convert frame/group to component | nodeId, name |
create_instance | Place component instance | componentId, x, y, parentId |
get_components | List all local components | — |
get_library_components | Search local components by name | query |
| Tool | Description | Key Params |
|---|---|---|
get_document_info | Document name, pages, current page children | — |
get_selection | Currently selected nodes | — |
get_node_info | Full node detail: fills, strokes, layout, text, constraints | nodeId |
set_focus | Scroll viewport to node and select it | nodeId |
find_nodes | Search by name and/or type | query, type, pageId, recursive |
get_page_list | All pages | — |
switch_page | Activate a page | pageId or pageName |
create_page | Create a new page | name |
duplicate_frame_to_page | Copy node to another page | nodeId, targetPageId, x, y |
| Tool | Description | Key Params |
|---|---|---|
register_node | Save named alias for a node ID (persists in document) | alias, nodeId |
resolve_node | Look up node ID by alias | alias |
| Tool | Description | Key Params |
|---|---|---|
register_color | Save a named color to the document palette (0–1) | alias, r, g, b, a |
resolve_color | Look up a color by alias | alias |
list_colors | List all registered colors in the document | — |
| Tool | Description | Key Params |
|---|---|---|
get_styles | All local paint and text styles | — |
apply_style | Apply document style to node | nodeId, styleId, styleType |
get_available_fonts | List loadable fonts; filter by name | query |
| Tool | Description | Key Params |
|---|---|---|
export_node_as_svg | Export node as SVG string | nodeId |
| export_node_as_png | Export as base64 PNG | nodeId, scale (default 2)
Solo se muestra el principio; lee el resto en el repo