Figma MCP Server

io.github.planetabhiPublished by GitHub account planetabhiv3.1.3Updated Nov 3, 2026

A local MCP server with full Figma REST API coverage.

The publisher's own server: Figma MCP Server

Overview

AI-generated overview

Local MCP server that exposes the Figma REST API as tools, letting an assistant read files, nodes, components, comments and team data.

What you can do
  • Read Figma files, node trees, file metadata, version history and image fills
  • Browse teams, folders, published components, component sets and styles
  • Read comments and reactions, and delete your own comments and reactions
  • Inspect variables, library analytics, activity and developer logs, AI usage, embeds and payments
  • Create or delete webhooks, dev resources, and (Enterprise) teams and folders
When to use it
Useful when you want an assistant to inspect Figma designs, design tokens, libraries or team structure and report on them, or to manage comments, webhooks and dev resources from a chat client. Most read tools work on any plan; creation and analytics tools need higher Figma tiers.
Requirements
Runs locally over stdio and needs Bun 1.2 or newer, launched with bunx (Node is not supported). Requires a Figma personal access token supplied as the FIGMA_API_KEY environment variable, plus network access to the Figma API. Some tools need Enterprise or Organization plans and admin or plan access tokens.
Before you install
The Figma personal access token is a broad credential; keep it in the client's env block or a prompted input rather than in shared files. Several tools write or delete: deleting comments, reactions and webhooks is irreversible, and webhooks call an external endpoint you specify. Enterprise tools can create teams and folders and read organization logs and AI usage data.

Installation

In SourceWeft

  1. Open Figma MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Figma MCP Server

A local MCP server with full Figma REST API coverage. Works with Claude Desktop, Cursor, VS Code, the Gemini CLI, and any MCP client. Available on npm and the official MCP Registry.

[NPM Downloads]

How it works

Each Figma REST endpoint is exposed as one self-describing MCP tool, auto-discovered at startup from tools/figma/, so adding an endpoint is just adding a file. Required parameters are validated before each call. It runs over stdio.

Prerequisites

Requires Bun ≥ 1.2. It's Bun-native, so launch it with bunx, not npx (Node isn't supported).

Figma API key

Create a personal access token in Figma under Settings > Security > Personal access tokens > Generate new token. Provide it as FIGMA_API_KEY, ideally in your client config's env block (see below).

Configure your client

Every client uses the same server. Point command at bunx, or its absolute path (which bunx) if the client cannot find it on PATH.

json
{  "mcpServers": {    "figma": {      "command": "bunx",      "args": ["figma-mcp-server"],      "env": {        "FIGMA_API_KEY": "your_figma_api_key_here"      }    }  }}

Config file locations:

  • Claude Desktop: Settings > Developer > Edit Config (claude_desktop_config.json)
  • Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json per project
  • Gemini CLI: ~/.gemini/settings.json

Restart the client after editing its config.

VS Code

Use .vscode/mcp.json (workspace) or your user mcp.json, with a servers key. Instead of hardcoding the token, define an input so VS Code prompts for it securely:

json
{  "inputs": [    {      "type": "promptString",      "id": "figma-api-key",      "description": "Figma API Key",      "password": true    }  ],  "servers": {    "figma": {      "command": "bunx",      "args": ["figma-mcp-server"],      "env": {        "FIGMA_API_KEY": "${input:figma-api-key}"      }    }  }}
  • With ${input:figma-api-key}, VS Code prompts you for the key the first time the server starts, then stores it in your OS secret storage.
  • To re-enter or clear it: Command Palette → MCP: List Servers → pick the server → reset/edit its inputs.

Tool coverage

Full coverage of the Figma REST API (non-deprecated endpoints), 55 tools across:

  • Files and nodes (files, node trees, image rendering, image fills, metadata, version history, duplicate)
  • Variables / design tokens (read, published, bulk modify)
  • Components, component sets, and styles (file, published, and team scopes)
  • Comments and reactions
  • Teams (get, create, invite members)
  • Folders (top-level folders, subfolders, files, metadata, create)
  • Users
  • Dev resources
  • Webhooks (v2)
  • Library analytics (component, style, and variable actions and usages)
  • Organization: activity logs, developer logs, AI usage (Enterprise)
  • Embeds and payments

Check your MCP client's tool list for the full, always-current list of tool names and parameters.

Plan requirements

Most tools work with any plan's personal access token. These need higher tiers:

  • Variables (list_file_variables, get_published_variables, modify_variables): Enterprise organization.
  • Library analytics (get_library_*): Organization or Enterprise plan.
  • Activity logs, developer logs, AI usage: Enterprise organization with an admin or plan access token.
  • File duplication, team and folder creation, and team invites (duplicate_file, create_team, create_folder, invite_team_members): Enterprise plan via a private OAuth app.

MIT License · By @planetabhi ⋛⋋( ⊙◊⊙)⋌⋚

Source: README.md at commit 63b9a5b

Tools

55

create_dev_resources

Create development resources for a Figma file.

Parametersurlrequirednamerequirednode_idrequiredfile_keyrequired

create_folder

Create a top-level folder in a team. The team must belong to the Enterprise plan associated with the private OAuth app. Enterprise plans only.

Parametersnamerequiredteam_idrequiredsharing_audience_controlrequired

create_team

Create a team in the Enterprise plan associated with a private OAuth app. The authenticated user becomes the team owner. Enterprise plans only.

Parametersnamerequireddescriptionworkspace_idorg_discoverabilitysharing_audience_controlrequired

create_webhook

Create a webhook that calls the given endpoint when the event triggers. A PING event is sent on creation unless status is PAUSED.

Parametersstatuscontextrequiredendpointrequiredpasscoderequiredcontext_idrequiredevent_typerequireddescription

delete_comment

Delete a comment from a Figma file. Only the author of the comment can delete it.

Parametersfile_keyrequiredcomment_idrequired

delete_comment_reaction

Delete a reaction from a comment. Only the author of the reaction can delete it.

Parametersemojirequiredfile_keyrequiredcomment_idrequired

delete_dev_resource

Delete a dev resource from a file.

Parametersfile_keyrequireddev_resource_idrequired

delete_webhook

Delete a webhook by ID. This cannot be reversed.

Parameterswebhook_idrequired

duplicate_file

Duplicate a main file or branch into the specified folder as a new standalone file. The copy uses the source's latest saved checkpoint and may omit recent unsaved changes. Enterprise plans only.

Parametersfile_keyrequiredfolder_idrequired

get_activity_logs

Get activity log events for the organization. Requires an organization admin plan access token (Enterprise).

Parameterslimitordereventsend_timestart_time

get_ai_usage_daily

Get per-user, per-day AI credit usage for the plan. Requires a plan access token with org:ai_metering_usage_read (Enterprise).

Parameterslimitcursorend_daterequiredstart_daterequireduser_email

get_comment_reactions

Get a paginated list of reactions left on a comment.

Parameterscursorfile_keyrequiredcomment_idrequired

get_component_set

Retrieve metadata for a published component set by its key.

Parameterskeyrequired

get_current_user

Get the current user information from Figma.

Takes no parameters.

get_developer_logs

Get developer log entries for REST API and MCP server requests in the organization. Requires a plan access token with org:developer_log_read (Enterprise). Note: this is a POST request with a JSON filter body.

Parameterslimittokencursordate_rangeip_addresstoken_nametoken_typeuser_emailevent_source

get_figma_file

Retrieve the document tree and metadata of a Figma file as JSON.

Parametersidsdepthversionfile_keyrequiredgeometrybranch_dataplugin_data

get_file_meta

Get metadata for a Figma file (name, folder, last touched, creator, editor type, role, link access, version).

Parametersfile_keyrequired

get_file_nodes

Retrieve specific nodes (and their subtrees) from a Figma file as JSON.

Parametersidsrequireddepthversionfile_keyrequiredgeometryplugin_data

get_file_version_history

Retrieve the paginated version history of a Figma file.

Parametersafterbeforefile_keyrequiredpage_size

get_folder_files

Get the files directly within a specified folder.

Parametersfolder_idrequiredbranch_data

get_folder_meta

Get metadata for a folder (name, thumbnail, file count, created/updated timestamps) without enumerating its files.

Parametersfolder_idrequired

get_folder_subfolders

Get the direct subfolders within a specified folder.

Parametersfolder_idrequired

get_image_fills

Get download URLs for all image fills (user-supplied images) in a Figma file.

Parametersfile_keyrequired

get_library_component_actions

Get library analytics component action data (detachments, insertions) broken down by the requested dimension.

Parameterscursorend_datefile_keyrequiredgroup_byrequiredstart_date

get_library_component_usages

Get library analytics component usage data broken down by the requested dimension.

Parameterscursorfile_keyrequiredgroup_byrequired

get_library_style_actions

Get library analytics style action data (detachments, insertions) broken down by the requested dimension.

Parameterscursorend_datefile_keyrequiredgroup_byrequiredstart_date

get_library_style_usages

Get library analytics style usage data broken down by the requested dimension.

Parameterscursorfile_keyrequiredgroup_byrequired

get_library_variable_actions

Get library analytics variable action data (detachments, insertions) broken down by the requested dimension.

Parameterscursorend_datefile_keyrequiredgroup_byrequiredstart_date

get_library_variable_usages

Get library analytics variable usage data broken down by the requested dimension.

Parameterscursorfile_keyrequiredgroup_byrequired

get_oembed

Get oEmbed data for a Figma file or published Make site URL, following the oEmbed specification.

Parametersurlrequiredmaxwidthmaxheight

get_payments

Get a user's payment information for a plugin, widget, or Community file you own. Use either plugin_payment_token, or user_id plus exactly one of community_file_id/plugin_id/widget_id.

Parametersuser_idplugin_idwidget_idcommunity_file_idplugin_payment_token

get_published_component_by_key

Retrieve metadata for a published component by its key.

Parameterskeyrequired

get_published_style

Retrieve metadata for a published style by its key.

Parameterskeyrequired

get_published_variables

Get the variables and variable collections published from a file. Requires an Enterprise organization / plan access token.

Parametersfile_keyrequired

get_team

Get metadata for a team the caller can access. Available to private OAuth apps on Professional, Organization, and Enterprise plans, and to plan access tokens on Organization and Enterprise plans.

Parametersteam_idrequired

get_team_component_sets

Get a paginated list of published component sets within a team library.

Parametersafterbeforeteam_idrequiredpage_size

get_team_components

Get a paginated list of published components within a team library.

Parametersafterbeforeteam_idrequiredpage_size

get_team_folders

Get the top-level folders (previously called projects) within a specified team.

Parametersteam_idrequired

get_team_styles

Get a paginated list of published styles within a team library.

Parametersafterbeforeteam_idrequiredpage_size

get_webhook

Get a webhook by its ID.

Parameterswebhook_idrequired

get_webhook_requests

Get webhook requests sent within the last week for a given webhook. Useful for debugging.

Parameterswebhook_idrequired

get_webhooks

Get webhooks by context or plan. Provide either context + context_id, or plan_api_id (paginated).

Parameterscursorcontextcontext_idplan_api_id

invite_team_members

Invite users to a team with the requested role. Each email is processed independently; per-address failures are returned in `errors` with HTTP 200, so always check `errors`. Existing members keep their current role when it is higher. Enterprise plans only.

Parametersrolerequiredemailsrequiredteam_idrequired

list_comments

List comments on a Figma file.

Parametersfile_keyrequired

list_component_sets

List all component sets published in a specific Figma file.

Parametersfile_keyrequired

list_components

List components in a specific Figma file.

Parametersfile_keyrequired

list_dev_resources

List development resources for a specific Figma file.

Parametersfile_keyrequired

list_file_variables

List variables for a specific Figma file.

Parametersfile_keyrequired

list_styles_in_file

List styles in a specific Figma file.

Parametersfile_keyrequired

modify_variables

Bulk create, update, and delete variables, variable collections, modes, and mode values in a file. Provide at least one of the arrays; each item needs an "action" of CREATE, UPDATE, or DELETE. Requires an Enterprise organization with Editor seats.

Parametersfile_keyrequiredvariablesvariableModesvariableModeValuesvariableCollections

post_comment

Post a comment to a Figma file.

Parametersmessagerequiredfile_keyrequiredclient_meta

post_comment_reaction

Add a reaction to a comment on a Figma file.

Parametersemojirequiredfile_keyrequiredcomment_idrequired

render_images

Render one or more nodes of a Figma file as images (PNG/JPG/SVG/PDF) and return a map of node IDs to download URLs. URLs expire after 30 days.

Parametersidsrequiredscaleformatversionfile_keyrequiredcontents_onlysvg_include_idsvg_outline_textsvg_include_node_idsvg_simplify_strokeuse_absolute_bounds

update_dev_resources

Bulk update dev resources across files. Each item must include its id; name and url are optional.

Parametersdev_resourcesrequired

update_webhook

Update an existing webhook by ID.

Parametersstatusendpointrequiredpasscoderequiredevent_typerequiredwebhook_idrequireddescription

Version history

2
  1. v3.1.3LatestNov 1, 2026
  2. v3.1.1Sep 16, 2026

Score

80% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Figma integrations