developer-toolsoauth2

Figma

Design files, prototypes, team libraries.

Verdict

Figma via MCP is the integration that lets the model see your designs, not just talk about design abstractly. Pull a frame, get its component tree, read the auto-layout settings, generate spec from it — bridging the design / engineering gap with a model in the middle. What we notice: the read story is real. The model can fetch a frame, list its components, summarise variants, generate code skeletons that approximate the layout. It can answer "what colours are used in the brand palette" or "list the icons in the icon library" reliably. The write story (creating new frames, modifying components) is more limited — Figma's API is read-leaning, and the model can suggest edits but mostly can't apply them. Best for: design-to-code handoff (give the model a frame, get a React/SwiftUI/Compose stub); design system audits ("which components are used in this file, which are missing from the library"); spec generation for QA; documentation of component variants. Avoid for: authoring net-new designs via the model (Figma's design tools are still the right interface for that); design-system maintenance tasks that require precise edits; workflows where the design fidelity matters more than the structural extract. Practical frame: free with a Figma account; the integration uses a Figma personal access token or OAuth. The model token cost on a "spec this frame" run is meaningful ($0.10-0.50) because frames are large objects — but cheaper than 30 minutes of design-engineering Q&A.

Common use cases

  • Post design feedback from standup chat
  • Create webhooks for file update notifications
  • Batch-update design tokens across components
  • Attach dev tickets to specific frame nodes
  • React to comments without opening Figma

Integration

Vendor
Figma
Category
developer-tools
Auth
OAUTH2
Tools
49
Composio slug
figma

Tools

  • Add a comment to a file

    Posts a new comment to a figma file or branch, optionally replying to an existing root comment (replies cannot be nested); `region height` and `region width` in `client meta` must be positive if defining a comment region.

  • Add a reaction to a comment

    Posts a specified emoji reaction to an existing comment in a figma file or branch, requiring valid file key and comment id.

  • Create a webhook

    Creates a figma webhook for a `team id` to send post notifications for an `event type` to a publicly accessible https `endpoint`; an initial ping is sent unless `status` is `paused`.

  • Create dev resources

    Creates and attaches multiple uniquely-urled development resources to specified figma nodes, up to 10 per node.

  • Create, modify, or delete variables
    destructive

    Manages variables, collections, modes, and their values in a figma file via batch create/update/delete operations; use temporary ids to link new related items in one request and ensure `variablemodevalues` match the target variable's `resol

  • Delete a comment
    destructive

    Deletes a specific comment from a figma file or branch, provided the authenticated user is the original author of the comment.

  • Delete a reaction
    destructive

    Deletes a specific emoji reaction from a comment in a figma file; the user must have originally created the reaction.

  • Delete a webhook
    destructive

    Permanently deletes an existing webhook, identified by its unique `webhook id`; this operation is irreversible.

  • Delete dev resource
    destructive

    Deletes a development resource (used to link figma design elements to external developer information like code or tasks) from a specified figma file.

  • Design tokens to tailwind

    Convert design tokens to tailwind css configuration. takes the output from extractdesigntokens and generates: - tailwind.config.ts/js with theme extensions - optional globals.css with font imports note: shadow colors can be provided in eith

  • Detect background

    Detect background layers for selected nodes. uses geometric analysis, z-index ordering, and visual properties to identify potential background layers.

  • Discover Figma Resources

    🔍 smart figma resource discovery - never guess ids again! 🎯 easiest method: just paste any figma url to get all ids: • file urls: https://www.figma.com/file/abc123/design → get file key • design urls: https://www.figma.com/design/abc123/d

  • Download Figma Images

    Download images from figma file nodes. renders specified nodes as images and downloads them using mercury's filedownloadable infrastructure. supports png, svg, jpg, and pdf formats.

  • Extract design tokens

    Extract design tokens from figma files. combines styles, variables, and extracted values to create a comprehensive design token system.

  • Extract Prototype Interactions

    Extract prototype interactions and animations from figma files. analyzes the prototype data to extract: - user interactions (clicks, hovers, etc.) - transition animations - component variant states - user flows and navigation

  • Get activity logs

    Retrieves activity log events from figma, allowing filtering by event types, time range, and pagination.

  • Get a webhook

    Retrieves detailed information about a specific webhook by its id, provided the webhook exists and is accessible to the user.

  • Get comments in a file

    Retrieves all comments from an existing figma file, identified by a valid `file key`, returning details like content, author, position, and reactions, with an option for markdown formatted content.

  • Get component

    Get component data with automatic simplification. returns clean, ai-friendly component structure.

  • Get component set

    Retrieves detailed metadata for a specific published figma component set using its unique `key`.

  • Get current user

    Retrieves detailed information for the currently authenticated figma user.

  • Get dev resources

    Retrieves development resources (e.g., jira/github links) for a figma main file, optionally filtering by specific node ids.

  • Get file components

    Retrieves published components from a figma file, which must be a main file (not a branch) acting as a library.

  • Get file component sets

    Retrieves all published component sets from the specified figma main file (file key must not be for a branch).

  • Get file json

    Get figma file data with automatic simplification. this enhanced version automatically transforms verbose figma json into clean, ai-friendly format with: - css-like property names - deduplicated variables - removed empty values - 70%+ size

  • Get files in a project

    Fetches a list of files in a figma project, optionally including branch metadata.

  • Get file styles

    Retrieves a list of published styles (like colors, text attributes, effects, and layout grids) from a specified main figma file (not a branch).

  • Get image fills

    Retrieves temporary (14-day expiry) download urls for all image fills in a figma file; requires `imageref` from `paint` objects to map urls.

  • Get library analytics component action data

    Retrieves component insertion and detachment analytics for a specified figma library, groupable by 'component' or 'team' and filterable by a date range (yyyy-mm-dd).

  • Get library analytics component usage data

    Retrieves component usage analytics for a specified figma library file (identified by `file key`), with data groupable by 'component' or 'file'.

  • Get library analytics style action data

    Retrieves style usage analytics (insertions, detachments) for a figma library, grouped by 'style' or 'team'; if providing a date range, ensure end date is not before start date.

  • Get library analytics style usage data

    Retrieves style usage analytics for a figma library (specified by a valid `file key`), allowing data to be grouped by 'file' or 'style'.

  • Get library analytics variable action data

    Retrieves weekly, paginated analytics data on variable insertions and detachments for a specified figma library (identified by `file key`), groupable by 'variable' or 'team', and filterable by an optional date range.

  • Get library analytics variable usage data

    Retrieves paginated analytics data on variable usage from a specified figma library, grouped by 'file' or 'variable', for libraries with enabled analytics.

  • Get local variables

    Retrieves all local/remote variables for a figma file/branch; crucial for obtaining mode-specific values which `/v1/files/{file key}/variables/published` omits.

  • Get payments

    Retrieves a user's payment information for a figma plugin, widget, or community file; the authenticated identity must own the resource.

  • Get projects in a team

    Retrieves projects within a specified figma team that are visible to the authenticated user.

  • Get published variables

    Retrieves variables published from a specified figma file; this api is available only to full members of enterprise organizations.

  • Get reactions for a comment

    Retrieves reactions for a specific comment in a figma file.

  • Get style

    Retrieves detailed metadata for a specific style in figma using its unique style key.

  • Get team components

    Retrieves components published in a specific figma team's library; the team must have published components, otherwise an empty list is returned.

  • Get team component sets

    Retrieves a paginated list of published component sets (collections of reusable ui elements) from a specified figma team's library.

  • Get team styles

    Retrieves a paginated list of published styles, such as colors or text attributes, from a specified figma team's library.

  • Get team webhooks

    Retrieves all webhooks registered for a specified figma team.

  • Get versions of a file

    Retrieves the version history for a figma file or branch, as specified by its `file key`.

  • Get webhook requests

    Retrieves a history of webhook requests for a specific figma webhook subscription; data is available for requests sent within the last seven days.

  • Render images of file nodes

    Renders specified nodes from a figma file as images (jpg, pdf, png, svg), returning a map of node ids to image urls (or `null` for failed nodes); images expire after 30 days and are capped at 32 megapixels (larger requests are scaled down).

  • Update a webhook

    Updates an existing figma webhook, identified by `webhook id`, allowing modification of its event type, endpoint, passcode, status, or description.

  • Update dev resources

    Updates the name and/or url of one or more existing figma dev resources, each identified by its unique `id`.

Setup

Setup guide

  1. 11. In Switchy, open your Space settings and click 'Add Integration'. 2. Search for Figma and click 'Connect'. 3. You'll land on Figma's OAuth consent screen — sign in with your Figma account and authorize Switchy to read and write files, comments, and webhooks for your team. 4. Grant the 'file:read', 'file:write', 'webhooks:write', and 'comments:write' scopes when prompted. 5. After redirect, Switchy confirms the connection and shows which Figma team you linked. 6. Test it by opening a Space, typing '@Figma list recent files', and confirming you see your team's projects. 7. To invoke a tool, @mention Figma in any message — for example '@Figma add comment to file [file-key] saying "Ship this version"' posts directly to that file.

What teammates see: by default, memories from Figma are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.

Works well with

Top models

Compatibility data appears once enough Spaces have used this MCP together with a given model.

How Switchy teams use it

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

Starter prompts

Comment on Latest Mockup

@Figma add a comment to the latest file in project [project-name] saying 'Approved for dev handoff, let's sync on spacing tomorrow.'
Open in a Space →

Set Up Change Webhook

@Figma create a webhook for team [team-id] that sends FILE_UPDATE events to this Space's endpoint.
Open in a Space →

Batch Update Variables

@Figma update all color variables in collection [collection-id] to match the new brand palette: primary #0066FF, secondary #00CC88.
Open in a Space →

Attach Dev Resource

@Figma attach dev resource https://jira.company.com/browse/PROJ-123 to node [node-id] in file [file-key].
Open in a Space →

React to Feedback

@Figma add a thumbs-up reaction to comment [comment-id] in file [file-key].
Open in a Space →

Example outputs

Illustrative - representative of the model's voice and quality, not literal recordings.

Prompt

@figma show me all comments on the design-system-tokens file from the last week that mention color variables

Output

Found 7 comments on design-system-tokens matching your criteria. Three discuss the new semantic color tokens (primary-action, surface-elevated), two flag accessibility contrast issues in the dark mode palette, and two request documentation for the gradient variables. Most recent comment from Sarah Chen 2 days ago: 'Should we alias these to the primitive tokens or keep them independent?' All comments include thread context and timestamps for follow-up.

Notes

This example shows Figma's comment-retrieval capabilities paired with AI filtering. Requires read:comment OAuth scope. The MCP returns raw comment data; the AI interprets 'mentions color variables' by scanning comment text. Useful for design-system audits, but won't catch comments on frames/layers without explicit text matches.

Prompt

@figma create a dev resource linking the Button component in our library to the React implementation in GitHub, then add a comment tagging the eng team

Output

Created dev resource on Button component (node ID: 123:456) with URL https://github.com/acme/ui/blob/main/src/Button.tsx and name 'React Implementation'. Posted comment: '@eng-team React component now linked directly in Figma — props match design tokens 1:1.' The resource appears in Figma's Dev Mode inspect panel, and the comment notifies all tagged users. Both actions logged to your team's activity feed.

Notes

Demonstrates write capabilities: dev resources bridge design-to-code, and comments notify collaborators. Requires file:write and comment:write scopes. Side-effect: the comment is permanent and visible to all file viewers. Dev resources support up to 10 URLs per node; exceeding this returns a 400 error.

Prompt

@figma compare the color variables in our staging file versus production, then draft a migration plan for any mismatches

Output

Retrieved 42 color variables from staging (file ABC123) and 38 from production (file XYZ789). Found 4 discrepancies: staging adds `accent-purple` and `warning-amber`, production still uses deprecated `alert-red` and `highlight-yellow`. Staging's `surface-elevated` uses a different hex value (#F5F5F7 vs #F0F0F2). Draft migration: (1) create the 2 new variables in production via batch operation, (2) alias old names to new for backwards compatibility, (3) update 14 components referencing deprecated tokens. Estimated 2-hour design-system sync required.

Notes

Showcases variable-management tools plus AI synthesis. The MCP fetches variable collections from both files; the AI diffs them and proposes a plan. Requires variables:read scope (variables:write needed to execute the plan). Variable operations are batched—up to 1000 changes per request—but complex migrations may need multiple calls to stay under Figma's rate limits.

Use-case deep-dives

Design QA at product handoff

When Figma MCP closes the designer-engineer gap

A 6-person product team ships features every two weeks. Engineers pull specs from Figma, but questions pile up in Slack threads that designers answer hours later. The Figma MCP lets the team's shared AI agent read file metadata, post clarifying questions as comments, and attach dev resources (Storybook links, implementation notes) directly to nodes—all without leaving the chat. The agent can also pull variable definitions to confirm token usage before a PR goes up. This works when your design system lives in Figma and handoffs happen multiple times a week. If your team uses Figma only for mockups and never comments in-file, the MCP is overkill—stick with screenshot uploads. For teams doing continuous delivery with a living design system, this MCP turns Figma into a two-way collaboration surface instead of a one-way export tool.

Customer feedback routing from support

How Figma webhooks automate feature request triage

A 3-person support team fields 40+ feature requests a week. They log patterns in a spreadsheet, then manually tag designers in Figma files once a month. The Figma MCP's webhook tooling lets the team's AI agent subscribe to file updates and comment activity, then cross-reference new designs against the request backlog. When a designer publishes a prototype that matches a logged request, the agent posts a comment tagging the support lead and links the original ticket. This saves 2-3 hours of manual triage per sprint. The threshold: your team must already use Figma comments as a source of truth. If designers work in branches and never publish to shared files, webhooks fire on noise you don't care about. For support-driven product teams with active Figma collaboration, this MCP closes the loop between customer voice and design iteration without adding a new tool.

Design system audit across repos

When variable management scales beyond manual updates

A 10-person engineering org maintains 8 repos that consume design tokens from Figma. A designer updates the primary color palette, but 4 repos still reference the old hex values two weeks later. The Figma MCP's variable batch operations let the team's AI agent read the current token set, compare it against code, and flag drift in a daily standup summary. The agent can also create new variables when a designer describes a token change in chat, then confirm the update landed in Figma before engineers start a refactor. This works when your design system is the source of truth and token changes happen at least monthly. If your tokens live in code and Figma is just a visual reference, the MCP adds complexity you don't need. For teams doing design-system-first development with Figma as the canonical source, this MCP prevents the silent drift that breaks visual consistency.

Frequently asked

What can Switchy do with Figma MCP?

Switchy's Figma MCP lets your AI agents read designs, post comments, manage dev resources, create webhooks, and manipulate variables across files and branches. It's useful for automating design handoff tasks, syncing design tokens to code, or building bots that comment on review cycles. The MCP doesn't edit canvas objects directly — it works with metadata, comments, and developer-facing resources.

What OAuth scopes does Figma MCP request?

Figma OAuth typically requests file read/write, comment write, webhook management, and variables access. You'll authenticate once in Switchy; the token covers all 49 tools. If your Figma workspace has SSO or restricted API access, check with your admin before connecting — some orgs lock down OAuth apps by default.

Can Figma MCP edit design layers or create new frames?

No. The MCP reads file structure and metadata but doesn't modify canvas content. You can't add rectangles, change fill colours, or duplicate frames. For that, use Figma's REST API directly or the desktop plugin API. Switchy's MCP is built for comment workflows, dev resource tagging, and variable management — not visual design automation.

How is this different from just using Figma's API?

Figma's REST API requires you to write auth flows, parse JSON responses, and handle pagination yourself. Switchy's MCP wraps those calls into natural-language tools your AI agents can invoke directly. If you're already scripting Figma in Python or Node, stick with the API. If you want agents to comment on files or sync variables without writing code, use the MCP.

Who on the team should connect Figma to Switchy?

Whoever owns the Figma workspace or has admin rights to approve OAuth apps. The connected account's permissions determine what the MCP can access — if they can't edit a file, neither can Switchy. For shared workflows, connect a service account or bot user so the integration doesn't break when someone leaves.

Compare with

Compare with anything else →
Data last verified 7 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.