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 two execution modes but three installation methods:Execution Modes (Where Code Runs)
- Remote Mode - Runs in Cloudflare Workers (cloud)
- Local Mode - Runs on your machine (Node.js)
Installation Methods (How You Install)
- Remote SSE - URL-based connection (uses Remote 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 Mode only)
- Personal Access Token (PAT) - Manual token setup (NPX + Local Git)
π― Quick Decision Guide
Use Remote SSE (Recommended for Most Users)
- β TRUE zero-setup - Just paste a URL
- β OAuth authentication - Automatic browser flow, no manual tokens
- β Works without Figma Desktop restart
- β No local installation required
- β Cannot use Desktop Bridge plugin
Use NPX (For Local Execution Without Source Code)
- β No git clone required (npm handles it)
- β
Automatic updates with
@latest - β Desktop Bridge plugin support
- β οΈ Requires
FIGMA_ACCESS_TOKEN(manual) - β οΈ Requires Figma Desktop restart with
--remote-debugging-port=9222
Use Local Git (For Development & Testing)
- β Full source code access
- β Modify and test changes
- β Desktop Bridge plugin support
- β οΈ Requires
FIGMA_ACCESS_TOKEN(manual) - β οΈ Requires Figma Desktop restart with
--remote-debugging-port=9222 - β οΈ Manual updates via
git pull && npm run build
Installation Methods Comparison
| Aspect | Remote SSE | NPX | Local Git |
|---|---|---|---|
| Execution | Cloudflare Workers | Local Node.js | Local Node.js |
| Code | src/index.ts | dist/local.js (npm) | dist/local.js (source) |
| Authentication | OAuth (automatic) | PAT (manual) | PAT (manual) |
| Setup Complexity | β Zero-setup | β οΈ Manual token + restart | β οΈ Manual token + restart |
| Distribution | URL only | npm package | git clone |
| Updates | Automatic (server-side) | @latest auto-updates | Manual git pull + build |
| Figma Desktop | Not required | Required with debug port | Required with debug port |
| Desktop Bridge | β Not available | β Available | β Available |
| Source Access | No | No | Yes |
| Use Case | Most users | Local execution users | Developers |
Feature Availability Matrix
| Feature | Remote Mode | Local Mode | Notes |
|---|---|---|---|
| Console Logs | β | β | Remote uses Browser Rendering API, Local uses Chrome DevTools Protocol |
| Screenshots | β | β | Both use Figma REST API |
| Design System Extraction | β | β | Variables, components, styles via Figma API |
| OAuth Authentication | β | β | Remote has automatic OAuth, Local requires Personal Access Token |
| Zero Setup | β | β | Remote: just paste URL. Local: requires Node.js, build, Figma restart |
| Figma Desktop Bridge Plugin | β | β | Plugin ONLY works in Local Mode |
| Variables without Enterprise API | β | β | Requires Desktop Bridge plugin (Local only) |
| Reliable Component Descriptions | β οΈ | β | API has bugs, plugin method (Local) is reliable |
| Zero-Latency Console Logs | β | β | Local connects directly to Figma Desktop via localhost:9222 |
| Works Behind Corporate Firewall | β οΈ | β | Remote requires internet, Local works offline |
| Multi-User Shared Token | β | β | Remote uses per-user OAuth, Local uses single PAT |
Legend
- β Available
- β Not Available
- β οΈ Limited/Conditional
Architecture Comparison
Remote Mode Architecture
- Browser runs in Cloudflareβs infrastructure
- Cannot access
localhost:9222on your machine - OAuth tokens stored in Cloudflare KV
- ~10-30s cold start for first request
Local Mode Architecture
- Direct connection to Figma Desktop
- Instant console log capture
- Plugin can access local variables (no Enterprise API needed)
- Requires Figma Desktop restart with debug flag
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_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 SSE
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)
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 - Quit and restart Figma with
--remote-debugging-port=9222 - Verify http://localhost:9222 is accessible
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 - Quit and restart Figma with
--remote-debugging-port=9222 - Verify http://localhost:9222 is accessible
Authentication Comparison
Remote SSE - OAuth (Automatic) β Recommended
Method: Remote Mode only 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)
NPX + Local Git - Personal Access Token (Manual)
Method: Both NPX and Local Git modes How it works:- User creates PAT at https://www.figma.com/developers/api#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
- β Manual token creation required
- β Must manually refresh every 90 days
- β Single shared token (no per-user auth)
- β Requires Figma Desktop restart with debug port
Figma Desktop Bridge Plugin
β οΈ CRITICAL: Plugin Only Works in Local Mode
Why it doesnβt work remotely: The Desktop Bridge plugin requires:- Direct Chrome DevTools Protocol connection to
localhost:9222 - Access to plugin UI iframeβs
windowobject via Puppeteer - Local filesystem access to read plugin code
- β Cannot connect to
localhost:9222on your machine - β Has no access to your Figma Desktop instance
- β Uses Browser Rendering API (cloud browser, not local)
| Feature | Without Plugin | With Plugin (Local Only) |
|---|---|---|
| Variables API | Enterprise plan required | β Free/Pro plans work |
| Variable data | REST API (limited) | β Full local variables |
| Component descriptions | Often missing (API bug) | β Always present |
| Data freshness | Cache + API limits | β Real-time from Figma |
| Multi-mode support | Limited | β All modes (Light/Dark/etc) |
- Install Local Mode MCP server
- Download
figma-desktop-bridge.zipfrom releases - Import plugin in Figma: Plugins β Development β Import plugin from manifest
- Run plugin in your Figma file
- Query variables/components via MCP
When to Switch Installation Methods
Switch from Remote SSE β NPX/Local Git if:
- β You need variables but donβt have Enterprise plan
- β Component descriptions are missing in API responses
- β Youβre developing Figma plugins (need console debugging)
- β You need instant console log feedback
- β You need Desktop Bridge plugin features
Switch from NPX/Local Git β Remote SSE 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 donβt need Desktop Bridge plugin
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 three installation methods are completely free:Remote SSE (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 Local Mode instead)
Local Mode Common Issues
- βFailed to connect to Figma Desktopβ β Restart Figma with
--remote-debugging-port=9222 - βNo plugin UI foundβ β Make sure Desktop Bridge plugin is running
- βECONNREFUSED localhost:9222β β Verify http://localhost:9222 is accessible
- βVariables cache emptyβ β Close and reopen Desktop Bridge plugin
Summary
For most users: Start with Remote SSE β- Zero setup, just paste URL
- OAuth authentication (automatic)
- Perfect for design system extraction
- No Figma Desktop restart required
- You need Desktop Bridge plugin features
- You want local execution without source code
- You donβt have Enterprise plan but need variables
- You prefer npm distribution over git
- Youβre developing the MCP server
- You want to modify source code
- You need unreleased features
- Youβre testing changes before contributing
- Authentication: OAuth (Remote SSE) vs PAT (NPX + Local Git)
- Distribution: URL (Remote SSE) vs npm (NPX) vs git (Local Git)
- Execution: Cloud (Remote SSE) vs Local (NPX + Local Git)