Figma i18n MCP Server
Allows for the extraction of visible text nodes from Figma designs and frames, organizing them into a structured JSON format with automatically generated i18n keys for translation workflows.
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 i18n MCP ServerExtract i18n keys from this Figma file: https://www.figma.com/file/abc123xyz/MyDesign"
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 i18n MCP Server
A Model Context Protocol (MCP) server that extracts text from Figma designs for internationalization (i18n). This tool automatically extracts all visible text nodes from Figma files and organizes them into a structured JSON format, grouped by frames and components, perfect for translation workflows.
Features
🎨 Extract text from any Figma file or specific frame
🔑 Automatically generate i18n keys for each text node
📦 Group text by frames and components
🚫 Skip invisible/hidden layers
🌳 Nested JSON output ready for i18n libraries
Related MCP server: Figma MCP
Prerequisites
Node.js (v18 or higher recommended)
Figma Access Token (see setup instructions below)
Claude Desktop or any MCP-compatible client
Installation
Clone or download this repository:
git clone <your-repo-url> cd i18n-figma-mcpInstall dependencies:
npm installGet your Figma Access Token:
Log in to Figma
Go to Settings → Account → Personal Access Tokens
Click Generate new token
Give it a name (e.g., "MCP i18n Extractor")
Copy the token immediately (you won't see it again!)
Configuration
Claude Desktop Setup
Locate your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add this MCP server to the config:
{ "mcpServers": { "figma-i18n": { "command": "node", "args": [ "/absolute/path/to/i18n-figma-mcp/src/index.js" ], "cwd": "/absolute/path/to/i18n-figma-mcp", "env": { "FIGMA_TOKEN": "your-figma-access-token-here" } } } }Replace the placeholders:
Replace
/absolute/path/to/i18n-figma-mcpwith the actual full path to this projectReplace
your-figma-access-token-herewith your Figma access token
Restart Claude Desktop to load the new MCP server
Usage
Once configured, you can use the extract_figma_i18n tool in Claude Desktop:
Example Prompts:
Extract from a Figma file:
Extract i18n text from this Figma file: https://www.figma.com/file/ABC123xyz/MyDesignExtract from a specific frame:
Extract text from this Figma frame: https://www.figma.com/file/ABC123xyz/MyDesign?node-id=123-456Output Format
The tool returns a nested JSON structure grouped by frames:
{
"login_screen": {
"welcome_message": "Welcome back!",
"email_placeholder": "Enter your email",
"password_placeholder": "Password",
"login_button": "Sign In"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Your overview"
}
}How It Works
Parses the Figma URL to extract file key and optional node ID
Fetches the design data using the Figma API
Traverses the component tree recursively
Extracts visible text nodes with their frame/component context
Generates unique keys for each text entry
Returns structured JSON ready for translation
Troubleshooting
"Invalid Figma URL" error
Ensure you're using a valid Figma file or frame URL
Format:
https://www.figma.com/file/{fileKey}/...orhttps://www.figma.com/design/{fileKey}/...
"Authentication failed" or API errors
Verify your Figma access token is correct
Check that the token has read access to the file
Ensure the file is accessible with your Figma account
Server not appearing in Claude Desktop
Verify the config file path is correct
Check that all paths in the config are absolute paths
Restart Claude Desktop after making changes
Check Claude Desktop logs for error messages
Empty results
Make sure the Figma file contains visible text nodes
Verify you have permission to access the file
Try using a specific frame URL if the file is very large
Development
To run the server locally for testing:
npm startThe server communicates via stdio and expects JSON-RPC messages following the MCP protocol.
Version
Current version: 1.1.0
License
[Your License Here]
Available Tools
1 toolextract_figma_i18nA
Extracts all visible text from a Figma file, grouped by frame/component, for i18n translation.
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file link or frame URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool 'extracts' (non-destructive) and groups by frame/component, which is useful. However, it does not disclose limitations (e.g., handling of hidden text), permission requirements, or output format. There is also a slight mismatch where the description says 'file' but the parameter allows a 'frame URL', leaving ambiguity about scope. Not misleading, but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the action and purpose, with no unnecessary words. It is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description covers the core action and grouping but omits return format, error conditions, or examples. Since the tool is straightforward, this is adequate but could be enhanced with a hint about the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the parameter fully (100% coverage) as 'Figma file link or frame URL'. The description adds no additional semantic information about how to provide the URL or how the tool interprets it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'extracts', the resource 'Figma file', the scope 'all visible text', the grouping 'by frame/component', and the purpose 'for i18n translation'. This is a specific, unambiguous definition that clearly distinguishes the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the use case 'for i18n translation', which implies when to use it, but it does not mention alternatives, exclusions, or conditions. With no sibling tools, there is no explicit routing guidance, though the purpose partially compensates. Usable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.1.0- First observed
extract_figma_i18n
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusing it with others. The tool's purpose is clearly defined and distinct.
With a single tool, naming consistency is trivially maintained. The name 'extract_figma_i18n' clearly follows a verb_noun pattern.
The server has exactly one tool, which is borderline for a focused purpose. It is thin but not unreasonable for a niche i18n extraction utility.
The tool fully covers the stated purpose of extracting visible text for i18n. However, one might expect additional capabilities like filtering or writing translations back, but these are not necessarily core to the server's stated scope.
Maintenance
Related MCP Connectors
- miromiroOAuthapp.miromiro
Turn any live website into brand colors, fonts, design tokens, SVGs, Lottie and paste-ready code.
Localization for AI agents: projects, languages, glossaries and translations from your agent
The Figma MCP server brings Figma design context directly into your AI workflow.
Turn any PDF into structured JSON via AI + OCR: invoices, bank statements, contracts.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with Figma designs through the Figma API, allowing users to export images in multiple formats, extract style data and CSS, analyze design elements, and retrieve SVG code from Figma files. Supports batch operations and comprehensive design element analysis including images, vectors, and components.712 npm11MIT
- FlicenseAqualityDmaintenanceEnables interaction with Figma files through intelligent API access, providing navigation, asset extraction, and design token retrieval with 95% token-optimized compact tree output format.151-
- AlicenseNot gradedqualityDmaintenanceEnables developers to extract and organize Figma design files, including complete node data (tree structure and images) for AI understanding and code generation.MIT
- FlicenseAqualityDmaintenanceConverts Figma design data into structured semantic analysis JSON and screenshots for AI agents to use in design-to-code workflows.5-