figma-comments-mcp
This server lets you fetch, filter, and interact with comments from Figma files directly through Claude Code.
Fetch all comments (
get_all_comments): Retrieve every comment thread in a Figma file, grouped by page and canvas element, with resolved threads collapsed to a count.Fetch unresolved comments (
get_unresolved_comments): Get only threads not marked as resolved in Figma.Fetch comments mentioning you (
get_comments_mentioning_me): Retrieve threads where the Figma token owner is @mentioned.Fetch recent comments (
get_recent_comments): Get threads with activity in the past N hours (default 24, up to 2,160).Reply to a comment (
reply_to_comment): Post a reply to an existing thread by ID (requires a write-scoped Figma token).
All fetch tools support optional filters:
page— Limit to a specific page by name or ID.author— Filter by author (partial, case-insensitive match).search— Filter by keyword (case-insensitive).max_threads— Cap the number of unresolved threads returned (default 50, newest first).
An optional built-in triage skill sorts unresolved comments into categories such as decisions, open questions, waiting-for items, and to-dos.
Fetches comments from Figma files, including unresolved, recent, and threads mentioning the user, and allows replying to threads. Supports filtering by page, author, or keyword search, and provides a triage skill to sort comments by decisions, questions, blocked threads, and to-dos.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@figma-comments-mcp Triage the comments in https://www.figma.com/design/abc123/My-File"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figma Comments MCP
An MCP server for Claude Code that fetches comments from any Figma file link, plus a triage skill that sorts them into what the team needs to do: decisions, open questions, who's waiting on whom, and who owns each to-do.
Tools
Tool | What it returns |
| Every comment thread in the file |
| Threads not yet marked resolved in Figma |
| Threads where you are @mentioned (detected from your token, no config) |
| Threads with activity in the past 24 hours (or a custom |
| Posts a reply to a thread (needs the write scope, see below) |
The fetch tools take a figma.com link (or bare file key) and return threads grouped by the canvas element each comment is pinned to, with authors, replies, @mentions, age, the page it sits on, and a deep link back to the comment in Figma.
Output is deliberately compact to keep Claude's context cost low: resolved threads come back as a count only, messages are capped at 300 characters, and at most max_threads unresolved threads (default 50, newest first) are shown, with a note on how to narrow further. Deep links are built from one pattern in the header rather than repeated per thread.
Every fetch tool also accepts three optional narrowing arguments. In Claude Code, just say it: "unresolved comments on the Homepage page of ", "what has Sarah commented?", "any comments about the pricing table?".
page— one page only, by name ("Homepage") or id ("1:2" / "1-2"). If the name doesn't match, the error lists the file's pages. Figma's comments API itself is file-wide, so comments are anchored via the page's top-level frames; in rare cases a comment pinned to a deeply nested element may not resolve to a page and only appears in unfiltered results.author— threads where this person wrote a message (partial, case-insensitive).search— threads whose text contains a keyword (case-insensitive).
reply_to_comment lets Claude answer a thread for you ("reply 'on it' to that one"). It posts as the token owner and only works if your token has the File comments (write) scope; with a read-only token the fetch tools still work and only replying fails.
Related MCP server: Figma Comments MCP
Setup
Figma token. figma.com → Settings → Security → Personal access tokens. Create one with the File comments scope: read is enough for fetching, write if you also want
reply_to_comment.Save the token. Paste this in the terminal, replacing
your-token-herewith the token you copied:echo "FIGMA_TOKEN=your-token-here" > ~/.figma-comments-mcp.envThat creates a small file in your home folder. The token stays on your machine and is only ever sent to Figma. When the token expires, repeat this step with a new one. (A
FIGMA_TOKENenvironment variable also works and takes precedence, if you prefer that.)Register with Claude Code.
claude mcp add figma-comments -- npx -y figma-comments-mcpOr, running from a clone of this repo:
npm install npm run build claude mcp add figma-comments -- node /path/to/figma-comments-mcp/dist/server.jsUse it. In a Claude Code session:
Triage the comments in https://www.figma.com/design/abc123/My-File
The triage skill
The server fetches and filters; the actual sorting intelligence lives in a skill, a markdown file at .claude/skills/figma-comment-triage/SKILL.md that teaches Claude how to read the threads. It sorts every unresolved thread into four categories, in this order:
Needs a decision — explicit "should we A or B" threads, plus conflicts: because threads arrive grouped by canvas element, the skill compares takes on the same element and flags it when two people argue opposite directions, quoting both positions.
Open questions — unanswered questions, each with who it's waiting on (inferred from @mentions or who spoke last).
Waiting for — threads blocked on something promised or external, with what and how long.
To-dos — actionable requests with an inferred owner, marked unassigned when nobody has picked it up, so tasks don't silently fall to nobody.
Anything older than 7 days gets called out as stale, every item links back to the comment in Figma, and resolved threads are reported as one closing count line.
To get it: copy the .claude/skills/figma-comment-triage folder into your own project's .claude/skills/ folder (the npm package ships only the server, so the skill comes from this repo). Without it, Claude still fetches and sorts comments when asked; the skill is what makes the triage consistent and opinionated. It's also plain markdown, so if you want different categories or rules, edit the file. No rebuild needed.
Quick manual check
Test the fetcher against a real file without going through MCP:
FIGMA_TOKEN=<your-token> npm run probe -- https://www.figma.com/design/abc123/My-FilePrints the token owner, thread counts, and the raw grouped JSON.
Project layout
src/
├── core/ # transport-agnostic: API client, threading, filters
│ ├── figma.ts
│ └── filters.ts
├── tools.ts # MCP tool definitions (Figma client injected)
├── server.ts # local stdio entry point (token from env)
└── probe.ts # manual CLI checkcore/ and tools.ts never touch env vars, the filesystem, or stdio. A future hosted version (Cloudflare Workers + Figma OAuth) only needs a new entry point next to server.ts.
A note from the maker
I'm a designer, and this is my first published developer tool. I built it because I kept opening Figma files to forty comment bubbles with no way to tell which ones actually needed me. It's been solid in my own daily use, but there may be rough edges I haven't hit yet. If something breaks or behaves oddly, open an issue and I'll take a look.
Licence
MIT
Available Tools
5 toolsget_all_commentsGet all commentsA
Fetch every comment thread in a Figma file, grouped by page and the canvas element each thread is pinned to. Resolved threads are returned as a count only. Prefer a narrower tool (unresolved/recent/mentions, or the page argument) when it answers the question.
Inputs: url (required), page, author, search, +1 more.
get_comments_mentioning_meGet comments mentioning meB
Comment threads where the owner of the Figma token is @mentioned.
Inputs: url (required), page, author, search, +1 more.
get_recent_commentsGet recent commentsC
Comment threads with activity in the past N hours (default 24).
Inputs: url (required), page, author, search, +2 more.
get_unresolved_commentsGet unresolved commentsC
Comment threads not yet marked resolved in Figma.
Inputs: url (required), page, author, search, +1 more.
reply_to_commentReply to a commentA
Post a reply to an existing comment thread in a Figma file. Use a thread id from the [brackets] in fetch output as comment_id. Requires the Figma token to have the File comments write scope.
Inputs: url (required), comment_id (required), message (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a clearly distinct subset of comments: all, unresolved, recent, mentions, or replying. No overlap in purpose.
Most tools follow `get_<modifier>_comments` pattern, but `reply_to_comment` breaks the verb prefix convention. Still clear and predictable overall.
Five tools is well-scoped for a Figma comments server, covering core read operations and a write operation without overwhelming.
Reading and replying are covered, but there is no tool to create a new comment thread, which is a notable omission for a comments-focused server.
Related MCP Connectors
The Figma MCP server brings Figma design context directly into your AI workflow.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Official Fibery MCP server: query and update your workspace from any AI client via OAuth.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for the Figma API. Lets AI agents fetch designs, nodes, and rendered images from Figma.2,341 npm-
- AlicenseNot gradedqualityBmaintenanceA lightweight MCP server that adds Figma Comments support to AI assistants, enabling reading, querying, and replying to comments via the Figma REST API.15 npmMIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets Claude read Figma file comments directly, with tools to list comment threads scoped to a frame or file and render images of pinned nodes.15 npm4ISC
- FlicenseNot gradedqualityDmaintenanceCustom MCP server for the Figma REST API that enables inspecting file structures, nodes, styles, components, variables, and exporting images, with optional comment posting. It is read-only except for posting comments and is designed for use with Claude Code.2,341 npm-