Figma MCP Server

io.github.oaboladePublished by GitHub account oaboladev2.1.0Updated Oct 25, 2026

MCP server enabling AI assistants to interact with Figma designs via natural language commands

The publisher's own server: Figma MCP Server

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & Design

Overview

AI-generated overview

A local MCP server that connects AI assistants to the Figma REST API for analyzing files, listing components, exporting assets and managing comments.

What you can do
Analyze Figma files: structure, metadata, styles and depth-limited trees, plus project and team listings and metadata. List components and inspect their details and usage. Export nodes as PNG, SVG, PDF or JPG. Read and create comments on designs. Access MCP resources and prompts for guided workflows, plus design modification helpers.
When to use it
Useful when you want an assistant to inspect Figma designs, pull component inventories, export assets, or read and post design comments without leaving the chat. Suited to solo designers and developers working with a Figma account.
Requirements
Runs locally as a Node.js process (Node.js 20 or newer) over stdio, or as a long-running web server on Apify (an Apify account is needed for cloud). Requires a Figma personal access token in FIGMA_ACCESS_TOKEN, or a Figma OAuth app (client ID, secret and exact redirect URI) instead. Network access to the Figma API.
Before you install
Needs a Figma personal access token, a credential granting access to your Figma account; keep it out of shared configs. OAuth mode stores session tokens in the run's key-value store and supports only one session per run. The server can create comments and modify designs, which changes data in Figma. Apify container URLs are per run and stop working when the run ends.

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 (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).

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)

bash
npm installapify loginapify 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):

json
{  "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):

json
{  "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

bash
npm installapify run

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

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

Check health (port from logs or input):

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

Sample MCP initialize:

bash
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

bash
npm run lintnpm run lint:fixnpm 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

Source: README.md at commit 5497202

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v2.1.0LatestSep 16, 2026

Score

50% 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

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • 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 listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Figma integrations