Skip to content

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/mcp
the first call
do {  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.

  1. 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
  2. 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
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates 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.0api.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
  1. Library analytics

    6

    6 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

  2. Webhooks

    6

    3 read · 2 write · 1 destructive

    Create a webhook · Get team webhooks (deprecated) · Get webhooks by context or plan · Update a webhook

  3. Files

    5

    5 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

  4. Dev resources

    4

    1 read · 2 write · 1 destructive

    Create dev resources · Get dev resources · Update dev resources · Delete dev resource

  5. Comment reactions

    3

    1 read · 1 write · 1 destructive

    Get reactions for a comment · Add a reaction to a comment · Delete a reaction

  6. Comments

    3

    1 read · 1 write · 1 destructive

    Get comments in a file · Add a comment to a file · Delete a comment

  7. Component sets

    3

    3 read · 0 write · 0 destructive

    Get file component sets · Get team component sets · Get component set

  8. Components

    3

    3 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.

ActionWhat it doesEffectSame name in
figma.team_folders.listGet top-level folders in a teamList a team's top-level folders (previously called projects). Each has a null parent_folder_id.readcontent.folder.list62 connectors
figma.comments.listGet comments in a fileList every comment on a file, including replies.readcontent.file_comment.list12 connectors
figma.users.meGet current userRead the authenticated Figma user's ID, handle, profile image and email.readidentity.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.readcontent.folder.list62 connectors
figma.folder_files.listGet files in a folderList the files held directly in a folder.readcontent.design_file.list3 connectors
figma.comments.createAdd a comment to a filePost a comment on a file, optionally pinned to a canvas point, a node or a region, or as a reply.writecontent.file_comment.create11 connectors
figma.image_fills.listGet image fillsGet download URLs for every user-supplied image used as an image fill in a file.readcontent.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.readcontent.design_file.list3 connectors
figma.comments.deleteDelete a commentDelete a comment. Only the comment's author may delete it.destructivecontent.file_comment.delete9 connectors
figma.dev_resources.createCreate dev resourcesAttach one or more dev resource links to nodes across files.writecontent.file_link.create18 connectors
figma.dev_resources.listGet dev resourcesList the dev resource links attached to a file, optionally narrowed to some nodes.readcontent.file_link.list12 connectors
figma.webhooks.createCreate a webhookSubscribe an HTTP endpoint to a Figma event on a team, project or file.writeautomation.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.

  1. Readread

    Who has access in Figma? List every user and their role.

    callsfigma.users.me

  2. Planread

    Report on library component, style and variable usage in Figma.

    callsfigma.file_components.listfigma.file_component_sets.listfigma.local_variables.listfigma.library_analytics.component_usagesfigma.library_analytics.style_usages+2 more

  3. Planread

    Build a developer handoff pack for a Figma file in Figma.

    callsfigma.file_meta.getfigma.file_nodes.getfigma.file_components.listfigma.file_styles.listfigma.dev_resources.list+1 more

  4. Writewrite

    Add a comment to a file in Figma. Show me exactly what you will send before you save it.

    callsfigma.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.

  1. 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.

    Effect
    read
    Steps
    4 · loops
    Needs
    project id
    Install
    figma-project-file-audit
  2. 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.

    Effect
    read
    Steps
    6
    Needs
    file key and node ids
    Install
    figma-file-handoff-pack
  3. 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.

    Effect
    read
    Steps
    7
    Needs
    file key, start date and end date
    Install
    figma-design-system-usage-report
  4. 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.

    Effect
    write
    Steps
    3 · loops
    Needs
    file key and term
    Install
    figma-triage-file-comments
  5. 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 decidesRegister a event type webhook for team team id pointing at endpoint (team already has number of items).

    Effect
    write
    Steps
    6
    Needs
    team id, event type, endpoint and passcode
    Install
    figma-register-file-webhook
  6. 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 decidesAttach number of dev resources dev resource link(s) to name, which already has number of items.

    Effect
    write
    Steps
    7
    Needs
    file key, node ids and dev resources
    Install
    figma-publish-dev-resources
  7. 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 decidesPermanently delete every comment matching "marker" from name (up to 100 of the number of items comments read).

    Effect
    destructive
    Steps
    5 · loops
    Needs
    file key and marker
    Install
    figma-prune-stale-comments
install a plan
account { op: "plans.install", slug: "figma-project-file-audit" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Figma

Destructive actions wait for a yes.

4 Figma actions are destructive. These are all of them:

  • Delete a commentfigma.comments.delete
  • Delete dev resourcefigma.dev_resources.delete
  • Delete a webhookfigma.webhooks.delete
  • Delete a reactionfigma.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.

dofigma.comments.deleteconfirm_policy: human

Delete a comment?

intent: the user asked me to delete a comment

run suspended · waiting for a named person · key figma-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
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]" }  ]}
Illustrative. Scoped to Figma only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

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

See pricing

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 dataread
  • figma.library_analytics.component_usagesGet library analytics component usage dataread
  • figma.library_analytics.style_actionsGet library analytics style action dataread
  • figma.library_analytics.style_usagesGet library analytics style usage dataread
  • figma.library_analytics.variable_actionsGet library analytics variable action dataread
  • figma.library_analytics.variable_usagesGet library analytics variable usage dataread
Webhooks6
  • figma.team_webhooks.listGet team webhooks (deprecated)read
  • figma.webhooks.createCreate a webhookwrite
  • figma.webhooks.deleteDelete a webhookdestructive
  • figma.webhooks.getGet a webhookread
  • figma.webhooks.listGet webhooks by context or planread
  • figma.webhooks.updateUpdate a webhookwrite
Files5
  • figma.file_meta.getGet file metadataread
  • figma.file_nodes.getGet file JSON for specific nodesread
  • figma.files.getGet file JSONread
  • figma.folder_files.listGet files in a folderread
  • figma.project_files.listGet files in a project (deprecated)read
Dev resources4
  • figma.dev_resources.createCreate dev resourceswrite
  • figma.dev_resources.deleteDelete dev resourcedestructive
  • figma.dev_resources.listGet dev resourcesread
  • figma.dev_resources.updateUpdate dev resourceswrite
Comment reactions3
  • figma.comment_reactions.createAdd a reaction to a commentwrite
  • figma.comment_reactions.deleteDelete a reactiondestructive
  • figma.comment_reactions.listGet reactions for a commentread
Comments3
  • figma.comments.createAdd a comment to a filewrite
  • figma.comments.deleteDelete a commentdestructive
  • figma.comments.listGet comments in a fileread
Component sets3
  • figma.component_sets.getGet component setread
  • figma.file_component_sets.listGet file component setsread
  • figma.team_component_sets.listGet team component setsread
Components3
  • figma.components.getGet componentread
  • figma.file_components.listGet file componentsread
  • figma.team_components.listGet team componentsread
Folders3
  • figma.folder_folders.listGet subfolders in a folderread
  • figma.folders.get_metaGet folder metadataread
  • figma.team_folders.listGet top-level folders in a teamread
Styles3
  • figma.file_styles.listGet file stylesread
  • figma.styles.getGet styleread
  • figma.team_styles.listGet team stylesread
Variables3
  • figma.local_variables.listGet local variablesread
  • figma.published_variables.listGet published variablesread
  • figma.variables.modifyCreate, modify and delete variableswrite
Images2
  • figma.image_fills.listGet image fillsread
  • figma.images.renderRender images of file nodesread
Projects2
  • figma.project_meta.getGet project metadata (deprecated)read
  • figma.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.