New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@andreaswissel/frametide

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@andreaswissel/frametide

MCP server for Figma design system extraction using TypeScript SDK

latest
npmnpm
Version
1.2.2
Version published
Maintainers
1
Created
Source

Frametide logo

Frametide - Figma components rolling in as code, just like the tide

TypeScript MCP SDK Node.js License Docker

A production-grade MCP (Model Context Protocol) server that extracts component properties and design information from Figma files, providing structured data for automated component library generation and maintenance.

🚀 Perfect for AI agents building design systems, generating component code, and maintaining design-code synchronization across any frontend framework.

📋 Table of Contents

🚀 Quick Start

# 1. Clone and install
git clone https://github.com/andreaswissel/frametide.git
cd frametide
npm install

# 2. Build everything
npm run build

# 3. Interactive setup (creates .env with your Figma token)
npm run setup

# 4. Test your connection
npm run health

# 5. Start the server
npm start

Prerequisites

  • Node.js 18+
  • Figma account with access to files you want to extract from
  • Figma Personal Access Token (see Figma Setup below)

📝 Note: Modern Figma Variables require an Enterprise plan. The server works perfectly with legacy styles on all plan types.

📁 Project Structure

/
├── src/                    # Source code
│   ├── cli/               # CLI management tools
│   ├── extractors/        # Component & token extraction logic
│   ├── figma/            # Figma API integration
│   ├── services/         # Cache and core services
│   ├── utils/            # Security, logging, validation
│   └── __tests__/        # Test suite
├── USAGE.md              # Integration examples
└── docker-compose.yml   # Container orchestration

🎯 Overview

This MCP server bridges Figma designs and frontend development by providing LLM coding agents with structured access to design system information, component specifications, and visual properties from Figma files.

🔧 Key Features

Core Capabilities

  • 🎨 Component Extraction - Extract detailed component properties, variants, and specifications from Figma designs
  • 🎯 Design Tokens - Parse legacy styles and modern Figma variables (Enterprise) with semantic categorization (only works on Figma Enterprise plan)
  • 🔧 Framework-Agnostic - Generate specifications for React, Angular, Vue, Svelte, and any frontend framework
  • 🔄 Change Detection - Monitor design-code synchronization with intelligent change tracking
  • 🤖 AI-Optimized - Structured data perfect for LLM-powered code generation and automation

Figma Integration

  • 📱 Modern Variables - Support for Figma's latest design token system (requires Enterprise plan)
  • 🎨 Legacy Styles - Full backward compatibility with traditional Figma styles
  • 🔗 Intelligent API - Optimized Figma API usage with rate limiting and error handling

🛠 Technology Stack

  • MCP Framework: @modelcontextprotocol/sdk-typescript (broad LLM compatibility)
  • Target Models: Any MCP-compatible LLM (Claude, GPT, Gemini, etc.)
  • Design Source: Figma REST API with intelligent rate limiting
  • Target Frameworks: Framework-agnostic (React, Angular, Vue, Svelte, etc.)
  • Runtime: Node.js 18+ with TypeScript and ES modules
  • Caching: LRU cache with configurable TTLs and memory management
  • Security: Zod validation, rate limiting, audit logging
  • Deployment: Docker, Kubernetes, PM2 ready

🎨 Figma Setup

Creating a Personal Access Token

  • Go to Figma Settings → Account Settings → Personal Access Tokens
  • Generate new token with these scopes:
    • File content - Read file content and structure
    • File metadata - Read file metadata and version info
    • Library content - Read published component libraries
  • Copy the token and add it to your .env file or environment variables

Figma Plan Limitations

FeaturePersonal/ProfessionalEnterprise
Legacy Styles✅ Full support✅ Full support
Modern Variables❌ Not available✅ Full support
Component Extraction✅ Full support✅ Full support
Design Token Export✅ Styles only✅ Styles + Variables

💡 Important: Figma's modern Variables API requires an Enterprise plan. The server gracefully falls back to legacy styles for other plan types.

Testing Your Setup

# Test your Figma token and file access
npm run check-scopes

# Test with a specific file
npm run check-scopes YOUR_FILE_ID

# Validate file access
npm run cli validate-file --file YOUR_FILE_ID

📚 Documentation

DocumentDescription
USAGE.mdIntegration examples and usage patterns

🔧 Available Tools

🔄 Workflow-Oriented Tools (New!)

ToolDescriptionNatural Usage
set-working-fileSet Figma file from URL"Let's work on this file: [URL]"
get-implementation-queueGet components by status"Show me what needs to be implemented"
get-component-for-implementationFull specs with framework hints"Get implementation details for Button"
update-component-statusTrack implementation progress"Mark Button as implemented"
get-working-file-infoSession status and progress"What's our current progress?"

📋 Traditional Tools

ToolDescriptionUse Case
get-componentExtract detailed component propertiesGenerate component code
list-componentsGet all components from a fileBrowse component library
get-design-tokensExtract design tokens (styles + variables*)Build design system
get-component-specificationRich component specs for any frameworkAdvanced code generation
check-component-changesMonitor Figma changesAutomated updates

*Variables require Figma Enterprise plan

🚀 Integration Examples

With Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "figma": {
      "command": "node",
      "args": ["/absolute/path/to/frametide/dist/index.js"],
      "env": {
        "FIGMA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Config locations:

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

With VS Code

Add to your workspace .vscode/settings.json:

{
  "mcp.servers": {
    "figma": {
      "command": "node",
      "args": ["/path/to/frametide/dist/index.js"],
      "cwd": "${workspaceFolder}",
      "env": {
        "FIGMA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Required extensions:

With Cursor

Add to your project's .cursor/settings.json:

{
  "mcp.servers": {
    "figma": {
      "command": "node", 
      "args": ["/path/to/frametide/dist/index.js"],
      "cwd": "${workspaceFolder}",
      "env": {
        "FIGMA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Setup steps:

  • Install the MCP extension in Cursor
  • Build the server: cd frametide && npm run build
  • Add the configuration above
  • Restart Cursor

🎯 Natural Workflow Example

// 1. Agent: "Let's implement components from this Figma file: https://www.figma.com/design/abc123/Design-System"
await mcpClient.callTool('set-working-file', {
  url: 'https://www.figma.com/design/abc123/Design-System'
});

// 2. Agent: "Show me what components need to be implemented"
const queue = await mcpClient.callTool('get-implementation-queue');

// 3. Agent: "Let's implement the Button component first"
const buttonSpec = await mcpClient.callTool('get-component-for-implementation', {
  componentId: 'button-component-id',
  targetFramework: 'react'
});

// 4. Agent generates React component code using the specification

// 5. Agent: "Mark the Button as implemented"
await mcpClient.callTool('update-component-status', {
  componentId: 'button-component-id',
  componentName: 'Button',
  status: 'implemented',
  framework: 'react'
});

🐳 Docker Quick Start

# Clone repository
git clone <repository-url>
cd figma-mcp-server

# Set up environment
cp .env.example .env
# Edit .env with your FIGMA_ACCESS_TOKEN

# Run with Docker Compose
docker-compose up -d

# Check health
docker exec figma-mcp-server npm run health

Environment Variables

The MCP server requires a Figma access token and other configuration via environment variables. When installed as an npm package, it will automatically load .env from your project root.

  • Copy .env.example to .env in your project root:
    cp node_modules/frametide/.env.example .env
    # Or manually create .env and fill in your values
    
  • Add your Figma access token:
    FIGMA_ACCESS_TOKEN=your-figma-access-token-here
    
  • (Optional) Set other config values as needed.

Never commit your .env file with secrets to source control.

For more details, see .env.example.

🧪 Testing

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run specific test
npm test -- --testNamePattern="cache"

🔒 Security Features

  • Input Validation: All inputs sanitized with Zod schemas
  • Rate Limiting: Configurable per-client rate limits (default: 100/hour)
  • Audit Logging: Complete audit trail of all tool calls
  • Secrets Management: Secure token handling with environment variables
  • Error Safety: No sensitive data exposure in error messages

📊 Monitoring

# Health check
npm run health

# Test Figma connection
npm run cli test-connection

# Validate file access
npm run cli validate-file --file YOUR_FILE_ID

🔧 Troubleshooting

Common Issues

No Design Tokens Returned

# Check if your file has published styles
npm run check-scopes YOUR_FILE_ID

# Common causes:
# 1. File has no published styles/tokens
# 2. Token lacks required permissions  
# 3. Variables require Enterprise plan

Variables Not Available

❌ Figma Variables API not available - Enterprise plan required
💡 The file_variables:read scope is only available with Figma Enterprise plans

Solution: Upgrade to Figma Enterprise or use legacy styles

Rate Limit Errors

# Check remaining API quota
npm run cli test-connection

# The server has built-in rate limiting:
# - 1000 requests/hour (configurable)
# - Automatic backoff and retry

Connection Issues

# Verify token and permissions
export FIGMA_ACCESS_TOKEN="your_token_here"
npm run check-scopes

# Check server logs
npm run dev  # Shows detailed logging

Getting Help

  • Check the logs - The server provides detailed error messages
  • Test with known files - Use Figma Community files for testing
  • Verify token scopes - Ensure you have the required permissions

🤝 Contributing

We welcome contributions! Here's how to get started:

  • Development Setup: See AGENT.md for complete development guide
  • Fork the repository and create a feature branch
  • Make your changes with comprehensive tests
  • Update documentation for new features
  • Submit a pull request with clear description

Development Guidelines

  • Type Safety: All code must pass TypeScript strict checks
  • Testing: Maintain >90% test coverage
  • Security: Follow security best practices for API integrations

🙏 Acknowledgments

  • Anthropic for the Model Context Protocol specification
  • Figma for their comprehensive REST API
  • TypeScript community for excellent tooling and ecosystem

📄 License

MIT License - see LICENSE file for details.

Made with ❤️ for the AI agent and design systems community
Report Bug Request Feature

Keywords

mcp

FAQs

Package last updated on 17 Nov 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts