Thoughts

Thoughts

figma-comments-mcp: an MCP server so Claude can read your comments

Aug 2026 · 4 min read
MCPAI WorkflowClaudeOpen Source

Claude Opus 5 helped me build this and write this up.

Every round of design feedback went through me as a copy-paste layer. Open Figma, read the comment thread, retype it into Claude in my own words, wait for the change, go check it against the original comment. For a file with a dozen open threads, that's a dozen trips back and forth before any of it reaches the agent.

The comments already exist, in full, in Figma. There was no reason Claude couldn't read them itself. So I built figma-comments-mcp, an MCP server that hands Claude a frame link and gets back the actual feedback pinned to it.

Two tools, both read-only

list_figma_comments reads the comment threads and Dev Mode annotations on a file, or on one frame within it. Each one resolves to the layer it's pinned to, so a comment reaches Claude as "on 01 · Results — default" instead of a bare node id:

rNK3UkoeLnbBHHYQiv9MW8 · frame 132:5 "01 · Results — default" · 1 thread · 1 annotation

1873426532 · Eun Ji Jung · 2026-08-05 19:22
  on 132:5 "01 · Results — default" FRAME
  have hover states

annotation on 132:258 "Overview" FRAME
  allow for collapsing panels

get_figma_comment_image renders the layer a comment is pinned to, for when the feedback is spatial ("too much space here") or pinned to a pasted screenshot named something useless like image 21.

Neither tool writes anything back. It reads Figma; it never edits a design or posts a reply.

Why there's no reply tool

An earlier version had a reply_to_figma_comment tool. I pulled it. A reply in a comment thread is a statement to a collaborator, not a status update, and I didn't want an agent posting into that conversation on my behalf, worded however it decided to word it. Reading feedback and acting on it is one thing. Speaking to the people who left it is mine to do.

A frame link isn't a file link

I share a link to one frame and expect comments on that frame, not the fifty other threads scattered across the rest of the file. Any Figma URL copied with a frame selected carries a node-id, and the tool scopes to it, descendants included, everything outside excluded, and it always reports how many threads it left out. Before this distinction existed, a frame link and a file link looked identical and every call just returned the whole file.

Annotations get the same care for a different reason. Dev Mode annotations are a separate Figma feature, invisible to the comments API, and easy to leave behind without noticing. A frame holding one comment and one annotation used to report "1 thread," which looked complete and wasn't. Both counts are on the headline now.

Try it

Clone the repo, npm install, npm run build, then point Claude Code or Claude Desktop at dist/index.js with a Figma personal access token scoped to read-only file content and comments. Full setup steps, the token scopes, and a troubleshooting table are in the repo README.

Once it's wired in, paste a frame link and ask Claude to read the comments and apply them, or ask what's still open across the whole file. No more retyping.

Resources

github.com/ejun-9/figma-comments-mcp — the server, setup instructions, and troubleshooting.

Keep reading