figma-mcp-server
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 8 GitHub stars
Code Warn
- process.env — Environment variable access in lib/tools.ts
- network request — Outbound network request in lib/tools.ts
- process.env — Environment variable access in mcpServer.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
A comprehensive local MCP server for Figma
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.
How it works
The server exposes the Figma REST API as MCP tools. Each endpoint is one tool. Tools are auto-discovered at startup from tools/figma/, so adding an endpoint is just adding a file. Every tool is self-describing with a JSON Schema, and required parameters are validated before each call. It runs over stdio by default (how desktop clients spawn it) or over SSE with the --sse flag. It ships with a single runtime dependency, the MCP SDK, and requires Bun.
Prerequisites
- Bun (>= 1.2). Node is not supported.
Install
Bun-native (raw TypeScript, uses Bun.Glob), so run it with bunx, not npx.
bunx figma-mcp-server
Or install it globally:
bun add -g figma-mcp-server
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.jsonper project - Gemini CLI:
~/.gemini/settings.json - VS Code:
.vscode/mcp.json, using theserverskey with"type": "stdio"
Restart the client after editing its config.
Tool coverage
Full coverage of the Figma REST API (non-deprecated endpoints). 49 tools.
Files and nodes
get_figma_file,get_file_nodes,render_images,get_image_fills,get_file_meta,get_file_version_history
Variables (design tokens)
list_file_variables,get_published_variables,modify_variables
Components, component sets, styles
list_components,get_published_component_by_key,get_team_componentslist_component_sets,get_component_set,get_team_component_setslist_styles_in_file,get_published_style,get_team_styles
Comments and reactions
list_comments,post_comment,delete_commentget_comment_reactions,post_comment_reaction,delete_comment_reaction
Projects and users
list_projects_in_team,list_files_in_project,get_project_meta,get_current_user
Dev resources
list_dev_resources,create_dev_resources,update_dev_resources,delete_dev_resource
Webhooks
get_webhooks,create_webhook,get_webhook,update_webhook,delete_webhook,get_webhook_requests
Library analytics
get_library_component_actions,get_library_component_usagesget_library_style_actions,get_library_style_usagesget_library_variable_actions,get_library_variable_usages
Organization (Enterprise)
get_activity_logs,get_developer_logs,get_ai_usage_daily
Embeds and payments
get_oembed,get_payments
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.
SSE transport
The server runs over stdio by default. To serve over SSE instead:
bunx figma-mcp-server --sse
Default port is 3001; override with PORT.
Troubleshooting
- Invalid or missing
FIGMA_API_KEY: set it in your client config'senvblock. bunxnot found: use its absolute path fromwhich bunx.- SSE port in use: run with
PORT=<port>.
MIT License · By @planetabhi ⋛⋋( ⊙◊⊙)⋌⋚
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found