Figma Dash MCP Server
Provides tools to generate and manipulate layouts, shapes, and designs directly inside the Figma canvas.
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., "@Figma Dash MCP ServerCreate a glassmorphic dashboard layout in Figma"
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.
Figma Dash MCP Server
An open-source Model Context Protocol (MCP) server that connects your IDE (like Cursor, Claude Desktop, or Antigravity) directly to the Figma Desktop App. This allows AI assistants to proactively generate and manipulate layouts, shapes, and designs directly inside your Figma canvas!
How it Works
The architecture operates securely and completely offline on your local machine:
Figma Plugin (
figma-plugin): Runs inside your Figma drawing canvas. It hosts a hidden HTTP polling client to receive instructions.FastMCP Python Server (
figma_dash_mcp_server): Runs as a background service spawned by your IDE. It exposes AI tools (e.g.create_rectangle,create_frame) and sends those commands to Figma via an internal loopback server (port49901).
Related MCP server: Claude Talk to Figma MCP
π Quick Start Guide
Step 1: Install the Prerequisites
Because the server is built with Python, you need an extremely fast package manager called uv to automatically download and run it in an isolated environment.
Install uv (it takes 2 seconds):
macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | shWindows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"(If you are setting this up on a fresh machine, you might also need to install Python locally if uv doesn't install it for you).
Step 2: Configure Your IDE
You do not need to manually download or install any Python files. Your IDE will use the uvx command to grab the latest official package directly from PyPI on-the-fly!
Add the following block to your IDE's MCP configuration settings (e.g., Cursor Settings > Features > MCP, or claude_desktop_config.json):
{
"mcpServers": {
"figma-generator": {
"command": "uvx",
"args": ["--refresh", "figma-dash-mcp-server@latest"]
}
}
}(When your IDE restarts, it will execute this command in the background, keeping the server listening for your AI agent!)
Step 3: Connect your Figma Desktop App
For the IDE server to physically draw on your canvas, it needs a linked Figma plugin active.
Download or clone this repository.
Open your Figma Desktop App.
Right-click anywhere in your design canvas > Plugins > Development > Import plugin from manifest.
Select the
manifest.jsonfile inside thefigma-plugin/folder.Run the Dash MCP Link plugin from the plugins menu. Keep the small UI window open on the side of your screen!
Step 4: Talk to your AI!
With the Figma plugin open and your IDE restarted, the connection is instantly established. In your IDE chat, simply say:
"Hey, can you use your Figma tools to create a premium glassmorphic dashboard layout in Figma?"
The entire UI layout will build itself directly inside your Figma application in real-time!
Development
To add new AI capabilities:
Open up
figma_dash_mcp_server/server.pyand write a new@mcp.tool()function.Have the python tool send a new JSON method (like
create_circle) over thesend_to_figmabackground thread.Open
figma-plugin/code.jsand add anelse if (toolName === 'create_circle')block to physically execute the drawing via the Figma Plugin API.
Available Tools
8 toolsbatch_createA
Create MULTIPLE Figma elements in a SINGLE round-trip.
THIS IS THE PRIMARY TOOL β use it for ALL designs.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
KEY CAPABILITY: supports NESTED CHILDREN inside frames.
This lets you build full component trees in one call:
{
"type": "frame", "name": "Card", "x":100,"y":100,"width":320,"height":200,
"fill":"#1E1E2E", "cornerRadius":16,
"children": [
{"type":"rectangle","x":0,"y":0,"width":320,"height":4,"fill":"#7C3AED"},
{"type":"text","content":"Hello","x":16,"y":20,"fontSize":18,"color":"#FFFFFF"},
{"type":"ellipse","x":270,"y":12,"width":40,"height":40,"fill":"#3B82F6"}
]
}
Children x/y are RELATIVE to their parent frame.
Nesting works to any depth.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ SCREENSHOT β FIGMA WORKFLOW ββββββββββββββββββββββββββββββββββββββββββββ
Share any screenshot or describe any UI. The AI will:
1. Analyze the layout, colors, typography, spacing
2. Generate a complete `elements` array representing the design
3. Fire ONE batch_create call β complete Figma reproduction
ββ Supported types ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
"frame" container / artboard (supports children)
"rectangle" box, card, button, divider, progress bar
"ellipse" circle, avatar, badge dot, arc/donut ring segment
"vector" ANY curved/custom shape via SVG path string (waves, icons, charts)
"text" any text content
"line" horizontal separator
ββ Shape properties βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
fill / hexColor hex solid fill color e.g. "#1A1D2E"
fillOpacity 0β1 fill alpha (0.05β0.15 for glass)
noFill bool transparent fill (for stroke-only rings)
gradient dict {angle:0-360, stops:[{color,position,opacity}]}
cornerRadius int rounded corners px (frame/rect only)
stroke hex border color
strokeWidth int border px
strokeOpacity 0β1 border alpha (0.1β0.25 for glass)
opacity 0β1 node opacity
name str layer name
ββ Ellipse arc properties (for donut/pie segments) ββββββββββββββββββββββββ
arcStartAngle float degrees, 0=top(12 o'clock), clockwise
arcEndAngle float degrees, 0=top(12 o'clock), clockwise
arcInnerRadius float 0=full pie, 0.5β0.8=donut ring
ββ Vector / SVG path properties βββββββββββββββββββββββββββββββββββββββββββ
pathData str SVG path string (M,L,C,Q,A,Z commands)
windingRule str 'NONZERO' (default) | 'EVENODD'
ββ Effects ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
shadow {color,x,y,blur,spread,opacity}
innerShadow {color,x,y,blur,spread,opacity}
blur float layer blur radius
backgroundBlur float frosted glass (use with fillOpacity < 1)
ββ Text properties ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
content / text str text characters
color / hexColor hex text fill color
fontSize int 10β14 caption, 16β20 body, 24β48 heading, 56+ hero
fontStyle str Regular|Medium|SemiBold|Bold|ExtraBold|Light|Italic
textAlign str left|center|right
letterSpacing float px spacing (1β4 for uppercase labels)
lineHeight float px line height
ββ Glassmorphism recipe ββββββββββββββββββββββββββββββββββββββββββββββββββ
{
"type":"rectangle",
"fill":"#FFFFFF", "fillOpacity":0.08, "cornerRadius":16,
"stroke":"#FFFFFF", "strokeOpacity":0.12, "strokeWidth":1,
"backgroundBlur":20,
"shadow":{"color":"#000000","x":0,"y":8,"blur":32,"spread":0,"opacity":0.4}
}
ββ Wave / Area Chart recipe ββββββββββββββββββββββββββββββββββββββββββββββββ
{
"type":"vector",
"pathData":"M 0,120 C 50,60 90,140 140,80 C 190,20 240,100 290,50 L 290,160 L 0,160 Z",
"x":0,"y":0,"width":300,"height":160,
"gradient":{"angle":180,"stops":[{"color":"#8B5CF6","position":0,"opacity":0.9},{"color":"#1C1E2A","position":1,"opacity":0}]},
"shadow":{"color":"#7C3AED","x":0,"y":0,"blur":24,"spread":0,"opacity":0.7}
}
ββ Multi-color Donut Ring recipe βββββββββββββββββββββββββββββββββββββββββββ
Stack three ellipses at the same x/y with different arc angles and stroke colors:
{"type":"ellipse","x":50,"y":250,"width":160,"height":160,"noFill":true,
"stroke":"#10B981","strokeWidth":16,"arcStartAngle":0,"arcEndAngle":120,"arcInnerRadius":0.68}
{"type":"ellipse","x":50,"y":250,"width":160,"height":160,"noFill":true,
"stroke":"#F59E0B","strokeWidth":16,"arcStartAngle":130,"arcEndAngle":230,"arcInnerRadius":0.68}
{"type":"ellipse","x":50,"y":250,"width":160,"height":160,"noFill":true,
"stroke":"#7C3AED","strokeWidth":16,"arcStartAngle":240,"arcEndAngle":350,"arcInnerRadius":0.68}
Returns: {success:bool, nodeIds:[...], count:int, errors:[...]}
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses nested children support, relative coordinate behavior, and the return structure {success, nodeIds, count, errors}. It also reveals that elements support any depth and that x/y are relative to parent frames. Since no annotations are provided, this is substantial disclosure of behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized with clear sections, code examples, and recipes. It front-loads the primary purpose and key capability, then details properties systematically. While lengthy, every section provides actionable information for an agent to construct valid batch_create calls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity of the tool (multiple element types, nested children, many optional properties), the description covers all necessary dimensions: supported types, properties, recipes, and return format. With no output schema, it explains what the tool returns. The inclusion of 'errors' in the return value also anticipates failure cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'elements' as an array of objects with no property descriptions (0% coverage). The tool description compensates extensively by documenting all supported element types (frame, rectangle, ellipse, vector, text, line), their properties, and providing multiple copy-paste recipes with concrete JSON examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create MULTIPLE Figma elements in a SINGLE round-trip' and declares it 'THE PRIMARY TOOL β use it for ALL designs,' clearly specifying the verb+resource and distinguishing it from sibling single-element creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'THIS IS THE PRIMARY TOOL β use it for ALL designs,' providing clear when-to-use guidance. It also describes the screenshotβFigma workflow, indicating the intended use case, and differentiates from sibling tools by emphasizing multi-element creation and nesting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_canvasA
Remove ALL elements from the current Figma page (clean slate).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of disclosing behavioral traits. It states the action (remove all elements) and scope (current page), but fails to mention irreversibility, potential data loss, or any warnings. For a destructive tool, this is a significant gap; an agent would not know to warn the user that the operation is permanent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action ('Remove ALL elements') and adds a helpful parenthetical ('clean slate'). There is no redundancy or filler; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, no output schema), but it is a destructive operation. The description specifies the scope ('current Figma page') but omits critical operational details like irreversibility or whether confirmation is required. Given the lack of annotations, the description is minimally viable but not complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description adds no parameter-level meaning beyond the schema. With 0 parameters, the baseline is 4 because there is nothing to clarify. The description correctly focuses on the tool's effect rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Remove ALL elements') and the scope ('from the current Figma page'). It distinguishes itself from the sibling creation tools (create_line, create_frame, etc.) by being the only tool that deletes content, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'clean slate' gives clear context for when to use the toolβwhen the agent needs to clear the entire page. There are no explicit exclusions or alternatives, but the sibling tools are all creation-focused, making this tool's role distinct. It lacks an explicit 'use this when' statement, but the usage is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ellipseB
Create a circle or ellipse. Equal width/height = perfect circle.
Arc / Donut / Pie segment support:
arcStartAngle float degrees, 0=top(12 o'clock), clockwise. Default 0.
arcEndAngle float degrees, 0=top(12 o'clock), clockwise. Default 360.
arcInnerRadius float 0=full pie, 0.5-0.8=donut ring thickness.
ββ Multi-color donut ring recipe ββββββββββββββββββββββββββββββββββββββββββ
Stack three overlapping ellipses with different arcStart/End and stroke colors:
Green arc: arcStartAngle=0, arcEndAngle=120, arcInnerRadius=0.7, stroke='#10B981'
Orange arc: arcStartAngle=120, arcEndAngle=220, arcInnerRadius=0.7, stroke='#F59E0B'
Purple arc: arcStartAngle=220, arcEndAngle=360, arcInnerRadius=0.7, stroke='#7C3AED'
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | Ellipse | |
| width | No | ||
| height | No | ||
| noFill | No | ||
| shadow | No | ||
| stroke | No | ||
| opacity | No | ||
| gradient | No | ||
| hexColor | No | #FF0000 | |
| arcEndAngle | No | ||
| fillOpacity | No | ||
| strokeWidth | No | ||
| arcStartAngle | No | ||
| strokeOpacity | No | ||
| arcInnerRadius | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains angle conventions (0=top, clockwise) and arcInnerRadius semantics, which is useful. However, it does not disclose return behavior, side effects, or interactions with existing canvas elements, leaving gaps for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, with the main purpose front-loaded followed by arc parameter details and a concrete recipe. The recipe is useful but slightly verbose, and the decorative line could be trimmed. Overall, it earns its place without excessive bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 17 parameters, no output schema, and no annotations, the description is far from complete. It covers only a subset of parameters and lacks information on return values, canvas behavior, or prerequisites. The recipe adds practical value but does not fill the gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for 17 parameters. It only explains arcStartAngle, arcEndAngle, arcInnerRadius, and implicitly width/height. Many parameters like shadow, gradient, fillOpacity, and strokeOpacity remain undefined, which is insufficient given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a circle or ellipse' with a specific note that equal width/height produces a perfect circle. This distinguishes it from sibling tools like create_rectangle and create_line, and the mention of arc/donut support adds further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for circles/ellipses and provides a detailed recipe for multi-color donut rings, but it does not explicitly state when to use this tool versus alternatives like create_rectangle or when not to use it. The recipe is a concrete example, but no exclusions or alternative comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_frameA
Create a Figma Frame (artboard/container).
Args:
name, x, y, width, height: basics
hexColor: fill hex e.g. '#0D1117'
fillOpacity: 0β1 (use 0.05β0.15 for glass panes)
cornerRadius: rounded corners px
stroke/strokeWidth/strokeOpacity: border
shadow: {color, x, y, blur, spread, opacity}
blur: layer blur radius
gradient: {angle:0-360, stops:[{color,position,opacity}]}
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| blur | No | ||
| name | No | Frame | |
| width | No | ||
| height | No | ||
| shadow | No | ||
| stroke | No | ||
| opacity | No | ||
| gradient | No | ||
| hexColor | No | #FFFFFF | |
| fillOpacity | No | ||
| strokeWidth | No | ||
| clipsContent | No | ||
| cornerRadius | No | ||
| strokeOpacity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it mostly lists parameters. It does not mention side effects, insertion behavior, selection context, z-order, or return values. The only behavioral tip is the glass-pane opacity guidance, which is useful but insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear one-sentence purpose, followed by a compact parameter list. Each line is terse and informative, but the list is long due to 16 parameters. No filler or redundant explanation exists, though the 'basics' group could be more explicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 16 parameters, no annotations, and no output schema, so the description must provide broader context. While parameter semantics are rich, the description omits critical contextual information such as where the frame is created, whether it becomes the active container, how children attach, and what the tool returns. This is a significant gap for a complex creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description carries the full burden for parameters. It covers 14 of 16 parameters with meaningful details: hexColor format, fillOpacity range with a practical tip, gradient structure with angle/stops, shadow fields, and blur definition. It misses opacity and clipsContent, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line 'Create a Figma Frame (artboard/container)' states a specific verb and target resource, clearly distinguishing frames from sibling tools like create_rectangle, create_ellipse, and create_text. The parenthetical '(artboard/container)' further clarifies the intended role of a frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as an artboard or container, but it does not explicitly state when to prefer create_frame over siblings such as create_rectangle or batch_create. No alternative tools are named, and there are no when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lineC
Create a horizontal divider line.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | Line | |
| width | No | ||
| stroke | No | #FFFFFF | |
| opacity | No | ||
| strokeWidth | No | ||
| strokeOpacity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the creation action. It does not mention side effects, canvas interaction, or any non-obvious behavior like whether it adds a new element or modifies existing ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and is concise, but it is too under-specified to be considered appropriately sized for an 8-parameter tool. It earns its place for purpose clarity but omits essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 optional parameters, no annotations, no output schema), the description is severely incomplete. It provides no context about defaults, rendering, or how the line appears, making it insufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have no schema descriptions (0% coverage), and the description does not compensate by explaining any parameter meanings or relationships. The word 'horizontal' implies the line's orientation but gives no insight into x, y, width, stroke, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Create') and resource ('horizontal divider line'), which differentiates it from sibling tools like create_rectangle or create_text. It conveys the exact purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is providedβthe description does not indicate when to use this tool versus alternatives, nor does it mention any prerequisites or context. A clear gap for a creation tool among many sibling creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rectangleB
Create a styled rectangle. Full glassmorphism support.
Glassmorphism recipe:
hexColor='#FFFFFF', fillOpacity=0.08, cornerRadius=16,
stroke='#FFFFFF', strokeOpacity=0.15, strokeWidth=1,
backgroundBlur=20,
shadow={color:'#000',x:0,y:8,blur:32,spread:0,opacity:0.4}
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| blur | No | ||
| name | No | Rectangle | |
| width | No | ||
| height | No | ||
| noFill | No | ||
| shadow | No | ||
| stroke | No | ||
| opacity | No | ||
| gradient | No | ||
| hexColor | No | #FF0000 | |
| fillOpacity | No | ||
| innerShadow | No | ||
| strokeWidth | No | ||
| cornerRadius | No | ||
| strokeOpacity | No | ||
| backgroundBlur | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only mentions creation and styling; it does not address side effects, return values, canvas requirements, or reversibility. The glassmorphism recipe is a style hint rather than a behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a compact recipe block, with no redundant content. It is front-loaded with the purpose and provides a structured example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 18 parameters and no output schema or annotations, the description covers only the glassmorphism scenario. It lacks information about other styling options, return values, or behavior beyond creation, making it incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 18 parameters with 0% coverage from the description. However, the glassmorphism recipe provides concrete values for 8 parameters (hexColor, fillOpacity, cornerRadius, stroke, strokeOpacity, strokeWidth, backgroundBlur, shadow), which adds semantic meaning for those parameters in context. Other common parameters (x, y, width, height) remain unexplained but are inferable. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a styled rectangle' with a specific verb and object, and adds 'Full glassmorphism support' to distinguish this from shape-creation siblings like create_line or create_ellipse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for rectangles needing styling, especially glassmorphism, but does not explicitly contrast with alternatives (e.g., when to use create_vector instead) nor provide exclusion criteria. The recipe gives a concrete scenario but no explicit 'use when' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_textB
Create a text node with full typography control.
fontStyle: 'Regular'|'Medium'|'SemiBold'|'Bold'|'ExtraBold'|'Light'
fontSize: 10-14 captions, 16-20 body, 24-48 headings, 56-96 hero
letterSpacing: 1-4 for uppercase labels
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | Text | |
| width | No | ||
| content | No | Text | |
| opacity | No | ||
| fontSize | No | ||
| hexColor | No | #FFFFFF | |
| fontStyle | No | Regular | |
| textAlign | No | left | |
| lineHeight | No | ||
| letterSpacing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden for behavioral disclosure. However, it only states the action ('create') and omits any details about side effects, permissions, reversibility, or return behavior. For a tool with no annotations, this leaves significant ambiguity about what happens when the tool is invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear one-sentence purpose followed by compact typography tips. Every sentence earns its place, and the formatting makes the key parameter guidance easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, no output schema, and no annotations, the description is far from complete. It covers only three parameters' semantics and provides no information about return values, error scenarios, or what an agent should expect after execution. The tool is more complex than the description supports.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so the description must compensate for parameter semantics. It adds meaningful guidance for three parameters (fontStyle allowed values, fontSize contextual ranges, letterSpacing use case) but leaves nine other parameters unaddressed. The provided hints are valuable for the core typography controls, making this a partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a text node with full typography control,' using a specific verb and resource that distinguishes it from sibling tools like create_line or create_frame. It unambiguously communicates 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating text but does not explicitly compare with alternatives or state exclusions. It does provide useful typography guidelines (fontSize ranges, letterSpacing usage) that help agents choose appropriate parameter values, but lacks explicit 'use this when' or 'not for' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vectorA
Create a vector node from an SVG path string. This is the ONLY way to draw
curves, waves, bezier shapes, custom icons, or area charts in Figma.
pathData: SVG path commands (M, L, C, Q, A, Z, etc.)
ββ Wave / area chart recipe βββββββββββββββββββββββββββββββββββββββββββββββ
Closed path (ends with Z) gets fill β use for area-under-curve charts:
pathData = "M 0,120 C 40,60 80,140 130,80 C 180,20 230,100 290,50
L 290,160 L 0,160 Z"
gradient = {"angle":180, "stops":[
{"color":"#8B5CF6","position":0,"opacity":0.9},
{"color":"#1C1E2A","position":1,"opacity":0}
]}
shadow = {"color":"#7C3AED","x":0,"y":0,"blur":24,"spread":0,"opacity":0.7}
Open path (no Z) with noFill=True + stroke β use for line charts:
pathData = "M 0,80 C 50,20 100,120 150,60 C 200,10 250,80 300,40"
noFill = True
stroke = "#8B5CF6"
strokeWidth = 3
ββ Custom icon / shape ββββββββββββββββββββββββββββββββββββββββββββββββββββ
Any SVG path from Figma's pen tool or icon libraries works directly.
windingRule: 'NONZERO' (default) | 'EVENODD'
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | Vector | |
| width | No | ||
| height | No | ||
| noFill | No | ||
| shadow | No | ||
| stroke | No | ||
| opacity | No | ||
| gradient | No | ||
| hexColor | No | #FFFFFF | |
| pathData | No | M 0 0 L 100 0 | |
| fillOpacity | No | ||
| strokeWidth | No | ||
| windingRule | No | NONZERO | |
| strokeOpacity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden; it explains closed-path fill behavior vs open-path stroke/noFill, gives example gradient and shadow object structures, and mentions windingRule options. It does not disclose return value or coordinate details, but the core behaviors are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear section headers for wave/area chart and custom icon recipes, front-loaded with the core purpose. Despite length, each line provides actionable examples and earning its place; there's no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-param tool with no annotations and no output schema, the description covers the main use cases and key behaviors effectively. It omits return value expectations and some param semantics (width/height auto-sizing), but the rich recipes and concrete examples are sufficient for an agent to invoke the tool correctly in common scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for 16 params, so the description must add meaning; it explains pathData syntax, windingRule values, and demonstrates noFill, stroke, strokeWidth, gradient, and shadow through concrete recipes. Many parameters (x, y, opacity, fillOpacity) are not directly explained but they are self-evident from names/defaults; the key vector-specific parameters are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states it creates a vector node from an SVG path string, with precise scope ('only way to draw curves, waves, bezier shapes, custom icons, or area charts'), clearly distinguishing from sibling line/rectangle/ellipse tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases and recipes (closed path with Z for area-under-curve, open path with noFill+stroke for line charts), and names the tool as the only way for curved/bezier shapes. Does not explicitly mention exclusions like using create_line for straight paths, but the 'only way' framing gives adequate guidance.
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. Dates show when Glama detected each change.
8 tool updates
v0.1.2- First observed
batch_create - First observed
clear_canvas - First observed
create_ellipse - First observed
create_frame - First observed
create_line - First observed
create_rectangle - First observed
create_text - First observed
create_vector
TDQS
Each create_* tool targets a distinct primitive (line, frame, rectangle, text, ellipse, vector), and clear_canvas is unambiguous. However, batch_create subsumes all of them and is described as the primary tool, creating mild overlap or redundancy for single-element creation.
Most tools follow a clear verb_noun pattern (clear_canvas, create_line, create_frame, etc.). The outlier is batch_create, which reverses the expected order (create_batch) and slightly breaks the pattern.
With 8 tools, the count is within a reasonable range for a design-focused server. However, batch_create alone can handle all create_* operations, making the individual create tools somewhat redundant in practice.
The server covers creation of core Figma elements (frames, shapes, text, vectors) and batch generation, plus canvas clearing. Missing are operations to update, delete, or read existing elements, which could be a gap for iterative design workflows, but the primary creation flow is well covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Figma MCP server brings Figma design context directly into your AI workflow.
Connect AI coding agents to Anima Playground, Figma, and your design system.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Build and manage your design system with AI: tokens, themes, components, icons, Figma and code.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables Claude Desktop and other AI tools to interact directly with Figma, allowing for powerful AI-assisted design capabilities through natural language commands.92299653MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude and Cursor to interact directly with Figma to create, modify, and analyze design elements in real-time. It provides a comprehensive suite of tools for document inspection, styling, component management, and automated layout via a bidirectional WebSocket connection.299MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to read Figma design files and automatically map responsive relationships between mobile and desktop screens to generate accurate frontend code. Eliminates manual copy-pasting by providing direct access to design tokens, dimensions, and screen layouts within AI-powered IDEs.-
- AlicenseNot gradedqualityDmaintenanceBridges AI clients to Figma Desktop via Plugin API and WebSocket, enabling real-time design manipulation without rate limits.1,261MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/dynstat/figma-dash-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server