Figma MCP in Cursor: set up Canvashand in five minutes
Connect Cursor to Figma with a local MCP server and no Figma API token. Install the CLI, run one setup command, open the plugin, then try your first prompts.
To connect Cursor to Figma with Canvashand, install the CLI, run canvashand setup cursor in your project, check that the server is on in Cursor's settings, and open the Canvashand plugin in your Figma file. Cursor then reads and writes the live canvas of that file. This guide covers each step, the first prompts to try, and the fixes for the problems you are most likely to hit.
Canvashand is a local MCP server plus a Figma plugin. Cursor starts the server on your machine. The server talks to the plugin inside the file you have open. There is no Figma API token to create, and no Figma rate limits to hit.
Set up Canvashand in Cursor
You need Figma desktop, Cursor, and a file you can edit. The plugin cannot be imported in the browser app.
1. Install the CLI
curl -fsSL https://www.canvashand.com/install.sh | sh
The installer detects your platform, verifies the SHA-256 checksum, and puts canvashand on your PATH. It also puts the Figma plugin in ~/.canvashand/canvashand-plugin. On Windows, or to download by hand, see the download page.
2. Run setup for Cursor
Open a terminal in the project you open in Cursor and run:
canvashand setup cursor
Setup writes two things:
- The MCP entry, in
.cursor/mcp.jsonin the current folder. It prints the path it wrote. - The bundled
canvashandskill, in.agents/skills/canvashand. The skill carries the design workflow your agent follows.
The entry setup adds to mcpServers looks like this:
{
"mcpServers": {
"canvashand": {
"command": "canvashand",
"type": "stdio"
}
}
}
That is the whole connection. Cursor runs the canvashand command and talks to it over stdio.
Setup edits the file in place. It keeps your other servers, your comments, and any field you added to the canvashand entry. If it cannot parse the file, it changes nothing and prints the entry for you to add by hand.
To have Canvashand in every Cursor project, add --scope user. That writes ~/.cursor/mcp.json and puts the skill in ~/.agents/skills/canvashand:
canvashand setup cursor --scope user
To configure every client setup detects on the machine (Cursor, Claude Code, Codex, VS Code and others) in one go, use canvashand setup --all --scope project.
3. Check the server is on in Cursor
Open Cursor Settings and go to Tools & MCP, the same place Figma's own Cursor guide points to. Find canvashand in the list and make sure it is enabled.
Cursor limits how many tools a chat can use across all MCP servers, and Canvashand has 99 tools. See Troubleshooting if tools go missing.
4. Open the plugin in Figma
Import the plugin once:
- In Figma desktop, open Plugins, then Development.
- Choose Import plugin from manifest.
- Pick
~/.canvashand/canvashand-plugin/manifest.json.
The folder is hidden. On macOS, press Cmd+Shift+G in the file picker and paste the path. On Windows, press Alt+D and paste %USERPROFILE%\.canvashand\canvashand-plugin. On Linux, press Ctrl+L and paste the path. The setup page has a short recording of this step.
Then open a file, run Canvashand from Plugins, Development, sign in with your Canvashand account, and keep the plugin window open. Each file you open the plugin in connects to the same local server.
5. Verify
In Cursor's chat, ask:
Use Canvashand to describe my selected frame.
Select a frame in Figma first. If the agent describes it, Cursor, the server, and the plugin are all connected. This prompt reads and changes nothing, so it is safe to run in any file.
First prompts to try
Start with reads, then move to edits.
Read the selected frame and list its components, tokens, and text styles.
List every open Figma file with list_files, and tell me what pages each one has.
Make every primary button in the Today screen use the Brand/Primary style.
Design a mobile habit tracker called Streak: theme and tokens, shared components, and Today, Habit detail, and Add habit screens at 390 wide, wired into a flow. Use canvashand.
The last prompt starts a full design session. The agent opens a change session, builds the screens, audits them, and closes the session only when the plan has no gaps.
Writes inside a change session are journaled. rollback_changes deletes what the session created. It does not revert edits to layers that already existed, so for edits to existing layers, ask the agent to open the session first with begin_change_session. That saves a checkpoint in Figma version history you can restore. The guide on running AI agents in Figma covers sessions and several files at once.
Figma to code in Cursor
Cursor is where many people want the design to end up as code. Copy a link to a frame in Figma (right-click, Copy link to selection), paste it into Cursor, and ask for the screen:
Build this screen in our app so it matches Figma exactly:
https://www.figma.com/design/<file-key>/<file-name>?node-id=12-34
Use canvashand. Reuse our components and tokens, and prove the match with screenshots.
The file behind the link must be open in Figma desktop with the plugin running. The agent reads the real nodes, builds with your repository's components and tokens, and compares screenshots of the app and the design. The full loop is in Turn a Figma link into code that matches.
Troubleshooting
canvashand: command not found. The install directory is not on your PATH. The installer prints the line to add. Otherwise add this to ~/.zshrc or ~/.bashrc:
export PATH="$HOME/.local/bin:$PATH"
The binary does nothing on macOS. If you downloaded it through a browser, macOS marks it as quarantined and stops it with no error message. The one-line installer is not affected. For a browser download, run this once:
xattr -d com.apple.quarantine $(command -v canvashand)
Tool calls are refused, or you see no active quota session. The CLI is running, but the plugin is not connected or not signed in. Open the Canvashand plugin in the file and sign in. Credits are leased by the plugin, so the server refuses calls while no plugin session is active.
Cursor does not list canvashand. Setup writes the config in the folder where you ran it. Check that .cursor/mcp.json exists in the project you opened in Cursor, or use --scope user for a global entry. If a canvashand skill folder already exists that setup did not create, setup refuses to overwrite it. Move or remove that folder and run setup again.
Some Canvashand tools are missing in Cursor. Cursor's tool limit is 40 across all MCP servers, and Canvashand has 99 tools. Setup prints a note about this. Turn off the tools you do not use in Cursor's MCP settings.
Upgrading. Run canvashand upgrade to update the CLI and the plugin. Then run canvashand update in a set-up project to refresh its MCP entry and skill.
Official Figma MCP vs Canvashand in Cursor
Figma also ships its own MCP server. Its help article for Cursor recommends the remote server: run /add-plugin figma in Cursor's chat, then open Tools & MCP and click Connect to authenticate. A desktop alternative runs through Figma's Dev Mode at http://127.0.0.1:3845/mcp.
The remote route involves a sign-in step, and a Cursor forum thread reported it failing. A Cursor forum thread from May 2026 shows an "Invalid URL protocol" error before sign-in starts on Cursor 3.3.30, and a reply in August 2026 says recent Cursor releases improved remote MCP connections and asks people to update and retry. If the official server works for you, you may never see this. Canvashand avoids the question: Cursor launches a local command, so there is no remote sign-in in Cursor. You still sign in to your Canvashand account in the plugin.
The two differ in other ways too: call limits, seats, tool count, and Code Connect, where Figma's server is stronger. The full comparison is in Canvashand vs the official Figma MCP server, and the per-seat call limits are in Figma MCP rate limits. You can run both in Cursor under different names.
Cost
Free includes 2,000 tool calls a month. Pro is $6.99 a month or $69.99 a year, with unlimited calls, and every Pro plan starts with a 7-day free trial. See pricing.
Sources
- Cursor and Figma: Set up the MCP server, Figma Help Center: the remote plugin route, the Tools & MCP settings, and the desktop server URL. Checked 2026-10-11.
- Figma remote MCP fails with "Invalid URL protocol" before OAuth, Cursor Forum: the May 2026 report and the August 2026 reply asking users to retry. Checked 2026-10-11.
Figma and Cursor are trademarks of their owners. Canvashand is independent and not affiliated with Figma, Inc. or Cursor.