Installation Methods & Execution Modes - Complete Comparison
This document clarifies the differences between installation methods and execution modes to help you choose the right setup.Understanding the Architecture
The MCP server has three execution modes and four setup methods:Execution Modes (Where Code Runs)
- Remote Mode - Runs in Cloudflare Workers (cloud, read-only)
- Cloud Mode - Runs in Cloudflare Workers + Cloud Write Relay (cloud, read/write)
- Local Mode - Runs on your machine (Node.js, full capabilities)
Setup Methods (How You Connect)
- Remote SSE/HTTP - URL-based connection (uses Remote Mode, read-only)
- Cloud Mode - Remote endpoint + Cloud Write Relay via Desktop Bridge plugin (uses Cloud Mode)
- NPX - npm package distribution (uses Local Mode)
- Local Git - Source code clone (uses Local Mode)
Authentication Methods (How You Authenticate)
- OAuth - Automatic browser-based auth (Remote SSE only)
- Personal Access Token (PAT) - Bearer token (Remote
/mcpendpoint, Cloud Mode) - Personal Access Token (PAT) - Environment variable (NPX + Local Git)
- Pairing Code - 6-character code to connect Desktop Bridge plugin to cloud relay (Cloud Mode only)
π― Quick Decision Guide
β οΈ Critical: Tool Count Differences
| Mode | Tools Available | Write Access | Needs Node.js | Real-time |
|---|---|---|---|---|
| Local Mode (NPX or Git) | 63+ | Yes | Yes | Yes |
| Cloud Mode (Remote + Relay) | 43 | Yes | No | No |
| Remote Mode (read-only) | 22 | No | No | No |
Bottom line: Remote mode is read-only (52 tools). Cloud Mode adds write access ((52 tools)) without Node.js. Local has everything (63+ tools) including real-time monitoring.
Use NPX Setup (Recommended for Most Users)
- β All 63+ tools including design creation and real-time monitoring
- β
Automatic updates with
@latest - β Desktop Bridge Plugin support (recommended connection β no debug flags needed)
- β Variables without Enterprise plan
- β οΈ Requires Node.js 18+ and
FIGMA_ACCESS_TOKEN(manual, one-time)
Use Cloud Mode (Web AI Clients)
- β (52 tools) β full write access (create, edit, delete) plus REST API reads
- β No Node.js required β only Figma Desktop with the Desktop Bridge plugin
- β Works with Claude.ai, v0, Replit, Lovable, any MCP-capable web platform
- β Variables without Enterprise plan (via Plugin API)
- β οΈ Requires pairing the Desktop Bridge plugin via a 6-character code
- β No real-time selection tracking, document changes, or console streaming
Use Local Git (For Contributors)
- β All 63+ tools including design creation
- β Full source code access
- β Modify and test changes
- β οΈ Requires
FIGMA_ACCESS_TOKEN(manual) - β οΈ Manual updates via
git pull && npm run build
Use Remote Mode (Read-Only Exploration)
- β TRUE zero-setup - Just paste a URL
- β OAuth authentication - No manual tokens
- β Works without Figma Desktop restart
- β Only 9 tools β cannot create or modify designs
- β Cannot use Desktop Bridge plugin
- β Variables require Enterprise plan
Setup Methods Comparison
| Aspect | Remote (read-only) | Cloud Mode | NPX | Local Git |
|---|---|---|---|---|
| Execution | Cloudflare Workers | Cloudflare Workers + Relay | Local Node.js | Local Node.js |
| Code | src/index.ts | src/index.ts + relay | dist/local.js (npm) | dist/local.js (source) |
| Authentication | OAuth (automatic) | PAT + pairing code | PAT (manual) | PAT (manual) |
| Setup Complexity | β Zero-setup | Moderate (plugin + pairing) | Manual token + plugin install | Manual token + plugin install |
| Distribution | URL only | URL + plugin | npm package | git clone |
| Updates | Automatic (server-side) | Automatic (server-side) | @latest auto-updates | Manual git pull + build |
| Figma Desktop | Not required | Required (Desktop Bridge) | Required (Desktop Bridge) | Required (Desktop Bridge) |
| Desktop Bridge | β Not available | β Required for relay | β Available | β Available |
| Node.js Required | No | No | Yes | Yes |
| Source Access | No | No | No | Yes |
| Tools | 22 (read-only) | 43 (read/write) | 57+ (full) | 57+ (full) |
| Use Case | Quick evaluation | Web AI clients | Most users | Developers |
Feature Availability Matrix
| Feature | Remote (read-only) | Cloud Mode | Local Mode | Notes |
|---|---|---|---|---|
| Read Design Data | β | β | β | All modes use Figma REST API |
| Design Creation (write) | β | β | β | Cloud via relay, Local via WebSocket |
| Variable Management | β οΈ | β | β | Remote requires Enterprise. Cloud/Local use Plugin API (any plan) |
| Screenshots | β | β | β | All use Figma REST API |
| Design System Extraction | β | β | β | Variables, components, styles via Figma API |
| Desktop Bridge Plugin | β | β (required) | β | Plugin required for Cloud relay and Local write access |
| Real-time Selection Tracking | β | β | β | Local-only β requires persistent WebSocket |
| Document Change Monitoring | β | β | β | Local-only β requires persistent WebSocket |
| Console Log Streaming | β | β | β | Local-only β zero-latency via WebSocket |
| Console Logs (on-demand) | β | β | β | Remote uses Browser Rendering API |
| OAuth Authentication | β | β | β | Remote SSE only |
| Zero Setup | β | β | β | Remote: just paste URL |
| No Node.js Required | β | β | β | Cloud Mode only needs Figma Desktop + plugin |
| Reliable Component Descriptions | β οΈ | β | β | API has bugs; plugin method is reliable |
| Works Behind Corporate Firewall | β οΈ | β οΈ | β | Remote/Cloud require internet, Local works offline |
| Multi-User Shared Token | β | β | β | Remote uses per-user OAuth |
Legend
- β Available
- β Not Available
- β οΈ Limited/Conditional
Architecture Comparison
Remote Mode Architecture (Read-Only)
- Browser runs in Cloudflareβs infrastructure
- Cannot access
localhoston your machine - OAuth tokens stored in Cloudflare KV
- ~10-30s cold start for first request
- 9 read-only tools
Cloud Mode Architecture (Read/Write via Relay)
- No Node.js required β relay runs entirely in Cloudflare Workers
- Desktop Bridge plugin connects to the cloud relay via WebSocket
- Pairing flow: AI generates 6-character code β user enters in plugin β connected
- (52 tools): 1 pairing + 27 write tools + 15 REST API reads
- Variables work on any Figma plan (uses Plugin API, not Enterprise REST API)
- Pairing code expires after 5 minutes
Local Mode Architecture (Full Capabilities)
- Install the Desktop Bridge Plugin once β no debug flags needed
- Server automatically selects an available port (9223β9232) for multi-instance support
- All 63+ tools work through WebSocket
- Plugin can access local variables (no Enterprise API needed)
- Instant console log capture via WebSocket
- Real-time selection tracking and document change monitoring
Tool Availability by Mode
Core Tools Available in Both Modes
| Tool | Remote | Local | Notes |
|---|---|---|---|
figma_navigate | β | β | Remote navigates cloud browser, Local navigates Figma Desktop |
figma_get_console_logs | β | β | Both capture logs, Local has lower latency |
figma_watch_console | β | β | Real-time log streaming |
figma_take_screenshot | β | β | Both use Figma REST API |
figma_reload_plugin | β | β | Reloads current page |
figma_clear_console | β | β | Clears log buffer |
figma_get_status | β | β | Check connection status |
figma_get_design_system_kit | β | β | Full design system in one call β tokens, components, styles, visual specs |
figma_get_variables | β * | β ** | *Enterprise API required. **Can use Desktop Bridge plugin |
figma_get_component | β * | β ** | *Descriptions may be missing. **Reliable via plugin |
figma_get_styles | β | β | Both use Figma REST API |
figma_get_file_data | β | β | Both use Figma REST API |
figma_get_component_image | β | β | Both use Figma REST API |
figma_get_component_for_development | β | β | Both use Figma REST API |
figma_get_file_for_plugin | β | β | Both use Figma REST API |
Key Differences
Variables API:- Remote Mode: Requires Figma Enterprise plan for Variables API
- Local Mode: Can bypass Enterprise requirement using Desktop Bridge plugin
- Remote Mode: Figma REST API has known bugs (descriptions often missing)
- Local Mode: Desktop Bridge plugin uses
figma.getNodeByIdAsync()(reliable)
Prerequisites & Setup Time
Remote (Read-Only)
Prerequisites: None Setup Time: 2 minutes Steps:- Open Claude Desktop β Settings β Connectors
- Click βAdd Custom Connectorβ
- Paste URL:
https://figma-console-mcp.southleft.com/sse - Done β (OAuth happens automatically on first API use)
Cloud Mode
Prerequisites:- Figma Desktop installed
- Desktop Bridge plugin imported and running in your file
- A web AI client connected to
https://figma-console-mcp.southleft.com/mcp(with Figma PAT as Bearer token)
- Connect your web AI client to the
/mcpendpoint with your Figma PAT - Tell your AI to connect to your Figma plugin (natural language)
- AI generates a 6-character pairing code
- In the Desktop Bridge plugin, toggle βCloud Modeβ and enter the code
- Done β β 52 tools with full write access
NPX
Prerequisites:- Node.js 18+
- Figma Desktop installed
- Figma Personal Access Token (get one)
- Get Figma Personal Access Token
- Add to MCP config with
FIGMA_ACCESS_TOKENenv var - Install the Desktop Bridge Plugin (one-time β Plugins β Development β Import from manifest)
- Restart your MCP client
Local Git
Prerequisites:- Node.js 18+
- Git
- Figma Desktop installed
- Figma Personal Access Token (get one)
- Clone repository:
git clone https://github.com/southleft/figma-console-mcp.git - Run
npm install && npm run build:local - Get Figma Personal Access Token
- Configure MCP client JSON config with path to
dist/local.js - Set
FIGMA_ACCESS_TOKENenvironment variable - Install the Desktop Bridge Plugin (one-time β Plugins β Development β Import from manifest)
- Restart your MCP client
Authentication Comparison
Remote SSE - OAuth (Automatic) β Simplest
Method: Remote read-only mode (SSE endpoint) How it works:- First design system tool call triggers OAuth
- Browser opens automatically to Figma authorization page
- User authorizes app (one-time)
- Token stored in Cloudflare KV (persistent across sessions)
- Automatic token refresh when expired
- β TRUE zero-setup - No manual token creation
- β Per-user authentication
- β Automatic token refresh
- β Works with Free, Pro, and Enterprise Figma plans
- β οΈ Requires internet connection
- β οΈ Initial authorization flow required (one-time)
- β Read-only β no write access
Cloud Mode - PAT + Pairing Code
Method: Cloud Mode with write relay How it works:- User creates PAT and provides it as Bearer token when connecting to
/mcpendpoint - AI generates a 6-character pairing code (valid for 5 minutes)
- User enters code in Desktop Bridge plugin (Cloud Mode toggle)
- Relay authenticates the plugin-to-cloud connection
- All write operations flow through the authenticated relay
- β Write access without Node.js
- β Pairing code adds a second factor of trust (plugin must be in the right file)
- β Variables on any Figma plan via Plugin API
- β Manual PAT creation required
- β Pairing code expires after 5 minutes
- β οΈ Must re-pair if connection drops
NPX + Local Git - Personal Access Token (Manual)
Method: Both NPX and Local Git modes How it works:- User creates PAT at https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens
- Set as
FIGMA_ACCESS_TOKENenvironment variable in MCP config - MCP server uses PAT for all API calls
- No automatic refresh (token valid for 90 days)
- β Works offline (for console debugging)
- β No browser-based OAuth flow
- β Simpler for single-user setups
- β Full 63+ tools including real-time monitoring
- β Manual token creation required
- β Must manually refresh every 90 days
- β Single shared token (no per-user auth)
- β Requires Desktop Bridge Plugin (one-time import)
Figma Desktop Bridge Plugin
Required for Both Local Mode and Cloud Mode
The Desktop Bridge Plugin is the bridge between Figma and the MCP server. It communicates via WebSocket β no special Figma launch flags needed, and it persists across Figma restarts.- Local Mode: Plugin connects directly to the local MCP server via WebSocket (ports 9223-9232)
- Cloud Mode: Plugin connects to the Cloudflare relay via WebSocket after pairing with a 6-character code
- Open Figma Desktop (normal launch β no debug flags needed)
- Go to Plugins β Development β Import plugin from manifestβ¦
- Select
figma-desktop-bridge/manifest.jsonfrom the figma-console-mcp directory - Run the plugin in your Figma file β it auto-connects via WebSocket
One-time import. Once imported, the plugin stays in your Development plugins list.What the plugin provides:
| Feature | Without Plugin | With Plugin (Cloud Mode) | With Plugin (Local Mode) |
|---|---|---|---|
| Variables API | Enterprise plan required | β Free/Pro plans work | β Free/Pro plans work |
| Variable data | REST API (limited) | β Full local variables | β Full local variables |
| Component descriptions | Often missing (API bug) | β Always present | β Always present |
| Design creation (write) | β | β Via cloud relay | β Via local WebSocket |
| Data freshness | Cache + API limits | Per-request via relay | β Real-time from Figma |
| Selection tracking | β | β | β Real-time via WebSocket |
| Document change monitoring | β | β | β Real-time via WebSocket |
Plugin Does NOT Work with Remote Read-Only Mode
Remote read-only mode runs in Cloudflare Workers which cannot connect tolocalhost on your machine. The Desktop Bridge Plugin requires either a local MCP server (NPX or Local Git) or Cloud Mode pairing.
When to Switch Modes
Switch from Remote (read-only) β Cloud Mode if:
- β You need to create or modify designs from a web AI client
- β You need variables but donβt have Enterprise plan
- β Component descriptions are missing in API responses
Switch from Remote (read-only) β NPX/Local Git if:
- β You need real-time selection tracking or document change monitoring
- β Youβre developing Figma plugins (need console log streaming)
- β You need the full 63+ tool set
- β You need offline access
Switch from Cloud Mode β NPX/Local Git if:
- β You need real-time selection tracking or document changes
- β You need console log streaming
- β You need MCP Apps (Token Browser, Design System Dashboard)
- β Connection drops between AI turns are disruptive to your workflow
Switch from NPX/Local Git β Cloud Mode if:
- β You want to use web AI clients (Claude.ai, v0, Replit, Lovable)
- β You donβt need real-time monitoring features
- β You canβt or donβt want to install Node.js
Switch from NPX/Local Git β Remote (read-only) if:
- β You got Enterprise plan (Variables API now available)
- β Youβre no longer developing plugins
- β You want zero-maintenance OAuth setup
- β You want per-user authentication
- β You only need read access
Switch from NPX β Local Git if:
- β You want to modify source code
- β You want to test unreleased features
- β Youβre developing the MCP server itself
Switch from Local Git β NPX if:
- β You donβt need source code access
- β You want automatic updates
- β You want simpler distribution (no git operations)
Cost Comparison
All setup methods are completely free:Remote / Cloud Mode (Free - Hosted by Project)
- β Free to use
- β Hosted on Cloudflare Workers
- β No infrastructure costs for users
- β οΈ Shared rate limits (fair use)
NPX (Free - Self-Hosted)
- β Free to use
- β Runs on your machine
- β No external dependencies after setup
- β οΈ Uses your CPU/memory
Local Git (Free - Self-Hosted)
- β Free to use
- β Runs on your machine
- β Full source code access
- β οΈ Uses your CPU/memory
Troubleshooting by Mode
Remote Mode Common Issues
- βOAuth authentication failedβ β Try re-authenticating via auth_url
- βBrowser connection timeoutβ β Cold start (wait 30s, try again)
- βVariables API 403 errorβ β Enterprise plan required (use Cloud Mode or Local Mode instead)
Cloud Mode Common Issues
- Pairing code expired β Ask your AI to generate a new pairing code (codes expire after 5 minutes)
- Connection drops between AI turns β Re-pair by asking your AI to reconnect and entering a fresh code in the plugin
- βCloud Modeβ toggle not visible β Re-import the manifest from
~/.figma-console-mcp/plugin/manifest.json(one-time update to the bootloader version) - Plugin shows βDisconnectedβ in Cloud Mode β Check your internet connection; the relay requires both the plugin and the cloud server to be online
- Write operations not working β Verify the Desktop Bridge plugin is running in the file you want to modify
Local Mode Common Issues
- βFailed to connect to Figma Desktopβ β Install the Desktop Bridge Plugin (Plugins β Development β Import from manifest) and run it in your file
- βNo plugin UI foundβ β Make sure the Desktop Bridge Plugin is running in your Figma file
- βVariables cache emptyβ β Close and reopen Desktop Bridge plugin
- Plugin shows βDisconnectedβ β Make sure the MCP server is running (start/restart your MCP client)
Summary
For most users: Start with NPX Setup β- All 63+ tools including design creation and real-time monitoring
- Automatic updates with
@latest - Desktop Bridge plugin support
- Variables without Enterprise plan
- You use web AI clients (Claude.ai, v0, Replit, Lovable)
- You need write access but canβt install Node.js
- You donβt need real-time selection/document tracking
- Youβre developing the MCP server
- You want to modify source code
- You need unreleased features
- Youβre testing changes before contributing
- You just want to explore/evaluate the tool
- You only need read-only access to design data
- You want zero-setup experience
- You donβt need design creation capabilities
- Remote (read-only): 22 tools β view data, screenshots, design system extraction
- Cloud Mode: (52 tools) β adds full write access (create, edit, delete) via relay
- Local Mode (NPX/Git): 63+ tools β adds real-time monitoring (selection, changes, console)
- Remote: Cannot create, modify, or delete anything in Figma
- Cloud: Full design creation and variable management via the Desktop Bridge relay
- Local: Everything in Cloud, plus real-time selection tracking, document change monitoring, and console log streaming