Inspect designs, export assets, and collaborate on Figma files through AI.
A Model Context Protocol (MCP) server that exposes Figma's API for reading file structures, exporting images, managing comments, and browsing team components.
Overview
The Figma MCP Server provides deep access to your Figma workspace through AI:
Read file document trees, nodes, styles, and component libraries
Export nodes as rendered images in multiple formats and scales
Post and retrieve comments, and browse team projects and files
Perfect for:
Letting AI inspect and describe Figma designs without opening the app
Automating asset export pipelines triggered by natural language
Surfacing design system components and styles for AI-assisted development
health_check — Check server readinessReturns a status object confirming the server is running and reachable.
Inputs: (none)
Output:
{
"status" : "ok" ,
"server" : "CL Figma MCP Server"
}
get_me — Get authenticated user profileReturns the profile of the Figma user associated with the connected credential.
Inputs: (none)
Output:
{
"id" : "123456789" ,
"email" : "user@example.com" ,
"handle" : "username" ,
"img_url" : "https://..."
}
get_file — Retrieve a Figma file document treeFetches the full document tree of a Figma file. Use depth to limit how deep the node tree is returned and reduce response size.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file (found in the file URL)
- `depth` (integer, optional) — Depth of the node tree to return (default: full tree) output:
{
"name" : "My Design File" ,
"lastModified" : "2024-01-01T00:00:00Z" ,
"document" : {
get_file_nodes — Retrieve specific nodes from a fileFetches one or more specific nodes from a Figma file by their node IDs, rather than the full document tree.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file
- `node_ids` (string, required) — Comma-separated list of node IDs to retrieve (e.g. ' 1 : 2 , 3 : 4 ')
- `depth` (integer, optional) — Depth of the node subtree to return output:
{
"nodes" : {
"1:2" : { "document"
get_file_components — List local components in a fileReturns all locally-defined components in a Figma file, including their keys and descriptions.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file output:
{
"meta" : {
"components" : [
{ "key" : "abc123" , "name" : "Button/Primary" , "description" : "" }
]
}
get_file_styles — List styles defined in a fileReturns all local styles (colors, text, effects, grids) defined in a Figma file.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file output:
{
"meta" : {
"styles" : [
{ "key" : "def456" , "name" : "Primary/Blue" , "style_type" : "FILL" }
]
}
get_file_versions — Retrieve version history of a fileReturns the full version history of a Figma file, including version labels and timestamps.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file output:
{
"versions" : [
{ "id" : "v1" , "label" : "Final Review" , "created_at" : "2024-01-01T00:00:00Z" }
]
}
get_images — Export nodes as rendered image URLsRenders one or more nodes as images and returns signed download URLs. Supports PNG, JPG, SVG, and PDF formats.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file
- `node_ids` (string, required) — Comma-separated list of node IDs to export (e.g. ' 1 : 2 , 3 : 4 ')
- `scale` (float, optional) — Export scale factor between 0.01 and 4 (default: 1 )
- `format` (string, optional) — Image format: 'jpg', 'png', 'svg', or 'pdf' (default: 'png') output:
get_image_fills — Retrieve image fill download URLsReturns download URLs for all images embedded in a Figma file as image fills on nodes.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file output:
{
"meta" : {
"images" : { "imageRef123" : "https://..." }
}
}
get_comments — List comments on a fileReturns all comments on a Figma file, including resolved and unresolved threads.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file output:
{
"comments" : [
{ "id" : "c1" , "message" : "Looks good!" , "resolved_at" : null }
]
}
post_comment — Post a comment on a fileAdds a new comment to a Figma file on behalf of the authenticated user.
Inputs:
- `file_key` (string, required) — Unique key identifying the Figma file
- `message` (string, required) — The comment text to post output:
{
"id" : "c2" ,
"message" : "Please update the button radius." ,
"created_at" : "2024-01-01T00:00:00Z"
}
get_team_projects — List projects in a teamReturns all projects belonging to a Figma team.
Inputs:
- `team_id` (string, required) — The Figma team ID output:
{
"projects" : [
{ "id" : "12345" , "name" : "Design System" }
]
}
get_project_files — List files in a projectReturns all files within a specific Figma project.
Inputs:
- `project_id` (string, required) — The Figma project ID output:
{
"files" : [
{ "key" : "abc123" , "name" : "Components v2" , "last_modified" : "2024-01-01T00:00:00Z" }
]
}
get_team_components — List published components in a team libraryReturns all published components available in a Figma team's shared component library.
Inputs:
- `team_id` (string, required) — The Figma team ID output:
{
"meta" : {
"components" : [
{ "key" : "ghi789" , "name" : "Icon/Close" , "file_key" : "abc123" }
]
}
get_component — Get a specific published componentRetrieves metadata for a single published component by its unique component key.
Inputs:
- `component_key` (string, required) — The unique key of the published component output:
{
"meta" : {
"key" : "ghi789" ,
"name" : "Icon/Close" ,
"description" : "Close icon, 24px" ,
"file_key" : "abc123"
}
API Parameters Reference
Common Parameters
file_key — The unique identifier of a Figma file, extracted from its URL: figma.com/file/{ file_key }/...
node_ids — Comma-separated node IDs in { pageId }:{ nodeId } format, e.g. 1 : 2 , 3 : 4
depth — Integer controlling how many levels of the node tree to return; omit for the full tree
Resource ID Formats File Key:
{ alphanumeric string from URL }
Example: aBcDeFgHiJkLmNoP node ID:
{ page }:{ node }
Example: 1 : 2 (page 1 , node 2 )
Image Export Formats
png — Raster, default format (default scale: 1×)
jpg — Raster, smaller file size, no transparency
svg — Vector, ideal for icons and simple shapes
pdf — Vector, suitable for print
Scale range: 0.01 – 4 (e.g. 2 for @2x retina export)
Troubleshooting
Missing or Invalid Headers
Cause: Figma credential not provided in request headers or incorrect format
Solution:
Verify Authorization: Bearer YOUR_API_KEY and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are present
Check the credential is active in your MewCP account
Insufficient Credits
Cause: API calls have exceeded your request limits
Solution:
Check credit usage in your Curious Layer dashboard
Upgrade to a paid plan or add credits for higher limits
Contact support for credit adjustments
Credential Not Connected
Cause: No Figma credential linked to your account
Solution:
Go to Credentials in your MewCP dashboard
Connect your Figma account (OAuth)
Retry the request with the correct X-Mewcp-Credential-Id header
Malformed Request Payload
Cause: JSON payload is invalid or missing required fields
Solution:
Validate JSON syntax before sending
Ensure all required tool parameters are included
Check that node_ids is a comma-separated string, not an array
Server Not Found
Cause: Incorrect server name in the API endpoint
Solution:
Verify endpoint format: { server-name }/mcp/{ tool-name }
Use correct server name from documentation
Check available servers in your Curious Layer account
Figma API Error
Cause: Upstream Figma API returned an error
Solution:
Check Figma service status at Figma Status Page
Verify your credential has access to the file or team being queried
Review the error message for specific details (e.g. file not found, insufficient permissions)