figma-meta-mcp
This server provides programmatic control of a running Figma desktop application through a local WebSocket bridge, without needing the Figma REST API or Personal Access Tokens.
Check connection health (
figma_health): Verify the local bridge and Figma Development plugin are connected and responsive.Execute arbitrary JavaScript (
figma_exec): Run any Plugin API code in the Figma plugin main thread, with full access to thefigmaglobal object for inspecting, creating, modifying, or querying document elements. Supports asynchronous operations and returns JSON-serializable data.Get selection information (
figma_selection_info): Retrieve a summary of the current page and selected nodes, including IDs, names, types, and bounding boxes.
This approach bypasses Figma REST API rate limits and the need for personal access tokens.
Provides tools to interact with the Figma desktop app via a plugin, allowing execution of arbitrary Plugin-API JavaScript in the main thread, retrieving health status, and summarizing current page and selection bounds.
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-meta-mcp run JavaScript to list all frames on the current page"
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-meta-mcp
Lightweight Figma MCP in the same mental model as
ae-meta-mcp (ae_exec) and
CocosMetaMCP (cocosmcp_exec): the Cursor agent runs JavaScript inside a
running Figma via figma_exec.
Cursor Agent ──stdio MCP──▶ Node (MCP + bridge :3851)
▲
│ WebSocket /plugin
Figma Development plugin (UI + main)
│
figma.* Plugin APIThis path does not use the Figma REST API + Personal Access Token, so it avoids the Viewer-seat REST monthly rate limits. You need the Figma desktop app and the local Development plugin panel open.
Repo: shinjiyu/figma_mcp
Tools (MVP)
Tool | Description |
| Bridge up? Plugin WebSocket connected? |
| Run arbitrary Plugin-API JS in the main thread; return JSON |
| Summarize current page + selection bounds |
Related MCP server: Figma Bridge MCP
Requirements
Windows / macOS / Linux
Node.js >= 18
Cursor (or any MCP client)
Install
git clone https://github.com/shinjiyu/figma_mcp.git
cd figma_mcp
npm installWire Cursor
npm run setup:cursorPaste the printed snippet into ~/.cursor/mcp.json, then toggle figma-meta-mcp
off/on under Cursor Settings → MCP.
Example:
{
"mcpServers": {
"figma-meta-mcp": {
"command": "node",
"args": ["D:/workspace/figma_mcp/mcp/index.mjs"],
"env": {
"FIGMA_MCP_PORT": "3851"
}
}
}
}Import the Figma plugin
Start Cursor so MCP (and the bridge on
127.0.0.1:3851) is running.Open your design file in the Figma desktop app.
Menu: Plugins → Development → Import plugin from manifest…
Select
plugin/manifest.jsonfrom this repo.Run Plugins → Development → figma-meta-mcp and keep the panel open.
The panel should show Connected · plugin channel ready.
Verify
figma_health→{ ok: true, pluginConnected: true }figma_selection_info→ current page + selectionfigma_exec:
return {
file: figma.root.name,
page: figma.currentPage.name,
count: figma.currentPage.children.length,
};Writing figma_exec code
Runs in the plugin main thread with global
figma.Write an async body; use
returnfor the payload.Return plain JSON (id / name / type / x / y / width / height). Live node proxies are auto-shrunk when possible, but prefer mapping yourself.
Need document bytes for a node?
await figma.getNodeByIdAsync(id)(dynamic-page).
See skills/figma-plugin-api/SKILL.md.
Layout
mcp/ stdio MCP server (index, core, context)
bridge/ HTTP + WebSocket host used by the plugin UI
plugin/ Figma Development plugin (manifest, code.js, ui.html)
scripts/ setup-cursor.mjs
skills/ agent notes for Plugin API
examples/ cursor-mcp.jsonEnv
Variable | Default | Meaning |
|
| Bridge listen port |
| (unset) | Default: bind loopback only ( |
| Figma + | Comma-separated Origin allowlist (not |
|
| Per-job timeout |
Not in scope (yet)
Official remote Figma MCP OAuth (
mcp.figma.com) — use that separately if you want cloud toolsREST PAT wrappers — intentionally avoided for quota reasons
Recipe/promote layer (CocosMetaMCP-style) — add later if needed
License
MIT
Available Tools
3 toolsfigma_execA
Execute JavaScript inside the running Figma plugin main thread (like ae_exec / cocosmcp_exec / Blender execute_blender_code).
The code runs with access to the global figma Plugin API.
Write an async body; the final expression / return value is JSON-serialized back.
Prefer plain data (id/name/type/x/y/width/height). Avoid returning live node proxies.
Example:
return figma.currentPage.selection.map(n => ({ id: n.id, name: n.name, type: n.type }));
Inputs: code (required).
figma_healthA
Check whether the local Figma bridge is up and whether the Development plugin is connected.
Inputs: no named parameters.
figma_selection_infoA
Summarize the current page and selection (id/name/type/bounds).
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
The three tools serve clearly distinct functions: health check, arbitrary code execution, and selection introspection. There is no overlap in purpose, even though figma_selection_info could be replicated via figma_exec; it is presented as a convenience wrapper with a distinct scope.
All tool names share the figma_ prefix, but the second part is not uniformly verb_noun. figma_health and figma_selection_info are noun phrases, while figma_exec is a verb. This is a minor inconsistency, but the pattern is still predictable and readable.
Three tools is a small but reasonable set for a bridge server. The health and selection tools handle occasional meta needs, while figma_exec provides the core general-purpose capability. It is slightly on the lean side, but not insufficient.
figma_exec offers arbitrary access to the Figma Plugin API, making the tool surface effectively complete for any operation. The other two tools cover operational status and a common convenience need. There are no obvious dead ends or missing core workflows.
Maintenance
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.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal-first MCP server that connects AI coding agents to the currently open Figma file through a local plugin bridge, requiring no Figma API token.8MIT
- AlicenseBqualityCmaintenanceLocal MCP server connecting AI clients to the Figma desktop app for inspecting and editing Figma documents via the Plugin API.1616 npm1MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that lets MCP clients inspect and edit the Figma document currently open in the Figma desktop app using a local bridge and development plugin.MIT
- AlicenseAqualityCmaintenanceThe Figma desktop app as an MCP server. Gives AI agents the full Figma Plugin API on your open file: read, write, tokens, components, exports, undo. Runs locally with no cloud API, no token and no quota.1075 npm2MIT