figma-mcp-server
Allows extraction and manipulation of Figma design information, including reading file data, styles, assets, variables, and creating or updating designs via a Figma plugin.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@figma-mcp-server get the color styles from this Figma link: https://figma.com/file/abc"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figma MCP Server
A Model Context Protocol (MCP) server for interacting with Figma designs. This server allows Claude AI to extract design information from Figma files and create or update designs using the Figma plugin.
Features
Readonly Mode: Extract design information from Figma files using a URL link
Write Mode: Create or update designs by establishing a connection with the Figma plugin
Comprehensive API: Access to a wide range of Figma features through a unified API
Unit Testing: Includes tests to verify server functionality
Integration Testing: Tests the flow from creating designs to reading them
Related MCP server: Claude Talk to Figma MCP
Modes
Readonly Mode
In readonly mode, the server can extract design information from a Figma file using a URL link. This includes:
File information
Node details
Styles (colors, text, effects)
Assets (images)
Variables
Component identification
Variant detection
Responsive design detection
Write Mode
In write mode, the server can create or update designs by establishing a connection with the Figma plugin. This includes:
Creating frames, shapes, text, and components
Creating component instances
Updating node properties
Setting fills, strokes, and effects
Deleting nodes
Smart element creation
Prerequisites
Node.js 18 or higher
A Figma account and access token
The Figma MCP plugin installed in the Figma desktop app (for write mode)
Installation
Clone the repository:
git clone https://github.com/your-username/figma-server.git
cd figma-serverInstall dependencies:
npm installBuild the server:
npm run buildConfiguration
The server requires a Figma access token to be set in the environment:
export FIGMA_ACCESS_TOKEN=your_figma_access_tokenUsage
Starting the Server
npm startDevelopment Mode
npm run devRunning Tests
# Run unit tests
npm test
# Run integration tests (TypeScript)
npm run test:integration
# Run integration tests (JavaScript)
npm run test:integration-js
# Run all tests
npm run test:all
# Test plugin connection
npm run test:plugin-connection-jsThe plugin connection test is a simple WebSocket server that listens for connections from the Figma plugin. It's useful for verifying that the plugin is running and can connect to the server.
The JavaScript versions of the tests are provided as alternatives that don't require TypeScript compilation, which can be more reliable in some environments.
Project Structure
figma-server/
├── src/ # Source code
│ ├── core/ # Core functionality
│ │ ├── config.ts # Configuration management
│ │ ├── logger.ts # Logging utilities
│ │ ├── types.ts # Common type definitions
│ │ └── utils.ts # Utility functions
│ ├── readonly/ # Readonly mode implementation
│ │ ├── api-client.ts # Figma REST API client
│ │ ├── design-manager.ts # Design information extraction
│ │ └── style-extractor.ts # Style extraction utilities
│ ├── write/ # Write mode implementation
│ │ ├── plugin-bridge.ts # WebSocket server for plugin communication
│ │ ├── design-creator.ts # Design creation utilities
│ │ └── component-utils.ts # Component utilities
│ ├── mcp/ # MCP server implementation
│ │ ├── server.ts # Main MCP server
│ │ ├── tools.ts # Tool definitions
│ │ └── handlers.ts # Tool handlers
│ ├── index.ts # Entry point
│ └── mode-manager.ts # Mode management (readonly/write)
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ │ └── server.test.ts # Server tests
│ └── integration/ # Integration tests
│ └── design-flow.test.ts # Design flow tests
├── plugin/ # Figma plugin
│ ├── code.js # Plugin code
│ ├── manifest.json # Plugin manifest
│ └── ui.html # Plugin UI
└── docs/ # Documentation
└── usage.md # Usage instructions for Claude AIDocumentation
For detailed usage instructions, see the usage documentation.
License
ISC
Available Tools
9 toolsdetect_responsiveC
Detect responsive variations of components
Inputs: figmaUrl (required).
detect_variantsC
Detect component variants and group them
Inputs: figmaUrl (required).
extract_stylesB
Extract color, text, and effect styles from a Figma file
Inputs: figmaUrl (required).
get_assetsB
Get image URLs for nodes in a Figma file
Inputs: figmaUrl (required), scale, format, nodeId.
get_file_infoB
Get basic metadata about a Figma file
Inputs: figmaUrl (required).
get_node_detailsB
Get detailed information about a specific node (component, frame, etc.)
Inputs: figmaUrl (required), nodeId, properties, detailLevel.
get_variablesB
Get variables and variable collections from a Figma file (new Figma Variables API)
Inputs: figmaUrl (required).
identify_componentsA
Identify UI components in a Figma design (charts, tables, forms, etc.)
Inputs: figmaUrl (required), nodeId.
validate_tokenA
Test if the configured token has access to a Figma file
Inputs: figmaUrl (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool targets a distinct aspect of Figma data: token validation, file metadata, node details, styles, assets, variables, and three specific component analyses (identification, variants, responsive). The overlapping-sounding component tools are clearly differentiated by their descriptions.
All tool names follow a consistent verb_noun pattern using clear verbs (validate, get, extract, identify, detect) and specific nouns. The convention is uniform across the entire set.
Nine tools is well within the ideal range for a specialized server, covering a cohesive set of read-only Figma operations without redundancy or bloat. Each tool earns its place.
The server covers the core read-only surface for Figma: file access, node introspection, styles, assets, variables, and component analysis. No create/update operations are included, but the server's apparent purpose is analysis; minor gaps like commenting or file search are not critical.
Related MCP Connectors
Compare Figma designs against live websites and get visual + content QA reports, from inside Claude.
Edit and publish your FramerToNextJS sites (converted Framer or AI-built) from Claude, Cursor or Codex. 19 tools: read pages, rewrite copy, restyle elements, add sections and pages, design Studio sites, manage CMS collections and items, then publish to your own host. OAuth with a read-only option, and MCP runs no model on FNJ's side. Requires an FNJ plan (Lifetime or any AI builder plan).
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables Claude Desktop and other AI tools to interact directly with Figma, allowing for powerful AI-assisted design capabilities through natural language commands.92679 npm676MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude Desktop to interact directly with Figma, allowing natural language commands to create, modify, and analyze designs including shapes, text, components, and layouts in real-time.MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to read and manipulate Figma documents in real-time through 62 operations including creating shapes, modifying styles, managing components, and exporting assets via a WebSocket bridge to a Figma plugin.77 npm85MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to interact directly with Figma Desktop for creating UI components, managing design tokens, and auditing files through natural language. It establishes a live connection between the AI and the Figma API via a local server and companion plugin.10,472 npmMIT