figma-svg-to-icon-mcp
Extracts SVG icons from Figma and generates React TSX icon components automatically, enabling AI assistants like GitHub Copilot and Claude to manage icon workflows.
README
figma-svg-to-icon-mcp
An MCP (Model Context Protocol) server that extracts SVG icons from Figma and generates React TSX icon components — automatically, from your AI assistant.
Works with GitHub Copilot, Claude, and any MCP-compatible AI assistant.
Setup
Prerequisites
- Node.js 18+
- VS Code with GitHub Copilot (agent mode) or Claude Desktop
- A Figma personal access token
1. Get a Figma Token
Go to figma.com → Settings → Security → Personal access tokens → Generate new token.
Scopes needed: file_content:read
2. Configure your MCP client
VS Code (.vscode/mcp.json or user settings):
{
"servers": {
"figma-svg-to-icon-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "figma-svg-to-icon-mcp"],
"env": {
"FIGMA_TOKEN": "figd_your_token_here"
}
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"figma-svg-to-icon-mcp": {
"command": "npx",
"args": ["-y", "figma-svg-to-icon-mcp"],
"env": {
"FIGMA_TOKEN": "figd_your_token_here"
}
}
}
}
Note: Each user needs their own
FIGMA_TOKEN. Tokens are tied to Figma account permissions.
What it does
Point it at any Figma node URL and it will:
- Fetch the full node tree via Figma REST API (handles deeply nested instances)
- Detect icon nodes by name pattern + size
- Export clean SVG via Figma's image export API
- Check your existing
components/iconsfolder for duplicates (name + path similarity) - Generate
.tsxicon components in a consistent format
Generated component format:
interface IconProps {
className?: string;
}
export default function ArrowRightIcon({ className }: IconProps) {
return (
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20" fill="none" className={className}>
<path d="..." stroke="currentColor" strokeWidth="1.66667" strokeLinecap="round" strokeLinejoin="round" />
</svg>
);
}
Usage
Once configured, just tell your AI assistant:
Extract all icons from this Figma node and save new ones to my icons folder.
figma_url: https://www.figma.com/design/FILEID/Name?node-id=1234-5678
icons_dir: /absolute/path/to/your/project/src/components/icons
Options
| Parameter | Description | Default |
|---|---|---|
figma_url |
Figma node URL with node-id |
required |
icons_dir |
Absolute path to icons folder | required |
dry_run |
Preview without writing files | false |
copy_existing |
Write similar icons with -copy suffix instead of skipping |
false |
Dry run (preview only)
Extract icons — dry run only, don't write files.
figma_url: https://www.figma.com/design/xxx?node-id=1234-5678
icons_dir: /Users/you/project/src/components/icons
dry_run: true
Convert a single SVG
Convert this SVG to an icon component and save it.
icon_name: arrow-right
icons_dir: /Users/you/project/src/components/icons
svg_code: <svg viewBox="0 0 24 24">...</svg>
How icon detection works
Icons are identified by:
- Type:
INSTANCE,COMPONENT,VECTOR, orBOOLEAN_OPERATION - Name: kebab-case pattern —
wallet-03,arrow-right,x-close✅- Excluded:
Frame 123,Group,Solid,Bold,Featured icon❌
- Excluded:
- Size: Square dimensions in common icon sizes: 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48, 64px
Duplicate detection
Before writing a file, the server checks your existing icons folder using:
- Name similarity — fuzzy match on component name (70%+ threshold)
- SVG path similarity — Jaccard similarity on path data (85%+ threshold)
If either matches, the icon is skipped (or written with -copy suffix if copy_existing: true).
Tools
| Tool | Description |
|---|---|
extract_icons_from_figma |
Main tool — extracts icons from a Figma URL |
svg_to_icon |
Convert a raw SVG string to a TSX component |
Contributing
Issues and PRs welcome at https://github.com/Pruthvik1/figma-svg-to-icon-mcp.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.