Connectors · Marketing & media
Figma MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Figma and the rest of your systems. It gives your agent 54 Figma actions (43 reads, 7 writes and 4 that wait for a confirmation) and holds the Figma credential itself, so the agent never does. It paces Figma's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "figma.webhooks.list", intent: "check which Figma account is connected"}# Get webhooks by context or plan · read · 1 upstream call- 54actionsin one signed file
- 43readlook, never change
- 7writecreate and update
- 4wait for a yesdestructive, confirmed first
Set up
Connect Figma in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Figma.
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
personal_access_tokenFigma personal access token (`figd_...`), created under Settings > Security > Personal access tokens
account { op: "connections.requirements", service: "figma" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "figma.webhooks.list" }# get webhooks by context or plan · read · 1 upstream callcheck { action: "figma.comments.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Figma at a glance
- Sign-in
- API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
personal_access_token- Limits we pace to
- 10 calls a minute, per connection
- API covered
- Figma API 0.42.0
api.figma.com - Built from
- Figma's documentation, read 19 September 2026OpenAPI spec (GitHub)
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 43 of 43 reads, for up to an hour; a write clears what it affects
- Ready-made plans
- 7 in the store
- Shared entities
- 4, so ask can line Figma up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Figma.
54 actions in 21 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 43readlook, never change
- 7writecreate and update
- 4destructivewait for a confirmation
Library analytics
66 read · 0 write · 0 destructive
Get library analytics component action data · Get library analytics component usage data · Get library analytics style action data · Get library analytics style usage data
Webhooks
63 read · 2 write · 1 destructive
Create a webhook · Get team webhooks (deprecated) · Get webhooks by context or plan · Update a webhook
Files
55 read · 0 write · 0 destructive
Get files in a folder · Get files in a project (deprecated) · Get file metadata · Get file JSON for specific nodes
Dev resources
41 read · 2 write · 1 destructive
Create dev resources · Get dev resources · Update dev resources · Delete dev resource
Comment reactions
31 read · 1 write · 1 destructive
Get reactions for a comment · Add a reaction to a comment · Delete a reaction
Comments
31 read · 1 write · 1 destructive
Get comments in a file · Add a comment to a file · Delete a comment
Component sets
33 read · 0 write · 0 destructive
Get file component sets · Get team component sets · Get component set
Components
33 read · 0 write · 0 destructive
Get file components · Get team components · Get component
13 more areas · 21 actions
- Folders 3
- Styles 3
- Variables 3
- Images 2
- Projects 2
- Activity logs 1
- AI usage 1
- Developer logs 1
- File versions 1
- Oembed 1
- Payments 1
- Users 1
- Webhook requests 1
Top actions
The Figma API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 25 of Figma's 34 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
figma.team_folders.listGet top-level folders in a team | List a team's top-level folders (previously called projects). Each has a null parent_folder_id. | read | content.folder.list62 connectors |
figma.comments.listGet comments in a file | List every comment on a file, including replies. | read | content.file_comment.list12 connectors |
figma.users.meGet current user | Read the authenticated Figma user's ID, handle, profile image and email. | read | identity.user.get399 connectors |
figma.team_projects.listGet projects in a team (deprecated) | List a team's top-level projects. Deprecated by Figma in favour of figma.team_folders.list. | read | content.folder.list62 connectors |
figma.folder_files.listGet files in a folder | List the files held directly in a folder. | read | content.design_file.list3 connectors |
figma.comments.createAdd a comment to a file | Post a comment on a file, optionally pinned to a canvas point, a node or a region, or as a reply. | write | content.file_comment.create11 connectors |
figma.image_fills.listGet image fills | Get download URLs for every user-supplied image used as an image fill in a file. | read | content.file.list77 connectors |
figma.project_files.listGet files in a project (deprecated) | List every file in a project. Deprecated in favour of figma.folder_files.list. | read | content.design_file.list3 connectors |
figma.comments.deleteDelete a comment | Delete a comment. Only the comment's author may delete it. | destructive | content.file_comment.delete9 connectors |
figma.dev_resources.createCreate dev resources | Attach one or more dev resource links to nodes across files. | write | content.file_link.create18 connectors |
figma.dev_resources.listGet dev resources | List the dev resource links attached to a file, optionally narrowed to some nodes. | read | content.file_link.list12 connectors |
figma.webhooks.createCreate a webhook | Subscribe an HTTP endpoint to a Figma event on a team, project or file. | write | automation.webhook.create209 connectors |
Try it
Prompts to paste into Claude.
Each one names the Figma actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Who has access in Figma? List every user and their role.
calls
figma.users.me - Planread
Report on library component, style and variable usage in Figma.
calls
figma.file_components.listfigma.file_component_sets.listfigma.local_variables.listfigma.library_analytics.component_usagesfigma.library_analytics.style_usages+2 more - Planread
Build a developer handoff pack for a Figma file in Figma.
calls
figma.file_meta.getfigma.file_nodes.getfigma.file_components.listfigma.file_styles.listfigma.dev_resources.list+1 more - Writewrite
Add a comment to a file in Figma. Show me exactly what you will send before you save it.
calls
figma.comments.create
The plan store
Ready-made plans for Figma.
7 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.
Audit every file in a project for recent activity
Use it when You need to know which files inside a Figma project have changed recently and which are stale.
Build a developer handoff pack for a Figma file
Use it when An engineer is about to build a screen and needs the file's components, styles, dev links and rendered node images in one pass.
Report on library component, style and variable usage
Use it when A design systems owner asks which components, styles or variables of a library are actually being used.
Triage open comments on a design file
Use it when A design review has piled up comments and you want the matching ones acknowledged and a summary posted back on the file.
Register a webhook for a team and verify it fires
Use it when Someone wants a new Figma team webhook created and proven to deliver, not just registered.
A person decides
Register a event type webhook for team team id pointing at endpoint (team already has number of items).
Attach ticket links to design nodes as dev resources
Use it when Engineering tickets or specs need to be attached to specific Figma nodes as dev resources.
A person decides
Attach number of dev resources dev resource link(s) to name, which already has number of items.
Delete resolved chatter from a file after sign-off
Use it when A file is cluttered with resolved or throwaway comments and someone has agreed they can be removed.
A person decides
Permanently delete every comment matching "marker" from name (up to 100 of the number of items comments read).
account { op: "plans.install", slug: "figma-project-file-audit" }
# then ask for it by name; a schedule can run it on a timetableGovernance for Figma
Destructive actions wait for a yes.
4 Figma actions are destructive. These are all of them:
- Delete a comment
figma.comments.delete - Delete dev resource
figma.dev_resources.delete - Delete a webhook
figma.webhooks.delete - Delete a reaction
figma.comment_reactions.delete
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete a comment?
intent: the user asked me to delete a comment
account { op: "keys.create", name: "figma-agent", allowed_actions: ["figma.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "figma.comments.delete", approver: "[email protected]" }, { match: "figma.dev_resources.delete", approver: "[email protected]" }, { match: "figma.webhooks.delete", approver: "[email protected]" } ]}Cost
What Figma costs on actionlake.
Every Figma action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Figma refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 54 Figma actions
- 54actions pageeach page of a long list is one call
- 43reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Figma action.
54 actions by area: the id your agent calls, what it does, and its effect.
Library analytics6
figma.library_analytics.component_actionsGet library analytics component action datareadfigma.library_analytics.component_usagesGet library analytics component usage datareadfigma.library_analytics.style_actionsGet library analytics style action datareadfigma.library_analytics.style_usagesGet library analytics style usage datareadfigma.library_analytics.variable_actionsGet library analytics variable action datareadfigma.library_analytics.variable_usagesGet library analytics variable usage dataread
Webhooks6
figma.team_webhooks.listGet team webhooks (deprecated)readfigma.webhooks.createCreate a webhookwritefigma.webhooks.deleteDelete a webhookdestructivefigma.webhooks.getGet a webhookreadfigma.webhooks.listGet webhooks by context or planreadfigma.webhooks.updateUpdate a webhookwrite
Files5
figma.file_meta.getGet file metadatareadfigma.file_nodes.getGet file JSON for specific nodesreadfigma.files.getGet file JSONreadfigma.folder_files.listGet files in a folderreadfigma.project_files.listGet files in a project (deprecated)read
Dev resources4
figma.dev_resources.createCreate dev resourceswritefigma.dev_resources.deleteDelete dev resourcedestructivefigma.dev_resources.listGet dev resourcesreadfigma.dev_resources.updateUpdate dev resourceswrite
Comment reactions3
figma.comment_reactions.createAdd a reaction to a commentwritefigma.comment_reactions.deleteDelete a reactiondestructivefigma.comment_reactions.listGet reactions for a commentread
Comments3
figma.comments.createAdd a comment to a filewritefigma.comments.deleteDelete a commentdestructivefigma.comments.listGet comments in a fileread
Component sets3
figma.component_sets.getGet component setreadfigma.file_component_sets.listGet file component setsreadfigma.team_component_sets.listGet team component setsread
Components3
figma.components.getGet componentreadfigma.file_components.listGet file componentsreadfigma.team_components.listGet team componentsread
Folders3
figma.folder_folders.listGet subfolders in a folderreadfigma.folders.get_metaGet folder metadatareadfigma.team_folders.listGet top-level folders in a teamread
Styles3
figma.file_styles.listGet file stylesreadfigma.styles.getGet stylereadfigma.team_styles.listGet team stylesread
Variables3
figma.local_variables.listGet local variablesreadfigma.published_variables.listGet published variablesreadfigma.variables.modifyCreate, modify and delete variableswrite
Images2
figma.image_fills.listGet image fillsreadfigma.images.renderRender images of file nodesread
Projects2
figma.project_meta.getGet project metadata (deprecated)readfigma.team_projects.listGet projects in a team (deprecated)read
Activity logs1
figma.activity_logs.listGet activity logsread
AI usage1
figma.ai_usage.list_dailyGet daily AI credit usageread
Developer logs1
figma.developer_logs.listGet developer logsread
File versions1
figma.file_versions.listGet versions of a fileread
Oembed1
figma.oembed.getGet oEmbed dataread
Payments1
figma.payments.getGet paymentsread
Users1
figma.users.meGet current userread
Webhook requests1
figma.webhook_requests.listGet webhook requestsread
Questions
The Figma MCP server, answered.
Is there a Figma MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 54 Figma actions across library analytics, webhooks, files and dev resources, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Figma.
What do I need to connect Figma?
Figma personal access token (`figd_...`), created under Settings > Security > Personal access tokens. The free call account { op: "connections.requirements", service: "figma" } lists exactly what to paste.
Can an AI agent delete or change things in Figma?
Only if its key allows it, and only with an explicit confirmation. 4 Figma actions are destructive, including delete a comment, delete dev resource and delete a webhook. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Figma API limit?
actionlake paces every call to the limits in the Figma service file: 10 calls a minute per connection. Repeated reads are answered from cache (43 Figma actions can be), which never reaches Figma.
What does a Figma action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (54 Figma actions page). Cache hits, searches, dry runs and calls Figma refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Figma API does it cover?
The Figma API 0.42.0 at api.figma.com. It is built from Figma's documentation as read on 19 September 2026. 54 actions in 21 areas, each one in the signed service file (version 1.0.0).
Does actionlake keep my Figma data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Figma credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Figma today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.