tr-figma-mcpserver
Downloads images from Figma designs using personal access tokens, supporting multiple export formats and scale factors.
Click on "Install 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., "@tr-figma-mcpserverexport the Figma design frame as PNG"
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.
tr-figma-mcpserver
Hosted MCP (Model Context Protocol) server for downloading Figma images using access tokens.
Quick Start
1. Install the Package
npm install -g @somnathroy/tr-figma-mcpserverOr use with npx (no installation):
npx @somnathroy/tr-figma-mcpserver2. Get Your Figma Access Token
Go to Figma Settings
Scroll to "Personal access tokens"
Click "Create new token"
Give it a name (e.g., "MCP Server")
Copy the token (format:
figd_...)
3. Configure Your MCP Client
Create .mcp.json in your project root or add to your MCP client config:
Using installed package:
{
"mcpServers": {
"tr-figma-mcpserver": {
"command": "tr-figma-mcpserver",
"env": {
"MCP_STDIO": "true",
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Using npx (no installation):
{
"mcpServers": {
"tr-figma-mcpserver": {
"command": "npx",
"args": ["-y", "@somnathroy/tr-figma-mcpserver"],
"env": {
"MCP_STDIO": "true",
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Configuration Locations:
VS Code / Cursor:
.mcp.jsonin project root or.vscode/mcp.jsonClaude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(Mac) or%APPDATA%\Claude\claude_desktop_config.json(Windows)
4. Verify Setup
Check that the MCP server appears in your MCP client:
In VS Code: Check the MCP panel/output
In Cursor: Settings → MCP Servers
In Claude Desktop: Check logs
5. Use the Tool
Once configured and loaded, use the download_figma_images tool:
Basic usage:
{
"figmaUrl": "https://www.figma.com/design/WJNNpEsralNcSMptsFbFH9/LT-Matters-page?node-id=29302-167474"
}With options:
{
"figmaUrl": "https://www.figma.com/design/WJNNpEsralNcSMptsFbFH9/LT-Matters-page?node-id=29302-167474",
"format": "png",
"scale": 2
}That's it! No need to pass the token in every request since it's configured in your MCP client settings.
Related MCP server: OpenFigma MCP
Features
✅ Download images from Figma files using access tokens
✅ Supports both
/file/and/design/URL formats✅ Automatic
node-idparameter conversion (hyphen to colon format)✅ Multiple export formats: PNG, JPG, SVG, PDF
✅ Configurable scale factor for raster images (0.01 to 4)
✅ Base64-encoded responses for easy integration
✅ Hosted on Azure Web App - no installation required
✅ Configure token once, use everywhere
Supported URL Formats
The server supports both Figma URL formats:
File URLs:
https://www.figma.com/file/{fileId}/{fileName}Design URLs:
https://www.figma.com/design/{fileId}/{fileName}?node-id=123-456
Node ID Conversion
The server automatically converts node IDs from URL format to API format:
URL format:
node-id=29302-167474(hyphen separator)API format:
29302:167474(colon separator)
Example:
Input:
https://www.figma.com/design/WJNNpEsralNcSMptsFbFH9/LT-Matters-page?node-id=29302-167474Parsed: File ID
WJNNpEsralNcSMptsFbFH9, Node ID29302:167474
API Reference
Tool: download_figma_images
Downloads images from Figma designs and returns them as Base64-encoded resources.
Parameters
Parameter | Type | Required | Default | Description |
| string | No* | - | Figma personal access token (*required if not set in environment) |
| string | Yes | - | Figma file URL (supports /file/ and /design/ paths) |
| string[] | No | From URL | Specific node IDs to export (uses node-id from URL if not provided) |
| enum | No | 'png' | Export format: |
| number | No | 1 | Scale factor for raster images (0.01 to 4) |
Response
{
"content": [
{
"type": "text",
"text": "Downloaded 1 image from Figma file: LT Matters page"
},
{
"type": "resource",
"resource": {
"uri": "data:image/png;base64,iVBORw0KGgo...",
"mimeType": "image/png",
"text": "Node 29302:167474 (245.67 KB)"
}
}
]
}Error Handling
The server returns helpful error messages for common issues:
Error | Description | Solution |
401 Unauthorized | Invalid or expired Figma access token | Get a new token from https://www.figma.com/settings |
403 Forbidden | No access to the Figma file | Check file permissions or use a different token |
404 Not Found | File or node doesn't exist | Verify the Figma URL is correct |
429 Rate Limited | Too many requests to Figma API | Wait a moment and try again |
Invalid URL | URL doesn't match expected format | Use format: |
No token | Neither parameter nor env var provided | Set FIGMA_ACCESS_TOKEN or provide in request |
Health Check
Verify the service is running:
curl https://tr-figma-mcpserver-gsakbybcgegzdkc4.centralus-01.azurewebsites.net/healthExpected response:
{
"status": "healthy",
"service": "tr-figma-mcpserver",
"version": "1.0.0",
"timestamp": "2026-04-01T12:00:00.000Z"
}Security
Token Handling
Server does NOT store tokens: Tokens are passed per-request or via environment variables
No logging: Tokens are never logged or persisted
User responsibility: Users secure their own Figma tokens
HTTPS required: All communication encrypted in transit (Azure provides SSL/TLS)
Best Practices
✅ Never commit tokens to git repositories
✅ Store tokens in environment variables or secure configuration
✅ Rotate tokens regularly
✅ Use separate tokens for different services
✅ Revoke tokens immediately if compromised
✅ Only share tokens with trusted MCP clients
Troubleshooting
"No token provided"
Problem: Neither figmaAccessToken parameter nor FIGMA_ACCESS_TOKEN environment variable is set.
Solution:
Add token to your MCP client config's
envsection, ORProvide
figmaAccessTokenin each request
"Unauthorized: Invalid or expired token"
Problem: Your Figma token is incorrect or has expired.
Solution:
Verify token format (should start with
figd_)Check if token was revoked in Figma settings
Generate a new token at https://www.figma.com/settings
"Invalid Figma URL format"
Problem: URL doesn't match expected Figma format.
Solution:
Ensure URL starts with
https://www.figma.com/URL must contain
/file/or/design/pathExample:
https://www.figma.com/design/{fileId}/{name}?node-id=123-456
"No node IDs specified"
Problem: Neither nodeIds parameter nor node-id in URL provided.
Solution:
Add
nodeIdsparameter:["123:456", "789:012"], ORInclude
node-idin URL:?node-id=123-456
"Failed to download image"
Problem: Network issue or Figma API error.
Solution:
Check your internet connection
Verify the node exists in the Figma file
Try a smaller scale factor for large images
Wait a moment if rate limited
Development & Local Setup
Want to run the server locally or contribute to development?
Prerequisites
Node.js 22+ installed
npm or yarn package manager
Git
Local Installation
Clone the repository:
git clone https://github.com/your-org/tr-figma-mcpserver.git
cd tr-figma-mcpserverInstall dependencies:
npm installBuild TypeScript:
npm run buildRun locally:
npm run devLocal MCP Configuration
To use your local instance instead of the hosted one:
{
"mcpServers": {
"tr-figma-mcpserver": {
"command": "node",
"args": ["C:/path/to/tr-figma-mcpserver/dist/index.js"],
"env": {
"MCP_STDIO": "true",
"FIGMA_ACCESS_TOKEN": "figd_YOUR_TOKEN_HERE"
}
}
}
}Testing Locally
Test the health endpoint:
curl http://localhost:3000/healthExpected response:
{
"status": "healthy",
"service": "tr-figma-mcpserver",
"version": "1.0.0",
"timestamp": "..."
}Project Structure
tr-figma-mcpserver/
├── src/
│ ├── index.ts # Express server + SSE/stdio transports
│ ├── server.ts # MCP server factory
│ ├── tools/
│ │ └── download-image.ts # Tool implementation
│ ├── services/
│ │ ├── figma-api.ts # Figma API client
│ │ └── image-processor.ts# Image download & encoding
│ └── types/
│ └── figma.ts # TypeScript type definitions
├── dist/ # Compiled JavaScript (generated)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # This fileDeployment
The server is deployed to Azure Web App with automatic GitHub Actions CI/CD.
Deployment URL
Live: https://tr-figma-mcpserver-gsakbybcgegzdkc4.centralus-01.azurewebsites.net
Endpoints
Health Check:
/healthMCP SSE:
/mcpInfo:
/
GitHub Actions
Every push to main or master branch triggers automatic deployment:
Install dependencies
Build TypeScript
Run type checking
Deploy to Azure Web App
Verify deployment with health check
Monitor deployments at: GitHub Actions
Contributing
Contributions are welcome! Please follow these steps:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
MIT License - see LICENSE file for details
Support
Issues: GitHub Issues
MCP Documentation: Model Context Protocol
Figma API: Figma Developer Docs
Service Status: https://tr-figma-mcpserver-gsakbybcgegzdkc4.centralus-01.azurewebsites.net/health
Acknowledgments
Built with Model Context Protocol SDK
Powered by Figma API
Hosted on Azure Web App
Made with ❤️ by Thomson Reuters
Live Service: https://tr-figma-mcpserver-gsakbybcgegzdkc4.centralus-01.azurewebsites.net
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SomnathRoyTR/tr-figma-mcpserver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server