Skip to main content
Glama

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

  1. Clone or download this repository:

    git clone <your-repo-url>
    cd i18n-figma-mcp
  2. Install dependencies:

    npm install
  3. Get 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

  1. Locate your Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  2. 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"
          }
        }
      }
    }
  3. Replace the placeholders:

    • Replace /absolute/path/to/i18n-figma-mcp with the actual full path to this project

    • Replace your-figma-access-token-here with your Figma access token

  4. 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/MyDesign

Extract from a specific frame:

Extract text from this Figma frame: https://www.figma.com/file/ABC123xyz/MyDesign?node-id=123-456

Output 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

  1. Parses the Figma URL to extract file key and optional node ID

  2. Fetches the design data using the Figma API

  3. Traverses the component tree recursively

  4. Extracts visible text nodes with their frame/component context

  5. Generates unique keys for each text entry

  6. 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}/... or https://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 start

The 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 tool
extract_figma_i18nA

Extracts all visible text from a Figma file, grouped by frame/component, for i18n translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
figmaUrlYesFigma file link or frame URL

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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. 1 tool updatev1.1.0
    • First observedextract_figma_i18n

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusing it with others. The tool's purpose is clearly defined and distinct.

Naming Consistency5/5

With a single tool, naming consistency is trivially maintained. The name 'extract_figma_i18n' clearly follows a verb_noun pattern.

Tool Count3/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    7
    12 npm
    11
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables interaction with Figma files through intelligent API access, providing navigation, asset extraction, and design token retrieval with 95% token-optimized compact tree output format.
    15
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables developers to extract and organize Figma design files, including complete node data (tree structure and images) for AI understanding and code generation.
    MIT