Troubleshooting Guide
Common Issues and Solutions
Plugin Debugging: Simple Workflow ✅
For Plugin Developers in Local Mode:🚨 CRITICAL FIRST-TIME SETUP: Step 1: Quit Figma Desktop completely (Cmd+Q on macOS / Alt+F4 on Windows) Step 2: Relaunch Figma with remote debugging enabled:Step 3: Verify setup worked by visiting http://localhost:9222 in Chrome
- macOS: Open Terminal and run:
- Windows: Open CMD or PowerShell and run:
Step 4: Open your design file and run your plugin ✅ You only need to do this once per Figma session. Every time you quit Figma, you’ll need to relaunch it with this command.
- You should see a list of inspectable pages
- If you see this, the setup is correct!
How to Verify Setup is Working
Before trying to get console logs, verify your setup:"valid": false, the AI will provide step-by-step setup instructions.
The Simplest Workflow - No Navigation Needed!
Once setup is complete, just ask your AI to check console logs:[Main], [Swapper], [Serializer], etc. plugin logs immediately:
For Cloud Mode (Figma Web)
If you’re using cloud mode or need to navigate to a specific file:- Monitors main page console (Figma web app)
- Monitors all Web Worker consoles (Figma plugins)
- Automatically detects when workers are created/destroyed
- Merges all console logs into a single stream
- Tags logs with source:
'plugin','figma','page'
-
Check timing: Make sure you run the plugin AFTER navigating
-
Check worker count: Use
figma_get_status()to verify workers are detected -
Check log levels: Use
level: 'all'to ensure nothing is filtered
- Enumerate existing workers via
page.workers() - Listen for new workers via
page.on('workercreated') - Attach console listeners to each worker
- Tag worker logs with
source: 'plugin'
Issue: “Browser isn’t currently running”
Symptoms:- Error message: “The browser isn’t currently running”
figma_get_statusshowsbrowser.running: false
figma_navigate yet to initialize the browser.
Solution:
Always start with figma_navigate:
- Launches the headless Chrome browser
- Initializes console monitoring
- Navigates to your Figma file
browser.running: trueinitialized: trueconsoleMonitor.isMonitoring: true
https://figma-console-mcp.southleft.com, browser launch is handled automatically and should work without issues.
Issue: “Failed to retrieve console logs”
Symptoms:- Error: “Console monitor not initialized”
- Error: “Make sure to call figma_navigate first”
Issue: Screenshot Returns Empty Data
Symptoms:- Screenshot tool succeeds but image is blank
- Base64 data is present but doesn’t render
- Page hasn’t fully loaded yet
- Plugin UI isn’t visible
- Timing issue
'full-page'- Entire page including scrollable areas'viewport'- Currently visible area'plugin'- Plugin UI only (may need to be visible first)
Issue: No Console Logs Captured
Symptoms:figma_get_console_logs()returns empty array- Log count is 0
- Plugin hasn’t executed yet
- Plugin doesn’t produce console output
- Logs are being filtered out
Check Plugin Execution
Check Log Levels
Try different level filters:Check Timing
Issue: “Connection timed out” or Network Errors
Symptoms:- Claude Desktop shows connection timeout
- Tools take very long to respond
- Intermittent failures
- Cloudflare Workers cold start
- Browser initialization takes time
- Figma page load is slow
Allow More Time
The first call tofigma_navigate can take 10-30 seconds:
- Browser needs to launch
- Figma needs to load
- Console monitoring needs to initialize
Use figma_get_status
This is a lightweight call that doesn’t require browser initialization:Check Server Health
Issue: Claude Desktop Not Seeing Tools
Symptoms:- MCP server connected but no tools visible
- Tools list is empty
Check Configuration
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
https://figma-console-mcp.southleft.com/sse (note the /sse endpoint).
Restart Claude Desktop
After changing configuration:- Quit Claude Desktop completely
- Restart it
- Check the tools menu
Verify mcp-remote
Make suremcp-remote is installed:
Workflow Best Practices
Recommended Workflow
Tips
1. Always Navigate Firstfigma_navigatemust be the first call- It initializes everything
- Subsequent calls will fail without it
- Lightweight and fast
- Shows browser state
- Shows log count without retrieving logs
- Prevents old logs from mixing with new ones
figma_clear_console()orfigma_reload_plugin({ clearConsole: true })
- Browser launch takes time
- First navigation is slowest
- Subsequent operations are faster
- Error messages include helpful hints
- Often suggest the next step to try
- Include troubleshooting tips
Getting Help
If you’re still experiencing issues:-
Check Error Message Details
- Error messages include specific troubleshooting steps
- Follow the hints provided
-
Verify Deployment
-
Check Cloudflare Status
- Visit status.cloudflare.com
- Browser Rendering API status
-
Report Issues
- GitHub Issues: https://github.com/southleft/figma-console-mcp/issues
- Include error messages
- Include steps to reproduce
- Include figma_get_status output
Technical Details
Browser Session Lifecycle
-
First Call to figma_navigate:
- Launches Puppeteer browser (10-15s)
- Initializes console monitoring
- Navigates to Figma URL
- Starts capturing logs
-
Subsequent Calls:
- Reuse existing browser instance
- Much faster (1-2s)
- Logs accumulated in circular buffer
-
Session Timeout:
- Browser kept alive for 10 minutes
- After timeout, automatically relaunches on next call
Console Log Buffer
- Size: 1000 logs (configurable)
- Type: Circular buffer (oldest logs dropped when full)
- Capture: Real-time via Chrome DevTools Protocol
- Source Detection: Automatically identifies plugin vs Figma logs
Screenshot Format
- Formats: PNG (lossless), JPEG (with quality control)
- Encoding: Base64 for easy transmission
- Targets:
full-page: Entire page with scrollable contentviewport: Currently visible area onlyplugin: Plugin iframe only (experimental)
Environment Variables
For local development or custom deployments:Advanced Configuration
Create~/.config/figma-console-mcp/config.json:
https://figma-console-mcp.southleft.com uses sensible defaults that work for most use cases.