Atlas / MCP servers / planetabhi / figma-mcp-server

figma-mcp-serverBLOCK

mcp/planetabhi/figma-mcp-server

A local Figma MCP server with full Figma REST API coverage

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
50 38r · 7w · 5d
Transport
stdio
License
NOASSERTION
Stars
10
01

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
Read from source at commit bcc2936286faOBSERVED · 2026-10-12
Advertisement
02

Connect

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-code (npm)
claude mcp add figma-mcp-server --env FIGMA_API_KEY=${FIGMA_API_KEY} -- npx -y [email protected]
03

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.

ToolRiskDescription
create_dev_resourceswriteCreate development resources for a Figma file.
create_webhookwriteCreate a webhook that calls the given endpoint when the event triggers. A PING event is sent on creation unless status is PAUSED.
delete_commentdestructiveDelete a comment from a Figma file. Only the author of the comment can delete it.
delete_comment_reactiondestructiveDelete a reaction from a comment. Only the author of the reaction can delete it.
delete_dev_resourcedestructiveDelete a dev resource from a file.
delete_webhookdestructiveDelete a webhook by ID. This cannot be reversed.
get_activity_logsreadGet activity log events for the organization. Requires an organization admin plan access token (Enterprise).
get_ai_usage_dailyreadGet per-user, per-day AI credit usage for the plan. Requires a plan access token with org:ai_metering_usage_read (Enterprise).
get_comment_reactionsreadGet a paginated list of reactions left on a comment.
get_component_setwriteRetrieve metadata for a published component set by its key.
get_current_userreadGet the current user information from Figma.
get_developer_logsreadGet 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_filereadRetrieve the document tree and metadata of a Figma file as JSON.
get_file_metareadGet metadata for a Figma file (name, folder, last touched, creator, editor type, role, link access, version).
get_file_nodesreadRetrieve specific nodes (and their subtrees) from a Figma file as JSON.
get_file_version_historyreadRetrieve the paginated version history of a Figma file.
get_folder_filesreadGet the files directly within a specified folder.
get_folder_metareadGet metadata for a folder (name, thumbnail, file count, created/updated timestamps) without enumerating its files.
get_folder_subfoldersreadGet the direct subfolders within a specified folder.
get_image_fillsreadGet download URLs for all image fills (user-supplied images) in a Figma file.
get_library_component_actionsreadGet library analytics component action data (detachments, insertions) broken down by the requested dimension.
get_library_component_usagesreadGet library analytics component usage data broken down by the requested dimension.
get_library_style_actionsreadGet library analytics style action data (detachments, insertions) broken down by the requested dimension.
get_library_style_usagesreadGet library analytics style usage data broken down by the requested dimension.
get_library_variable_actionsreadGet library analytics variable action data (detachments, insertions) broken down by the requested dimension.
get_library_variable_usagesreadGet library analytics variable usage data broken down by the requested dimension.
get_oembedreadGet oEmbed data for a Figma file or published Make site URL, following the oEmbed specification.
get_paymentsreadGet a user\
get_published_component_by_keyreadRetrieve metadata for a published component by its key.
get_published_stylereadRetrieve metadata for a published style by its key.
get_published_variablesreadGet the variables and variable collections published from a file. Requires an Enterprise organization / plan access token.
get_team_component_setsreadGet a paginated list of published component sets within a team library.
get_team_componentsreadGet a paginated list of published components within a team library.
get_team_foldersreadGet the top-level folders (previously called projects) within a specified team.
get_team_stylesreadGet a paginated list of published styles within a team library.
get_webhookreadGet a webhook by its ID.
get_webhook_requestsreadGet webhook requests sent within the last week for a given webhook. Useful for debugging.
get_webhooksreadGet webhooks by context or plan. Provide either context + context_id, or plan_api_id (paginated).
list_commentsreadList comments on a Figma file.
list_component_setsreadList all component sets published in a specific Figma file.
list_componentsreadList components in a specific Figma file.
list_dev_resourcesreadList development resources for a specific Figma file.
list_file_variablesreadList variables for a specific Figma file.
list_styles_in_filereadList styles in a specific Figma file.
modify_variablesdestructiveBulk 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_commentwritePost a comment to a Figma file.
post_comment_reactionwriteAdd a reaction to a comment on a Figma file.
render_imagesreadRender 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_resourceswriteBulk update dev resources across files. Each item must include its id; name and url are optional.
update_webhookwriteUpdate an existing webhook by ID.
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (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)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
.agents/skills/figma-agent/SKILL.md:39
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
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
<tool:get_developer_logs>:1
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
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_comment, delete_comment_reaction, delete_dev_resource, delete_webhook, modify_variables
Why it matters. 5 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tools/figma/figma-api/create-a-webhook.ts:1
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tools/figma/figma-api/create-dev-resources-for-a-file.ts:1
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tools/figma/figma-api/delete-a-comment-reaction.ts:1
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tools/figma/figma-api/delete-a-comment.ts:1
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tools/figma/figma-api/delete-a-dev-resource.ts:1
import { ApiTool, figmaRequest } from "../../../lib/tools.ts";
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @types/bun, @types/node, typescript, yaml
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-12 · audit v0.4.1 · source sha bcc2936286fafull audit observations/trust-audit/mcp-server/planetabhi__figma-mcp-server.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12bcc2936286faBLOCKD69first audit
06

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.

Advertisement