figma-mcp-serverBLOCK
A local Figma MCP server with full Figma REST API coverage
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
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.
[](https://mcptrustchecker.com/registry/figma-mcp-server) [](https://m8ven.ai/mcp/planetabhi-figma-mcp-server-1bgg94) [](https://www.skillsdirectory.com/skills/planetabhi-figma-agent)
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.
{
"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
bcc2936286faOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add figma-mcp-server --env FIGMA_API_KEY=${FIGMA_API_KEY} -- npx -y [email protected]Exposed tools (50)
38 read · 7 write · 5 destructive. Blast radius: 5 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
create_dev_resources | write | Create development resources for a Figma file. |
create_webhook | write | Create a webhook that calls the given endpoint when the event triggers. A PING event is sent on creation unless status is PAUSED. |
delete_comment | destructive | Delete a comment from a Figma file. Only the author of the comment can delete it. |
delete_comment_reaction | destructive | Delete a reaction from a comment. Only the author of the reaction can delete it. |
delete_dev_resource | destructive | Delete a dev resource from a file. |
delete_webhook | destructive | Delete a webhook by ID. This cannot be reversed. |
get_activity_logs | read | Get activity log events for the organization. Requires an organization admin plan access token (Enterprise). |
get_ai_usage_daily | read | Get per-user, per-day AI credit usage for the plan. Requires a plan access token with org:ai_metering_usage_read (Enterprise). |
get_comment_reactions | read | Get a paginated list of reactions left on a comment. |
get_component_set | write | Retrieve metadata for a published component set by its key. |
get_current_user | read | Get the current user information from Figma. |
get_developer_logs | read | 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. |
get_figma_file | read | Retrieve the document tree and metadata of a Figma file as JSON. |
get_file_meta | read | Get metadata for a Figma file (name, folder, last touched, creator, editor type, role, link access, version). |
get_file_nodes | read | Retrieve specific nodes (and their subtrees) from a Figma file as JSON. |
get_file_version_history | read | Retrieve the paginated version history of a Figma file. |
get_folder_files | read | Get the files directly within a specified folder. |
get_folder_meta | read | Get metadata for a folder (name, thumbnail, file count, created/updated timestamps) without enumerating its files. |
get_folder_subfolders | read | Get the direct subfolders within a specified folder. |
get_image_fills | read | Get download URLs for all image fills (user-supplied images) in a Figma file. |
get_library_component_actions | read | Get library analytics component action data (detachments, insertions) broken down by the requested dimension. |
get_library_component_usages | read | Get library analytics component usage data broken down by the requested dimension. |
get_library_style_actions | read | Get library analytics style action data (detachments, insertions) broken down by the requested dimension. |
get_library_style_usages | read | Get library analytics style usage data broken down by the requested dimension. |
get_library_variable_actions | read | Get library analytics variable action data (detachments, insertions) broken down by the requested dimension. |
get_library_variable_usages | read | Get library analytics variable usage data broken down by the requested dimension. |
get_oembed | read | Get oEmbed data for a Figma file or published Make site URL, following the oEmbed specification. |
get_payments | read | Get a user\ |
get_published_component_by_key | read | Retrieve metadata for a published component by its key. |
get_published_style | read | Retrieve metadata for a published style by its key. |
get_published_variables | read | Get the variables and variable collections published from a file. Requires an Enterprise organization / plan access token. |
get_team_component_sets | read | Get a paginated list of published component sets within a team library. |
get_team_components | read | Get a paginated list of published components within a team library. |
get_team_folders | read | Get the top-level folders (previously called projects) within a specified team. |
get_team_styles | read | Get a paginated list of published styles within a team library. |
get_webhook | read | Get a webhook by its ID. |
get_webhook_requests | read | Get webhook requests sent within the last week for a given webhook. Useful for debugging. |
get_webhooks | read | Get webhooks by context or plan. Provide either context + context_id, or plan_api_id (paginated). |
list_comments | read | List comments on a Figma file. |
list_component_sets | read | List all component sets published in a specific Figma file. |
list_components | read | List components in a specific Figma file. |
list_dev_resources | read | List development resources for a specific Figma file. |
list_file_variables | read | List variables for a specific Figma file. |
list_styles_in_file | read | List styles in a specific Figma file. |
modify_variables | destructive | 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 |
post_comment | write | Post a comment to a Figma file. |
post_comment_reaction | write | Add a reaction to a comment on a Figma file. |
render_images | read | 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. |
update_dev_resources | write | Bulk update dev resources across files. Each item must include its id; name and url are optional. |
update_webhook | write | Update an existing webhook by ID. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (1 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (9)
Never print, log, echo, or send the `FIGMA_API_KEY`. The token lives in the MCP client config and is used only by the local server when it calls the Figma API. This skill does not read or move the tok
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 filt
delete_comment, delete_comment_reaction, delete_dev_resource, delete_webhook, modify_variables
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";import { ApiTool, figmaRequest } from "../../../lib/tools.ts";import { ApiTool, figmaRequest } from "../../../lib/tools.ts";import { ApiTool, figmaRequest } from "../../../lib/tools.ts";import { ApiTool, figmaRequest } from "../../../lib/tools.ts";@modelcontextprotocol/sdk, @types/bun, @types/node, typescript, yaml
Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.
bcc2936286fafull audit observations/trust-audit/mcp-server/planetabhi__figma-mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | bcc2936286fa | BLOCK | D | 69 | first audit |
Questions
What is the figma-mcp-server MCP server?
A local Figma MCP server with full Figma REST API coverage
What tools does figma-mcp-server expose?
50 in total: 38 read-only, 7 that write, and 5 that can delete or overwrite (delete_comment, delete_comment_reaction, delete_dev_resource, delete_webhook, modify_variables). Every one is listed on this page with its risk.
Is figma-mcp-server safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 5 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does figma-mcp-server need?
It reads FIGMA_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does figma-mcp-server run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as figma-mcp-server at 3.1.1.
How current is this page?
The grade is for one exact copy of the source (bcc2936286fa), read on 2026-10-12. The repository is watched and re-audited when it changes.