CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Figma MCP Server

oabolade/figma_mcp_server_actor
131 toolsauthSTDIOregistry active
Summary

Brings Figma's REST API into your AI workflow so you can analyze design files, list components, export assets, and manage comments through natural language. Runs as a long-running web server on Apify or locally, exposing an MCP JSON-RPC endpoint at /mcp. Supports both personal access tokens and OAuth 2.0 for team access. Ships with MCP resources for browsing files and prompts for common design workflows. Reach for this when you want Claude or Cursor to pull design structure, export nodes as PNG/SVG, or automate documentation tasks without opening Figma's UI. The OAuth flow requires a real browser for token exchange, and container URLs change per Apify run.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

31 tools
figma_get_meGet the current user

Get the current user

No parameter schema in public metadata yet.

figma_get_fileGet a Figma file by key7 params

Get a Figma file by key

Parameters* required
idsstring
Comma separated list of nodes that you care about in the document
depthnumber
Positive integer representing how deep into the document tree to traverse
fileKeystring
The file key to use for the operation
versionstring
A specific version ID to get
geometrystring
Set to "paths" to export vector data
branch_databoolean
Returns branch metadata for the requested file
plugin_datastring
A comma separated list of plugin IDs and/or the string "shared"
figma_get_file_nodesGet specific nodes from a Figma file6 params

Get specific nodes from a Figma file

Parameters* required
idsstring
A comma separated list of node IDs to retrieve and convert
depthnumber
Positive integer representing how deep into the node tree to traverse
fileKeystring
The file key to use for the operation
versionstring
A specific version ID to get
geometrystring
Set to "paths" to export vector data
plugin_datastring
A comma separated list of plugin IDs and/or the string "shared"
figma_get_imagesRender images from a Figma file11 params

Render images from a Figma file

Parameters* required
idsstring
A comma separated list of node IDs to render
scalenumber
A number between 0.01 and 4, the image scaling factor
formatstring
A string enum for the image output formatone of jpg · png · svg · pdf
fileKeystring
The file key to use for the operation
versionstring
A specific version ID to get
contents_onlyboolean
Whether content that overlaps the node should be excluded from rendering
svg_include_idboolean
Whether to include id attributes for all SVG elements
svg_outline_textboolean
Whether text elements are rendered as outlines (vector paths) or as <text> elements in SVGs
svg_include_node_idboolean
Whether to include node id attributes for all SVG elements
svg_simplify_strokeboolean
Whether to simplify inside/outside strokes and use stroke attribute if possible
use_absolute_boundsboolean
Use the full dimensions of the node regardless of whether or not it is cropped
figma_get_image_fillsGet image fills in a Figma file1 params

Get image fills in a Figma file

Parameters* required
fileKeystring
The file key to use for the operation
figma_get_file_versionsGet version history of a Figma file4 params

Get version history of a Figma file

Parameters* required
afternumber
A version ID for one of the versions in the history. Gets versions after this ID
beforenumber
A version ID for one of the versions in the history. Gets versions before this ID
fileKeystring
The file key to use for the operation
page_sizenumber
The number of items returned in a page of the response
figma_get_commentsGet comments in a Figma file2 params

Get comments in a Figma file

Parameters* required
as_mdboolean
Whether to return the comments as markdowndefault: false
fileKeystring
The file key to use for the operation
figma_post_commentAdd a comment to a Figma file4 params

Add a comment to a Figma file

Parameters* required
fileKeystring
The file key to use for the operation
messagestring
The text contents of the comment to post
comment_idstring
The ID of the comment to reply to, if any
client_metavalue
The position where to place the comment
figma_delete_commentDelete a comment from a Figma file2 params

Delete a comment from a Figma file

Parameters* required
fileKeystring
The file key to use for the operation
commentIdstring
The ID of the comment to delete
figma_get_comment_reactionsGet reactions for a comment3 params

Get reactions for a comment

Parameters* required
cursorstring
Cursor for pagination
fileKeystring
The file key to use for the operation
commentIdstring
The ID of the comment to get reactions for
figma_post_comment_reactionAdd a reaction to a comment3 params

Add a reaction to a comment

Parameters* required
emojistring
The emoji to react with
fileKeystring
The file key to use for the operation
commentIdstring
The ID of the comment to add a reaction to
figma_delete_comment_reactionDelete a reaction from a comment3 params

Delete a reaction from a comment

Parameters* required
emojistring
The emoji to remove
fileKeystring
The file key to use for the operation
commentIdstring
The ID of the comment to delete a reaction from
figma_get_team_projectsGet projects in a team1 params

Get projects in a team

Parameters* required
teamIdstring
The ID of the team to get projects for
figma_get_project_filesGet files in a project2 params

Get files in a project

Parameters* required
projectIdstring
The ID of the project to get files for
branch_databoolean
Returns branch metadata in the response
figma_get_team_componentsGet components in a team4 params

Get components in a team

Parameters* required
afternumber
Cursor indicating which id after which to start retrieving components for
beforenumber
Cursor indicating which id before which to start retrieving components for
teamIdstring
The ID of the team to get components for
page_sizenumber
Number of items to return in a paged list of results
figma_get_file_componentsGet components in a file1 params

Get components in a file

Parameters* required
fileKeystring
The file key to use for the operation
figma_get_componentGet a component by key1 params

Get a component by key

Parameters* required
keystring
The key of the component to get
figma_get_team_component_setsGet component sets in a team4 params

Get component sets in a team

Parameters* required
afternumber
Cursor indicating which id after which to start retrieving component sets for
beforenumber
Cursor indicating which id before which to start retrieving component sets for
teamIdstring
The ID of the team to get component sets for
page_sizenumber
Number of items to return in a paged list of results
figma_get_file_component_setsGet component sets in a file1 params

Get component sets in a file

Parameters* required
fileKeystring
The file key to use for the operation
figma_get_component_setGet a component set by key1 params

Get a component set by key

Parameters* required
keystring
The key of the component set to get
figma_get_team_stylesGet styles in a team4 params

Get styles in a team

Parameters* required
afternumber
Cursor indicating which id after which to start retrieving styles for
beforenumber
Cursor indicating which id before which to start retrieving styles for
teamIdstring
The ID of the team to get styles for
page_sizenumber
Number of items to return in a paged list of results
figma_get_file_stylesGet styles in a file1 params

Get styles in a file

Parameters* required
fileKeystring
The file key to use for the operation
figma_get_styleGet a style by key1 params

Get a style by key

Parameters* required
keystring
The key of the style to get
figma_post_webhookCreate a webhook6 params

Create a webhook

Parameters* required
statusstring
State of the webhook, including any error state it may be in
team_idstring
Team id to receive updates about
endpointstring
The HTTP endpoint that will receive a POST request when the event triggers
passcodestring
String that will be passed back to your webhook endpoint to verify that it is being called by Figma
event_typestring
An enum representing the possible events that a webhook can subscribe to
descriptionstring
User provided description or name for the webhook
figma_get_webhookGet a webhook by ID1 params

Get a webhook by ID

Parameters* required
webhook_idstring
The ID of the webhook to get
figma_update_webhookUpdate a webhook5 params

Update a webhook

Parameters* required
statusstring
State of the webhook, including any error state it may be in
endpointstring
The HTTP endpoint that will receive a POST request when the event triggers
passcodestring
String that will be passed back to your webhook endpoint to verify that it is being called by Figma
webhook_idstring
The ID of the webhook to update
descriptionstring
User provided description or name for the webhook
figma_delete_webhookDelete a webhook1 params

Delete a webhook

Parameters* required
webhook_idstring
The ID of the webhook to delete
figma_get_team_webhooksGet webhooks for a team1 params

Get webhooks for a team

Parameters* required
team_idstring
The ID of the team to get webhooks for
figma_get_library_analytics_component_usagesGet library analytics component usage data3 params

Get library analytics component usage data

Parameters* required
cursorstring
Cursor indicating what page of data to fetch
fileKeystring
The file key to use for the operation
group_bystring
A dimension to group returned analytics data byone of component · file
figma_get_library_analytics_style_usagesGet library analytics style usage data3 params

Get library analytics style usage data

Parameters* required
cursorstring
Cursor indicating what page of data to fetch
fileKeystring
The file key to use for the operation
group_bystring
A dimension to group returned analytics data byone of style · file
figma_get_library_analytics_variable_usagesGet library analytics variable usage data3 params

Get library analytics variable usage data

Parameters* required
cursorstring
Cursor indicating what page of data to fetch
fileKeystring
The file key to use for the operation
group_bystring
A dimension to group returned analytics data byone of variable · file

Figma MCP Server (Apify Actor)

Model Context Protocol (MCP) server that exposes Figma REST API capabilities to AI assistants (Cursor, Claude, custom agents). Runs as a long-running web server on the Apify platform (standby / container URL) or locally via apify run.

Features

  • File analysis — structure, metadata, styles, depth-limited trees
  • Components — list, details, usage
  • Assets — export nodes (PNG, SVG, PDF, JPG)
  • Comments — read and create
  • Projects / teams — listings and metadata
  • MCP resources & prompts for guided workflows

Authentication

Personal Access Token (default)

Recommended for solo use. Set figmaAccessToken in Actor input (or FIGMA_ACCESS_TOKEN in env).

  • Generate: Figma → Settings → Security → Personal access tokens
  • API header: X-Figma-Token
  • When PAT is set, OAuth is disabled for API calls (and /oauth/* routes return an error).

OAuth 2.0 (optional — team / shared files)

Use when you omit figmaAccessToken and provide a Figma OAuth app:

InputPurpose
oauthClientIdFrom Figma → Developers → Apps
oauthClientSecretSame app
oauthRedirectUriExact redirect URL registered on the app, e.g. https://<your-run>.runs.apify.net/oauth/callback
oauthScopesOptional; comma-separated scopes. Must be a subset of the app’s configured scopes. Defaults include file_content:read, file_content:write, file_comments:read, file_comments:write.

Flow

  1. Start the Actor with OAuth fields filled and no PAT.
  2. Open GET https://<container-url>/oauth/authorize in a browser (normal browser — not an embedded WebView; Figma requirement).
  3. After consent, Figma redirects to /oauth/callback; tokens are stored in the run’s default key-value store (FIGMA_OAUTH_SESSION) and refreshed when near expiry.

Token exchange uses Figma’s documented endpoints (https://api.figma.com/v1/oauth/token and .../oauth/refresh). Codes expire quickly — complete the redirect promptly.

Requirements

  • Node.js ≥ 20
  • Apify account (for cloud)
  • Figma PAT and/or OAuth app

Quick start (Apify Cloud)

npm install
apify login
apify push

In Apify Console, open the Actor, set input (at minimum figmaAccessToken), start with web server / long-running as required by your template, then use the Container URL from the run.

Deploy reference: apify push builds and publishes; see Apify CLI.

Configuration (input)

ParameterTypeDefaultDescription
figmaAccessTokenstring—PAT (recommended). If set, used for all Figma API calls.
portinteger8080HTTP listen port (Apify may override via web_server_port).
oauthClientIdstring—OAuth app client ID (only if not using PAT).
oauthClientSecretstring—OAuth app secret (secret input).
oauthRedirectUristring—Must match Figma app redirect URI exactly.
oauthScopesstring—Optional scope override (comma-separated).
maxConcurrentRequestsinteger10Reserved / future use.
enableCachingbooleantrueCache GET responses from Figma.

Local / CLI input file example (apify run):

{
  "figmaAccessToken": "figd_...",
  "port": 8080
}

HTTP API

MethodPathDescription
GET/Service info and endpoint list
GET/healthLiveness; includes auth_mode: pat | oauth | pending_oauth, figma_authenticated
POST/mcpMCP JSON-RPC 2.0 (primary transport for this server)
GET/oauth/authorizeStart OAuth (browser); disabled if PAT is set
GET/oauth/callbackOAuth redirect handler

Apify MCP path: .actor/actor.json sets webServerMcpPath to /mcp. Your MCP client URL is typically:

https://<container-id>.runs.apify.net/mcp

(Use the Container URL from the run page + /mcp.)

Cursor IDE

  1. Deploy and start the Actor; copy the run Container URL (while status is RUNNING).
  2. Edit ~/.cursor/mcp.json (paths differ on Windows/Linux — see Cursor docs).

Example (remote HTTP MCP — adjust to your Cursor version’s expected shape):

{
  "mcpServers": {
    "figma-mcp-standby": {
      "url": "https://YOUR_RUN_ID.runs.apify.net/mcp"
    }
  }
}

Notes

  • env.APIFY_TOKEN in mcp.json is not passed to this Node process; it does not replace Figma auth. Use figmaAccessToken (or OAuth) in Actor input.
  • Container URLs are per run and stop working when the run ends; update mcp.json and restart Cursor after a new run.
  • If connection fails, use Cursor → Output → MCP and curl https://.../health.

Claude Desktop / other clients

Use your client’s supported way to attach a remote MCP URL (e.g. mcp-remote pointing at https://.../mcp). Paths and query params depend on the client version.

Local development

npm install
apify run

Or run the entry with Node if you inject env / input yourself:

export FIGMA_ACCESS_TOKEN="figd_..."
node src/main.js

Check health (port from logs or input):

curl -s http://localhost:8080/health | jq .

Sample MCP initialize:

curl -s -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'

Project structure

figma_mcp_actor/
├── .actor/
│   ├── actor.json           # Apify Actor metadata (incl. webServerMcpPath: /mcp)
│   ├── input_schema.json
│   ├── output_schema.json
│   └── dataset_schema.json
├── src/
│   ├── main.js              # Express app, /mcp, /oauth/*, Apify bootstrap
│   ├── figma/
│   │   ├── auth.js          # PAT + OAuth token exchange, refresh, KV hook
│   │   └── client.js        # Figma REST wrapper
│   ├── oauth/
│   │   └── persist.js       # Apify KV: FIGMA_OAUTH_SESSION
│   ├── mcp/                 # Protocol, handlers, server
│   ├── tools/
│   ├── resources/
│   └── prompts/
├── Dockerfile
├── package.json
└── README.md

MCP tools (overview)

Includes (names may vary slightly in code): file analysis (analyze_file, get_file_structure, …), components (list_components, …), export (export_node, …), comments (get_comments, create_comment, …), design modification helpers, plus resources (figma://file/..., etc.) and prompts for common tasks.

Limitations

  • REST vs Plugin API — deep design writes may need the Plugin API; this Actor uses REST where supported.
  • Ephemeral Apify URLs — each run has a new base URL unless you use a stable hosting pattern.
  • OAuth — single stored session per run (KV); not multi-user concurrent OAuth in one process.

Scripts

npm run lint
npm run lint:fix
npm run format

License

ISC

Changelog

0.2

  • Optional OAuth 2.0 (Figma authorization code + refresh); PAT remains default when set.
  • /oauth/authorize and /oauth/callback; session persisted in default KV (FIGMA_OAUTH_SESSION).
  • Input: oauthRedirectUri, oauthScopes.
  • Health JSON: auth_mode, figma_authenticated.

0.1 / 0.0.1

  • Initial MCP + Figma REST integration, PAT, long-running server, /mcp JSON-RPC.

References: Apify Actors · Figma REST API · Model Context Protocol

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

FIGMA_ACCESS_TOKEN*secret

Figma Personal Access Token for API authentication. Get yours at https://www.figma.com/developers/api#access-tokens

Categories
Design & Creative
Registryactive
Package@oabolade-pegasus/figma-mcp-server
TransportSTDIO
AuthRequired
UpdatedDec 16, 2025
View on GitHub

Related Design & Creative MCP Servers

View all →
HTML to Figma — Design System

miapre/html-to-figma-design-system

Translate HTML prototypes into Figma using your design system's real components and tokens.
3
Illustrator Mcp Server

ie3jp/illustrator-mcp-server

Read, manipulate, and export Adobe Illustrator design data. 26 tools. macOS | Windows.
44
Godot

coding-solo/godot-mcp

MCP server for interfacing with Godot game engine. Provides tools for launching the editor, running projects, and capturing debug output.
3.7k
Unity Mcp

ivanmurzak/unity-mcp

Make 3D games in Unity Engine with AI. MCP Server + Plugin for Unity Editor and Unity games.
3.1k
Excalidraw

yctimlin/mcp_excalidraw

Provides an Excalidraw canvas exposed via MCP for real-time diagramming and element CRUD from AI agents.
1.9k
Figma MCP Server

figma/mcp-server-guide

The Figma MCP server brings Figma design context directly into your AI workflow.
1.6k