Skip to main content
Glama
dynstat

Figma Dash MCP Server

by dynstat

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:

  1. Figma Plugin (figma-plugin): Runs inside your Figma drawing canvas. It hosts a hidden HTTP polling client to receive instructions.

  2. 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 (port 49901).


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 | sh

Windows (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.

  1. Download or clone this repository.

  2. Open your Figma Desktop App.

  3. Right-click anywhere in your design canvas > Plugins > Development > Import plugin from manifest.

  4. Select the manifest.json file inside the figma-plugin/ folder.

  5. 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:

  1. Open up figma_dash_mcp_server/server.py and write a new @mcp.tool() function.

  2. Have the python tool send a new JSON method (like create_circle) over the send_to_figma background thread.

  3. Open figma-plugin/code.js and add an else if (toolName === 'create_circle') block to physically execute the drawing via the Figma Plugin API.

Available Tools

8 tools
batch_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:[...]}
ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'
ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
nameNoEllipse
widthNo
heightNo
noFillNo
shadowNo
strokeNo
opacityNo
gradientNo
hexColorNo#FF0000
arcEndAngleNo
fillOpacityNo
strokeWidthNo
arcStartAngleNo
strokeOpacityNo
arcInnerRadiusNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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}]}
ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
blurNo
nameNoFrame
widthNo
heightNo
shadowNo
strokeNo
opacityNo
gradientNo
hexColorNo#FFFFFF
fillOpacityNo
strokeWidthNo
clipsContentNo
cornerRadiusNo
strokeOpacityNo

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
nameNoLine
widthNo
strokeNo#FFFFFF
opacityNo
strokeWidthNo
strokeOpacityNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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}
ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
blurNo
nameNoRectangle
widthNo
heightNo
noFillNo
shadowNo
strokeNo
opacityNo
gradientNo
hexColorNo#FF0000
fillOpacityNo
innerShadowNo
strokeWidthNo
cornerRadiusNo
strokeOpacityNo
backgroundBlurNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
nameNoText
widthNo
contentNoText
opacityNo
fontSizeNo
hexColorNo#FFFFFF
fontStyleNoRegular
textAlignNoleft
lineHeightNo
letterSpacingNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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'
ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
nameNoVector
widthNo
heightNo
noFillNo
shadowNo
strokeNo
opacityNo
gradientNo
hexColorNo#FFFFFF
pathDataNoM 0 0 L 100 0
fillOpacityNo
strokeWidthNo
windingRuleNoNONZERO
strokeOpacityNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 8 tool updatesv0.1.2
    • First observedbatch_create
    • First observedclear_canvas
    • First observedcreate_ellipse
    • First observedcreate_frame
    • First observedcreate_line
    • First observedcreate_rectangle
    • First observedcreate_text
    • First observedcreate_vector

TDQS

A3.5/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    299
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges AI clients to Figma Desktop via Plugin API and WebSocket, enabling real-time design manipulation without rate limits.
    1,261
    MIT

Latest Blog Posts

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