post_comment
Add comments to specific elements in Figma files to provide feedback, ask questions, or mark design areas for review.
Instructions
Post a comment on a node in a Figma file
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file_key | Yes | The key of the Figma file | |
| node_id | No | The ID of the node to comment on. Node ids have the format `<number>:<number>` | |
| message | Yes | The comment message | |
| x | Yes | The x coordinate of the comment pin | |
| y | Yes | The y coordinate of the comment pin |
Implementation Reference
- index.ts:229-245 (handler)Primary handler function for the post_comment tool. It calls the Figma API helper and formats the response as MCP CallToolResult.async function doPostComment( fileKey: string, message: string, x: number, y: number, nodeId?: string ): Promise<CallToolResult> { const data = await postComment(fileKey, message, x, y, nodeId); return { content: [ { type: "text", text: JSON.stringify(data, null, 2), }, ], }; }
- index.ts:83-113 (schema)Tool definition for post_comment, including name, description, and detailed input schema.const POST_COMMENT: Tool = { name: "post_comment", description: "Post a comment on a node in a Figma file", inputSchema: { type: "object", properties: { file_key: { type: "string", description: "The key of the Figma file", }, node_id: { type: "string", description: "The ID of the node to comment on. Node ids have the format `<number>:<number>`", }, message: { type: "string", description: "The comment message", }, x: { type: "number", description: "The x coordinate of the comment pin", }, y: { type: "number", description: "The y coordinate of the comment pin", }, }, required: ["file_key", "message", "x", "y"], }, };
- index.ts:138-140 (registration)Registration of the POST_COMMENT tool in the listTools request handler.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ADD_FIGMA_FILE, VIEW_NODE, READ_COMMENTS, POST_COMMENT, REPLY_TO_COMMENT], }));
- index.ts:280-289 (handler)Dispatch handler in CallToolRequestSchema that routes post_comment requests to the doPostComment function.if (request.params.name === "post_comment") { const input = request.params.arguments as { file_key: string; node_id?: string; message: string; x: number; y: number; }; return doPostComment(input.file_key, input.message, input.x, input.y, input.node_id); }
- figma_api.ts:110-131 (helper)Core helper function that performs the actual HTTP POST request to the Figma Comments API.export async function postComment( fileKey: string, message: string, x: number, y: number, nodeId?: string ) { const response = await axios.post( `https://api.figma.com/v1/files/${fileKey}/comments`, { message, client_meta: { node_offset: { x, y }, node_id: nodeId }, }, { headers: { "X-FIGMA-TOKEN": getFigmaApiKey(), "Content-Type": "application/json", }, } ); return response.data; }