Give Claude
hands inside your Figma file.
Twenty-one MCP tools. One local bridge. Zero Dev Mode seats. Read screens, ship an offline agent handoff bundle, lint design-systems, recolor, clone, and translate frames — directly from any MCP-speaking agent, running on your own machine.
lint_ds({})recolor · apply_tokensBound 14 layers to --color-brand-primary.
Six flows Dev Mode cannot ship.
Each card is a real transcript shape — prompt → tool call → numbers from a real file.
Ship the whole app from one file.
One call returns every screen, component variant, token, CSS var, and Tailwind config. Claude scaffolds the project.
Flip a brand color file-wide.
Swap hex→hex across the whole file, then bind loose fills to variables so the next swap is one line.
A PR-ready design-system lint.
The /design-review slash command ships with Figbridge. Grouped findings, markdown-ready.
Every icon straight into your repo.
Base64 SVG for icons & illustrations, PNG@2x for image fills. Claude decodes and writes them.
Onboarding in five languages.
clone_screen with textReplacements duplicates frames and swaps strings. Fonts auto-loaded.
Claude sees what you select, in real time.
Live bridge auto-pushes on every selection change. Suggests fixes, offers to clone_screen with the fix for side-by-side diff.
Three processes, one localhost port.
The plugin runs inside Figma. The bridge runs on your machine. Your agent connects over stdio. Nothing leaves 127.0.0.1.
① Plugin side
Runs inside Figma's sandbox under documentAccess: "dynamic-page". Pushes payloads on selection-change, answers commands over SSE.
② Bridge side
Tiny Node server. HTTP for the plugin, stdio for the MCP client. Command queue with UUID + Promise + timeout. Persists the last 25 payloads to ~/.figbridge/.
③ Agent side
Any MCP client launches figbridge-mcp as a subprocess. Tools appear alongside your other MCP servers. No keys, no auth, no network.
Twenty-one tools, three jobs.
Every tool runs through the plugin — no REST, no PAT, no Figma account required.
Read
- get_current_selectionHTML / CSS / Tailwind / tokens for the current selection.
- get_last_exportAlias. Last pushed payload.
- list_historyRecent selections, newest first.
- get_tokensTokens + CSS vars + Tailwind config.
- bridge_statusHealth + plugin-connected status.
- diff_sinceHistory after a timestamp, with SHA-1 fingerprints.
- list_pagesNew. Every page in the file, with frame counts.
- list_framesNew. Top-level frames on a page, by id.
Catalog
- list_screensAll top-level frames, categorized.
- list_componentsComponents + sets with variants.
- describe_screenSemantic summary: size, bg, text, components used.
- export_app_specOne-shot JSON spec of the whole file + flows.
- export_all_pagesNew. Walk every page; merged HTML / CSS / tokens.
- list_assetsBase64 SVG / PNG dump of icons, images, illustrations.
- select_nodeSelect & scroll to a node by id or name.
- export_nodeExport a specific node without a user click.
Act & Handoff
- get_agent_bundleNew. Zip: hierarchy.md · components.json · tokens.* · AGENTS.md · CHANGES.md · flow.mmd · ISSUES.md.
- clone_screenDuplicate a frame; optional per-TEXT replacements.
- recolorSwap hex colors across selection / page / file.
- apply_tokensBind loose fills to matching local color variables.
- lint_dsUnbound colors · non-grid spacing · orphans · dup names.
One zip. Everything an agent needs.
The official Figma MCP needs a live server and poisons the agent's context with its own React+Tailwind conventions. Figbridge's bundle is static, offline, token-budgeted, and deterministic — the exact shape agent loops ask for.
figbridge-bundle.zip ├── DESIGN.md # palette · rhythm · do/don't ├── hierarchy.md # indented tree · stable slugs ├── components.json # variants + props schema ├── tokens.json # DTCG-shaped ├── tokens.css # :root + modes ├── flow.mmd # prototype → Mermaid ├── responsive.md # mobile/tablet/desktop merge ├── ISSUES.md # a11y audit the agent won't repeat ├── CHANGES.md # surgical diff since last bundle ├── AGENTS.md # "use→ ├── manifest.json # sha-256 · token counts · stable order └── screenshots/ # 1:1 with hierarchy slugs"
Deterministic slugs
Every node gets a stable path like home/hero/title that survives renames, so the next bundle diffs cleanly.
Three budgets
small (8k) · medium (32k) · large (128k). Files emit in stable-first order so repeated calls hit Anthropic's prompt cache.
Surgical diffs
CHANGES.md tells the agent exactly what to edit — "home/hero/title: 'Welcome' → 'Welcome back'" — instead of re-translating the whole file.
Fuzzy component mapping
Paste src/components/**/*.tsx. Each Figma component is matched to its real file so AGENTS.md can say "use import Button from '@/components/Button'".
.fig file (Draftr iOS App Design): 17 color tokens, nested S1_Home tree, deterministic s1-home / quick-capture / section-label slugs — 43/43 checks pass end-to-end.
Everything they charge for — plus everything they won't ship.
Both let agents read Figma. Only one is free, local, and actually writes back.
Four steps. Three minutes.
One command patches Claude Desktop. Clone the repo to get the plugin. One menu click loads it. You own the whole stack — nothing leaves your machine.
Run the installer
npx figbridge-mcp init
Live on npm and the official MCP registry as io.github.rudraptpsingh/figbridge. Patches Claude Desktop config. No globals, no sudo. Auto-updates on every Claude launch — run npx figbridge-mcp@latest update once if you're on ≤ 0.1.1. Stuck? Run npx figbridge-mcp doctor to reap orphan processes and free port 7331.
Clone & import the plugin
The plugin is not in Figma Community yet — clone the repo locally:
git clone https://github.com/rudraptpsingh/figbridge
Then: Figma · Plugins · Development · Import plugin from manifest… → pick figbridge/plugin/manifest.json. You only do this once.
Restart Claude Desktop
Quit & reopen — Claude only reads its MCP config at launch. Then ask: "what tools does figbridge expose?" Expect 21.
Toggle Live bridge
Run the Figbridge plugin on any frame. Flip Live bridge on. Green dot in the plugin header = connected to the local bridge. The footer shows the port.
Stuck?
- Claude shows "Server disconnected" →
npx figbridge-mcp doctorreaps orphan bridges and probes ports 7331–7340. Then restart Claude. - Plugin says "NO BRIDGE ON 7331–7340" → the bridge isn't running. Quit and reopen Claude Desktop; its launch spawns the bridge. If it still fails, run
doctor. - Running an older install (≤ 0.1.1) →
npx figbridge-mcp@latest updateself-heals the stale npx-cache path. - Prefer to lock a version →
npx figbridge-mcp init --pinopts out of auto-updates.
Figma Dev Mode is $25 a seat. Your agent already lives on your machine.— MIT · 2026 · Rudra Pratap Singh
Figbridge is the part that shouldn't have needed paying for.