Get Crossfade
  1. Crossfade
  2. Guides

Why Figma MCP can't load your local fonts, and what you can do

By Sabarish Sanjay, maker of Crossfade · Updated

Your font shows up in Figma's font picker, but your agent can't use it. listAvailableFontsAsync() doesn't list it, and loadFontAsync() throws an error. It isn't a bug in your setup. Here's what's happening.

The symptom

await figma.loadFontAsync({ family: "Pretendard", style: "Bold" });
// Error: The font "Pretendard Bold" could not be loaded.

The knock-on effects are worse than the error. On Figma's forum, people report that components using the font can't be placed in frames or given text styles. If your design system uses a local font, that can stop an agent building screens at all. It hits CJK design systems especially hard.

Why it happens

use_figma runs through Figma's remote server, not on your computer. Figma's staff explained that server-side tools can only reach fonts on Figma's servers, and local fonts stay on your device. Figma's docs say the same: fonts must be uploaded to your Figma account, and fonts that are only installed on your computer aren't available.

Font sourceThrough Figma’s MCP server
Google and Apple fonts included in FigmaAvailable
Fonts uploaded to your organisation or teamAvailable
Local fonts added with Figma Font HelperNot available

Installing the font somewhere else on your computer won't help, because the problem is where the code runs. Figma has called this a current limitation rather than a bug.

What you can do

  1. Upload the font. The clean fix, but shared font uploads are on Organization and Enterprise plans.
  2. Use a stand-in, then swap. Ask the agent to build in a similar Google font, then use Replace fonts in Figma to swap it for the real one. It works, but check the spacing afterwards, because widths change.
  3. Run the code on your machine. A plugin in the Figma desktop app isn't server-side, so it can see the same fonts the app can.

How the third option works

The Plugin API is the same, and the difference is where it runs. Crossfade, which I make, is a plugin in the desktop app, and I regularly build with fonts like Avenir through it, which use_figma couldn't load when I tried the same fonts. Your agent's code calls loadFontAsync as usual and it just works. The free plugin bridges run in the desktop app too, so they should behave the same way, though I haven't tested each of them.

Common questions

Why does listAvailableFontsAsync not show my installed font through MCP?

Figma's staff say server-side tools can only reach fonts uploaded to Figma's servers. Fonts on your computer stay on your device, so use_figma can't see them.

Which fonts work with Figma's MCP server?

Google Fonts and Apple fonts included in Figma, and fonts uploaded to your organisation or a team in it. Font uploads are available on Organization and Enterprise plans.

Can a plugin use my local fonts?

Yes. A plugin running in the Figma desktop app can use fonts the app can see, because it runs on your machine rather than on Figma's servers.

Sources

Keep reading