create_text
Add text elements to Figma designs with precise positioning, styling, and formatting options for labels, annotations, and interface text.
Instructions
Create a new text element in Figma
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X position | |
| y | Yes | Y position | |
| text | Yes | Text content | |
| fontSize | No | Font size (default: 14) | |
| fontWeight | No | Font weight (e.g., 400 for Regular, 700 for Bold) | |
| fontColor | No | Font color in RGBA format | |
| name | No | Optional name for the text node by default following text | |
| parentId | No | Optional parent node ID to append the text to |
Implementation Reference
- src/talk_to_figma_mcp/tools/creation-tools.ts:147-214 (registration)Core registration of the 'create_text' MCP tool, including description, Zod input schema (positions, text, styling options), and handler logic that forwards to Figma's websocket command with defaults and returns structured response.server.tool( "create_text", "Create a new text element in Figma", { x: z.number().describe("X position"), y: z.number().describe("Y position"), text: z.string().describe("Text content"), fontSize: z.number().optional().describe("Font size (default: 14)"), fontWeight: z .number() .optional() .describe("Font weight (e.g., 400 for Regular, 700 for Bold)"), fontColor: z .object({ r: z.number().min(0).max(1).describe("Red component (0-1)"), g: z.number().min(0).max(1).describe("Green component (0-1)"), b: z.number().min(0).max(1).describe("Blue component (0-1)"), a: z .number() .min(0) .max(1) .optional() .describe("Alpha component (0-1)"), }) .optional() .describe("Font color in RGBA format"), name: z .string() .optional() .describe("Optional name for the text node by default following text"), parentId: z .string() .optional() .describe("Optional parent node ID to append the text to"), }, async ({ x, y, text, fontSize, fontWeight, fontColor, name, parentId }) => { try { const result = await sendCommandToFigma("create_text", { x, y, text, fontSize: fontSize || 14, fontWeight: fontWeight || 400, fontColor: fontColor || { r: 0, g: 0, b: 0, a: 1 }, name: name || "Text", parentId, }); const typedResult = result as { name: string; id: string }; return { content: [ { type: "text", text: `Created text "${typedResult.name}" with ID: ${typedResult.id}`, }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error creating text: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } );
- src/talk_to_figma_mcp/tools/index.ts:14-14 (registration)Intermediate registration call to registerCreationTools which includes the create_text tool.registerCreationTools(server);
- src/talk_to_figma_mcp/server.ts:34-34 (registration)Top-level registration call to registerTools aggregator which includes creation tools containing create_text.registerTools(server);
- Type definition for FigmaCommand union including 'create_text' used in websocket communications.| "create_text"