Figma Vector MCP
NPM · FIGMA-VECTOR-MCP
Let Claude create and edit fully editable vector nodes on the Figma canvas.
Available components
Last scanned (23 hours ago)
Scores higher than 36% of npm servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security80
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects uuid 10.0.0, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 31 of 94 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3967 tokens (~68/item across 58 items; 58 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage89
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 68% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_node" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 58 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 23 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: unverified → 0.03 ▲ functional
- 22 Oct 26 46
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed npm/figma-vector-mcp@0.3.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 94 packages
| Packages resolved | 94 |
|---|---|
| Deprecated | 1 |
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
apply_style ~68
Apply a named document style (paint or text) to a node by style ID.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
| styleId | string | yes | Style ID from get_styles |
| styleType | string | – | Hint for style type (auto-detected if omitted) |
No output schema declared.
No examples provided.
batch_set_properties ~45
Update fill color, stroke color, opacity, position, and/or size on multiple nodes in a single round-trip.
| Name | Type | Req | Description |
|---|---|---|---|
| operations | array | yes | Array of per-node property updates |
No output schema declared.
No examples provided.
boolean_operation ~66
Perform a boolean operation (union, subtract, intersect, exclude) on 2 or more vector nodes.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Name for the resulting node |
| nodeIds | array | yes | IDs of nodes to combine (order matters for subtract) |
| operation | string | yes | – |
No output schema declared.
No examples provided.
clone_node ~59
Duplicate a Figma node, optionally repositioning the clone.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
| parentId | string | – | Parent frame/group node ID |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_batch ~69
Execute multiple commands in a single round-trip. Commands run sequentially. Each result includes success/error status. Use this for complex compositions (e.g. place an SVG, add a label, group them) to avoid multiple round-trips.
| Name | Type | Req | Description |
|---|---|---|---|
| commands | array | yes | Ordered list of commands to execute |
No output schema declared.
No examples provided.
create_component ~42
Convert an existing frame or group into a reusable Figma component.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Layer name |
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
create_ellipse ~80
Create an ellipse (or circle) on the Figma canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | object | – | – |
| height | number | yes | – |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| width | number | yes | – |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_frame ~78
Create a Figma frame (container) on the canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | object | – | – |
| height | number | yes | – |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| width | number | yes | – |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_instance ~72
Place an instance of a local component on the canvas by component ID.
| Name | Type | Req | Description |
|---|---|---|---|
| componentId | string | yes | ID of the source component node |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_mask ~84
Apply a clip mask — maskNode defines the shape, targetNode is clipped to it. Both nodes are grouped.
| Name | Type | Req | Description |
|---|---|---|---|
| maskNodeId | string | yes | ID of the node to use as the mask shape (bottom layer) |
| name | string | – | Name for the resulting group |
| targetNodeId | string | yes | ID of the node to be masked (top layer) |
No output schema declared.
No examples provided.
create_page ~30
Create a new page in the Figma document.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name of the new page |
No output schema declared.
No examples provided.
create_path ~119
Create an editable vector from a single SVG path `d` attribute string. Shorthand for simple paths without a full SVG wrapper.
| Name | Type | Req | Description |
|---|---|---|---|
| d | string | yes | SVG path data string (the `d` attribute) |
| fillColor | object | – | Fill color |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| strokeColor | object | – | Stroke color |
| strokeWeight | number | – | Stroke width in pixels |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_polyline ~115
Create an editable vector from an array of [x, y] point pairs. Use closed=true to produce a filled polygon.
| Name | Type | Req | Description |
|---|---|---|---|
| closed | boolean | – | Close the path into a polygon |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| points | array | yes | Array of [x, y] coordinate pairs |
| strokeColor | object | – | – |
| strokeWeight | number | – | – |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_rectangle ~75
Create a rectangle on the Figma canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | object | – | – |
| height | number | yes | – |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| width | number | yes | – |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_text ~196
Create a text node on the Figma canvas. Use width to fix the column width and enable text wrapping.
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | object | – | – |
| fontFamily | string | – | – |
| fontSize | number | – | – |
| fontStyle | string | – | – |
| height | number | – | Fixed height in px — clips or scrolls content. Only meaningful when width is also set. |
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| text | string | yes | Text content |
| textAutoResize | string | – | Resize behaviour. HEIGHT (default when width set): fix width, grow height. NONE: fixed box. WIDTH_AND_HEIGHT: auto-size both (default). |
| width | number | – | Fixed column width in px — enables text wrapping. Height grows automatically unless height is also set. |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
create_vector_from_svg ~105
Place a fully editable vector node on the Figma canvas from an SVG string. Supports any valid SVG including paths, polylines, polygons, circles, and groups. The created node is fully editable in Figma.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Layer name |
| parentId | string | – | Parent frame/group node ID |
| svg | string | yes | Complete SVG string including <svg> wrapper |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
delete_node ~29
Delete a node from the Figma canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
duplicate_frame_to_page ~76
Copy a node to a target page at an optional position.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
| targetPageId | string | yes | ID of the page to copy the node to |
| x | number | – | X position on target page |
| y | number | – | Y position on target page |
No output schema declared.
No examples provided.
export_node_as_png ~64
Export a Figma node as a base64-encoded PNG at the specified pixel scale.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
| scale | number | – | Pixel scale (1 = 1x, 2 = 2x, etc.) |
No output schema declared.
No examples provided.
export_node_as_svg ~51
Export a Figma node as an SVG string. Useful for round-tripping: create a vector, modify it in Figma, export back.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
find_nodes ~108
Search for nodes by name (case-insensitive contains) and/or type. Scoped to a page (defaults to current page). Recursive by default.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID to search in (defaults to current page) |
| query | string | – | Name substring to search for (case-insensitive) |
| recursive | boolean | – | Search nested children (default true) |
| type | – | – | Node type(s) to filter by, e.g. 'FRAME', ['TEXT','RECTANGLE'] |
No output schema declared.
No examples provided.
get_available_fonts ~63
List all fonts available in this Figma environment (system fonts + Figma font agent). Use before create_text to verify a font is loadable. Optionally filter by family name substring.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Filter by family name (case-insensitive contains) |
No output schema declared.
No examples provided.
get_components ~18
List all local components in the Figma document.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_document_info ~31
Get information about the current Figma document: name, current page, all pages, and top-level nodes.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_library_components ~43
List components available for use. Returns local document components. Filter by name with optional query.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Filter by component name (case-insensitive contains) |
No output schema declared.
No examples provided.
get_node_info ~41
Get detailed information about a specific node by ID: type, position, size, opacity, children.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
get_page_list ~19
List all pages in the current Figma document.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_selection ~22
Get the currently selected nodes in Figma, including position and size.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_styles ~35
Get all local paint styles and text styles defined in the Figma document. Use these IDs with apply_style to keep output on-brand.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
group_nodes ~54
Group multiple Figma nodes into a group layer.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Layer name |
| nodeIds | array | yes | Array of node IDs to group |
| parentId | string | – | Parent frame/group node ID |
No output schema declared.
No examples provided.
health_check ~24
Ping the Figma plugin and confirm connectivity. Returns plugin version and current page.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
join_channel ~55
Join a named channel on the Figma Vector MCP socket relay. Must be called before any drawing commands if the channel was not set via env/arg.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | yes | Channel name (must match the Figma plugin) |
No output schema declared.
No examples provided.
list_colors ~19
List all color aliases registered in this document's palette.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
move_node ~47
Move a Figma node to a new position on the canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
| x | number | yes | – |
| y | number | yes | – |
No output schema declared.
No examples provided.
register_color ~89
Save a named color alias to the document palette. All RGB values are 0–1. Use resolve_color or list_colors to retrieve.
| Name | Type | Req | Description |
|---|---|---|---|
| a | number | – | – |
| alias | string | yes | Name for this color, e.g. 'brand-blue', 'amber', 'near-black' |
| b | number | yes | – |
| g | number | yes | – |
| r | number | yes | – |
No output schema declared.
No examples provided.
register_node ~66
Save a named alias for a node ID, persisted in the Figma document. Use resolve_node to retrieve it later.
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | yes | Semantic name, e.g. 'background', 'hero-frame' |
| nodeId | string | yes | Node ID to associate with the alias |
No output schema declared.
No examples provided.
rename_node ~38
Rename a Figma node.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | New name for the node |
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
reorder_node ~78
Change a node's Z-order within its parent. Use action for relative moves or index for an absolute position (0 = bottom of stack).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Relative reorder action |
| index | integer | – | Absolute stack index (0 = bottom). Overrides action if both provided. |
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
resize_node ~46
Resize a Figma node to the given width and height.
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | yes | – |
| nodeId | string | yes | Figma node ID |
| width | number | yes | – |
No output schema declared.
No examples provided.
resolve_color ~44
Look up a color by its registered alias. Returns r, g, b, a values (0–1).
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | yes | The color alias to look up |
No output schema declared.
No examples provided.
resolve_node ~40
Look up a node ID by its registered alias. Returns the node ID previously saved with register_node.
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | yes | The alias to look up |
No output schema declared.
No examples provided.
screenshot_current_page ~54
Export the current Figma page as a base64-encoded PNG. Useful for visual verification of the canvas state.
| Name | Type | Req | Description |
|---|---|---|---|
| scale | number | – | Pixel scale (1 = 1×, 2 = 2×) |
No output schema declared.
No examples provided.
set_auto_layout ~186
Enable auto-layout on a frame and configure direction, spacing, padding, and alignment. Set direction to NONE to disable auto-layout.
| Name | Type | Req | Description |
|---|---|---|---|
| counterAxisAlign | string | – | Alignment along cross axis |
| counterAxisSizingMode | string | – | Sizing along cross axis — FIXED holds the frame size, AUTO hugs children (default AUTO) |
| direction | string | – | Layout direction |
| nodeId | string | yes | Figma node ID |
| padding | – | – | Padding — single number (all sides) or {top, right, bottom, left} |
| primaryAxisAlign | string | – | Alignment along main axis |
| primaryAxisSizingMode | string | – | Sizing along main axis — FIXED holds the frame size, AUTO hugs children (default AUTO) |
| spacing | number | – | Gap between children in pixels |
| wrap | boolean | – | Enable wrapping (WRAP) |
No output schema declared.
No examples provided.
set_blend_mode ~42
Set the blend mode of a node layer.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | Figma blend mode |
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
set_corner_radius ~104
Set corner radius of a rectangle or frame. Use radius for uniform corners or topLeft/topRight/bottomLeft/bottomRight for individual corners (e.g. pill, tab, card shapes).
| Name | Type | Req | Description |
|---|---|---|---|
| bottomLeft | number | – | – |
| bottomRight | number | – | – |
| nodeId | string | yes | Figma node ID |
| radius | number | – | Uniform radius for all corners |
| topLeft | number | – | – |
| topRight | number | – | – |
No output schema declared.
No examples provided.
set_effect ~98
Apply effects (drop shadow, inner shadow, layer blur, background blur) to a node. Use mode REPLACE (default) to overwrite all effects, or APPEND to add to existing ones.
| Name | Type | Req | Description |
|---|---|---|---|
| effects | array | yes | One or more effects to apply |
| mode | string | – | REPLACE overwrites all existing effects (default). APPEND adds to the existing effects array. |
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
set_fill_color ~74
Set the fill color of a Figma node.
| Name | Type | Req | Description |
|---|---|---|---|
| a | number | – | – |
| b | number | yes | Blue 0–1 |
| g | number | yes | Green 0–1 |
| nodeId | string | yes | Figma node ID |
| r | number | yes | Red 0–1 |
No output schema declared.
No examples provided.
set_focus ~34
Scroll the Figma viewport to focus on a node and select it.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Figma node ID |
No output schema declared.
No examples provided.
set_gradient_fill ~193
Apply a gradient fill to a Figma node. Supports LINEAR, RADIAL, ANGULAR (conic), and DIAMOND types. Replaces any existing fills. Stops must be sorted by position (0 → 1).
| Name | Type | Req | Description |
|---|---|---|---|
| angle | number | – | Rotation in degrees — 0 = top→bottom, 90 = left→right (LINEAR and ANGULAR) |
| center | array | – | Focal point [cx, cy] in 0–1 node-relative coordinates (RADIAL and DIAMOND, default [0.5, 0.5]) |
| gradientTransform | array | – | Raw 2×3 affine gradientTransform matrix — overrides angle/center when provided |
| nodeId | string | yes | Figma node ID |
| stops | array | yes | At least 2 colour stops, sorted by position 0→1 |
| type | string | – | Gradient type |
No output schema declared.
No examples provided.
set_image_fill ~108
Set a node's fill to a base64-encoded image. Use with image generation APIs (Replicate, fal.ai) to place rendered imagery directly on canvas.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | yes | Base64-encoded image data (PNG, JPEG, or WebP) |
| mimeType | string | – | – |
| nodeId | string | yes | Figma node ID |
| opacity | number | – | – |
| scaleMode | string | – | How the image is scaled within the node bounds |
No output schema declared.
No examples provided.
How do I install the Figma Vector MCP server?
Figma Vector MCP runs locally as an npm package, launched with npx -y figma-vector-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · figma-vector-mcp
claude mcp add workingmodel-figma-vector-mcp -- npx -y figma-vector-mcp
What is the Figma Vector MCP server?
Figma Vector MCP is listed in the public MCP registry as io.github.workingmodel/figma-vector-mcp. Let Claude create and edit fully editable vector nodes on the Figma canvas. This page covers its npm package (figma-vector-mcp).
Is the Figma Vector MCP server safe to use?
Figma Vector MCP scores 61 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 23 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Figma Vector MCP server expose?
Figma Vector MCP exposes 58 tools: join_channel, health_check, create_vector_from_svg, create_path, create_polyline, and 53 more. Their descriptions and schemas cost roughly 3,967 tokens of context every time the server is loaded.
Is the Figma Vector MCP server still maintained?
Figma Vector MCP is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Figma Vector MCP server under?
Figma Vector MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.