post_comment
Add comments to specific nodes in Figma files by specifying the file key, node ID, message, and pin coordinates, enabling precise design feedback integration.
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 | |
| message | Yes | The comment message | |
| node_id | No | The ID of the node to comment on. Node ids have the format `<number>:<number>` | |
| 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)The primary handler function for the 'post_comment' tool. It invokes the helper function to post the comment via Figma API and returns the result as tool content.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)Defines the Tool object for 'post_comment' including name, description, and detailed inputSchema for validation.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)Registers 'post_comment' (as POST_COMMENT) in the list of tools provided to the ListToolsRequest handler.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ADD_FIGMA_FILE, VIEW_NODE, READ_COMMENTS, POST_COMMENT, REPLY_TO_COMMENT], }));
- index.ts:280-289 (registration)Dispatch logic in the CallToolRequest handler that routes 'post_comment' calls 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)Helper function that performs the actual HTTP POST to Figma's comments API endpoint to create a comment.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; }