Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
Settings → Tools → Cloud → Figma shows “Connected” with a fresh OAuth token. The plugin’s skills (figma-use, figma-create-new-file, etc.) are correctly cached and surfaced via <plugin_info> system reminders to agents. However, no figma-* MCP tools are ever exposed to agents. Any agent call to e.g. figma-whoami returns Tool execution error. Tool figma-whoami not found, available tools: … and the available tools list contains no figma-* entries.
Steps to Reproduce
-
Open Cursor 3.3.16 (or later) on macOS with a Figma account available.
-
Open Settings → Tools → Cloud.
-
Click Add MCP (or the equivalent in your build) and select the Figma plugin.
-
Complete the Figma OAuth flow in the browser; return to Cursor.
-
Confirm the Figma row in the Cloud panel shows “Connected” with a green status dot, and the toggle is on.
-
Open a new agent chat in any workspace, with any model that supports MCP tool calls.
-
Ask the agent (or trigger programmatically via
CallMcpTool) anyfigma-*tool —figma-whoamiis the simplest:Call the figma whoami MCP tool with no arguments. -
Observe the response.
-
(Optional, for confirmation) On the user’s machine, inspect the most recent Cursor session log:
LATEST=$(ls -dt ~/Library/Application\ Support/Cursor/logs/* | head -1) grep createClient "$LATEST"/window*/workbench.mcp.allowlist.log
Expected Behavior
-
Step 7: the agent successfully calls
figma-whoamiand receives the user’s plan list (the FigmawhoamiMCP response). -
Step 9: the
createClientgrep returns a line for Figma (e.g.createClient: identifier="plugin-figma-figma", serverName="figma"), parallel to the existing Firebase line for users with the Firebase plugin connected.
Operating System
MacOS
Version Information
3.3.16 (commit d3a7897d2f9fafe337ec9b067831a6cade914773d823f28250c50dbf4be3429c)
Additional Information
-
Step 7: the agent reports
Tool execution error. Tool figma-whoami not found, available tools: ..., and the printed tool list contains zerofigma-*entries (other plugin MCPs such asplugin-firebase-firebase-*ARE present). -
Step 9: the
createClientgrep returns lines for every other connected MCP (user-context7,user-dart,user-codacy,plugin-firebase-firebase) but no line for Figma at all. -
This persists across all of the workarounds listed below.
Diagnostic evidence
From ~/Library/Application Support/Cursor/logs/<session>/window<N>_<wb>/workbench.mcp.allowlist.log after a fresh app launch:
12:05:15 createClient: identifier="user-context7", serverName="context7"
12:05:15 createClient: identifier="user-dart", serverName="dart"
12:05:15 createClient: identifier="user-codacy", serverName="codacy"
12:05:20 createClient: identifier="plugin-firebase-firebase", serverName="firebase"
Firebase, which uses the same Cloud-MCP-via-plugin architecture as Figma, registers correctly. Figma never appears in createClient at all — not as plugin-figma-figma, not under any other identifier. The OAuth log (workbench.mcp.oauth.log) shows the expected none → initializing → error → connected state-machine transitions for Firebase but zero state transitions for Figma.
When the agent attempts a Figma tool call, the permissions service correctly evaluates the request as allowed (shouldBlockMcp: ALLOWED (auto-run, no team block)), but the call fails because no MCP client is registered to route it to.
Things tried (all failed to fix)
-
Toggling Figma off/on in the Cloud panel.
-
Removing and re-adding the Figma MCP plugin in Cursor.
-
Logout + Login from the Cloud panel’s Figma row.
-
Revoking the “Cursor MCP Client” OAuth grant from Figma’s account settings (
https://www.figma.com/settings), then re-OAuthing from Cursor. -
Full Cursor quit (
⌘Q) + relaunch.
After each attempt, the result was identical: Cloud panel shows “Connected”, no createClient line for Figma, no figma-* tools available to agents.
Diagnosis
The bug is at the layer where Cursor’s plugin loader translates a connected Cloud-MCP plugin entry into an MCP service createClient call. The Figma plugin entry is silently dropped at that step. Firebase, which uses the same architecture, works.
Does this stop you from using Cursor
No - Cursor works, but with this issue