{"name":"io.github.workingmodel/figma-vector-mcp","slug":"workingmodel-figma-vector-mcp","title":"Figma Vector MCP","description":"Let Claude create and edit fully editable vector nodes on the Figma canvas.","url":"https://mcp.market/server/workingmodel-figma-vector-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"ai","tags":["ai","media"],"presence":{"score":29,"stars":0,"forks":0,"downloads_week":166,"last_push_at":"2026-10-22T22:31:44.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/workingmodel/wm-figma-vector-mcp","website":"https://www.workingmodel.co/","version":"0.3.3","remotes":[],"packages":[{"registryType":"npm","identifier":"figma-vector-mcp","version":"0.3.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Channel name the Figma plugin joins on the local socket relay (default: figma-vector-mcp)","name":"FVMCP_CHANNEL"},{"description":"Port of the local socket relay (default: 3055)","name":"FVMCP_PORT"}]}],"tools":[{"name":"apply_style","description":"Apply a named document style (paint or text) to a node by style ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch_set_properties","description":"Update fill color, stroke color, opacity, position, and/or size on multiple nodes in a single round-trip.","write_action":true,"price_micros":0,"input_schema":null},{"name":"boolean_operation","description":"Perform a boolean operation (union, subtract, intersect, exclude) on 2 or more vector nodes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clone_node","description":"Duplicate a Figma node, optionally repositioning the clone.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_batch","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_component","description":"Convert an existing frame or group into a reusable Figma component.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_ellipse","description":"Create an ellipse (or circle) on the Figma canvas.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_frame","description":"Create a Figma frame (container) on the canvas.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_instance","description":"Place an instance of a local component on the canvas by component ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_mask","description":"Apply a clip mask \\u2014 maskNode defines the shape, targetNode is clipped to it. Both nodes are grouped.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_page","description":"Create a new page in the Figma document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_path","description":"Create an editable vector from a single SVG path `d` attribute string. Shorthand for simple paths without a full SVG wrapper.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_polyline","description":"Create an editable vector from an array of [x, y] point pairs. Use closed=true to produce a filled polygon.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_rectangle","description":"Create a rectangle on the Figma canvas.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_text","description":"Create a text node on the Figma canvas. Use width to fix the column width and enable text wrapping.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_vector_from_svg","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_node","description":"Delete a node from the Figma canvas.","write_action":true,"price_micros":0,"input_schema":null},{"name":"duplicate_frame_to_page","description":"Copy a node to a target page at an optional position.","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_node_as_png","description":"Export a Figma node as a base64-encoded PNG at the specified pixel scale.","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_node_as_svg","description":"Export a Figma node as an SVG string. Useful for round-tripping: create a vector, modify it in Figma, export back.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_nodes","description":"Search for nodes by name (case-insensitive contains) and/or type. Scoped to a page (defaults to current page). Recursive by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_available_fonts","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_components","description":"List all local components in the Figma document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_document_info","description":"Get information about the current Figma document: name, current page, all pages, and top-level nodes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_library_components","description":"List components available for use. Returns local document components. Filter by name with optional query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_node_info","description":"Get detailed information about a specific node by ID: type, position, size, opacity, children.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_page_list","description":"List all pages in the current Figma document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_selection","description":"Get the currently selected nodes in Figma, including position and size.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_styles","description":"Get all local paint styles and text styles defined in the Figma document. Use these IDs with apply_style to keep output on-brand.","write_action":false,"price_micros":0,"input_schema":null},{"name":"group_nodes","description":"Group multiple Figma nodes into a group layer.","write_action":false,"price_micros":0,"input_schema":null},{"name":"health_check","description":"Ping the Figma plugin and confirm connectivity. Returns plugin version and current page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"join_channel","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_colors","description":"List all color aliases registered in this document's palette.","write_action":false,"price_micros":0,"input_schema":null},{"name":"move_node","description":"Move a Figma node to a new position on the canvas.","write_action":false,"price_micros":0,"input_schema":null},{"name":"register_color","description":"Save a named color alias to the document palette. All RGB values are 0\\u20131. Use resolve_color or list_colors to retrieve.","write_action":false,"price_micros":0,"input_schema":null},{"name":"register_node","description":"Save a named alias for a node ID, persisted in the Figma document. Use resolve_node to retrieve it later.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rename_node","description":"Rename a Figma node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reorder_node","description":"Change a node's Z-order within its parent. Use action for relative moves or index for an absolute position (0 = bottom of stack).","write_action":false,"price_micros":0,"input_schema":null},{"name":"resize_node","description":"Resize a Figma node to the given width and height.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_color","description":"Look up a color by its registered alias. Returns r, g, b, a values (0\\u20131).","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_node","description":"Look up a node ID by its registered alias. Returns the node ID previously saved with register_node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"screenshot_current_page","description":"Export the current Figma page as a base64-encoded PNG. Useful for visual verification of the canvas state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_auto_layout","description":"Enable auto-layout on a frame and configure direction, spacing, padding, and alignment. Set direction to NONE to disable auto-layout.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_blend_mode","description":"Set the blend mode of a node layer.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_corner_radius","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_effect","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_fill_color","description":"Set the fill color of a Figma node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_focus","description":"Scroll the Figma viewport to focus on a node and select it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_gradient_fill","description":"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 \\u2192 1).","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_image_fill","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_layout_grid","description":"Apply column, row, or uniform grid guides to a frame.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_opacity","description":"Set the opacity of a Figma node (0 = invisible, 1 = fully opaque).","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_stroke","description":"Set comprehensive stroke properties on a node: color, weight, position, dash pattern, line cap, and line join.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_stroke_color","description":"Set the stroke color (and optional weight) of a Figma node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_text_style","description":"Modify typographic properties of an existing text node without replacing its content. Also use to set or update text box width and wrapping.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_visibility","description":"Show or hide a Figma node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"switch_page","description":"Switch to a different page in the Figma document by ID or name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ungroup_nodes","description":"Ungroup a group node, returning its children to the parent.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-25T05:00:24.869Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T05:00:24.810Z","components":{"code":{"score":25,"max":25,"notes":["6 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"figma-vector-mcp","version":"0.3.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-10-22T22:50:24.732Z","repositoryUrl":"git+https://github.com/workingmodel/wm-figma-vector-mcp.git","weeklyDownloads":166}],"repo":{"found":true,"owner":"workingmodel","repo":"wm-figma-vector-mcp","archived":false,"pushedAt":"2026-10-22T22:31:44Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/216078274?v=4","ownerCreatedAt":"2025-06-12T20:04:55Z","license":"MIT"},"icon":{"url":"https://www.workingmodel.co/favicon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":166,"license":"MIT","lastPushAt":"2026-10-22T22:31:44.000Z","score":29}}}},"grade_history":[],"reviews":[]}