Labsco
svedm logo

SF Symbols

from svedm

MCP and command line tool for SF Symbols

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

sfsymbols-mcp

A macOS command-line tool and Model Context Protocol server for Apple's SF Symbols. It can:

  • List every SF Symbol name on the system (9,000+).

  • Search symbols by name, keyword, or alias.

  • Export any symbol to a true‑vector SVG β€” real bezier <path> data, not a rasterized image.

The vector outlines are the exact curves Apple ships, extracted straight from the system symbol catalog, so exported SVGs scale cleanly to any size.

MCP server

Start the server over stdio:

Copy & paste β€” that's it
sfsymbols-mcp serve
# or simply:
sfsymbols-mcp

Add it to Claude Code (the claude CLI)

The simplest way β€” one command. Use the full path to the binary if it isn't on your PATH:

Copy & paste β€” that's it
claude mcp add sfsymbols -- /usr/local/bin/sfsymbols-mcp serve

If you installed with Mint, get the exact path with:

Copy & paste β€” that's it
mint which sfsymbols-mcp

That registers the server for the current project only (the default local scope). To make it available in every project, add --scope user:

Copy & paste β€” that's it
claude mcp add --scope user sfsymbols -- /usr/local/bin/sfsymbols-mcp serve

Check it and remove it with:

Copy & paste β€” that's it
claude mcp list # see registered servers
claude mcp get sfsymbols # see details for this one
claude mcp remove sfsymbols # remove it

Then start claude; run /mcp inside a session to confirm the sfsymbols server is connected.

Add it via a config file

Prefer editing a file? Create .mcp.json in your project root (this is the project scope Claude Code reads, and you can commit it to share with the team):

Copy & paste β€” that's it
{
 "mcpServers": {
 "sfsymbols": {
 "command": "/usr/local/bin/sfsymbols-mcp",
 "args": ["serve"]
 }
 }
}

The same JSON works for other MCP clients, e.g. Claude Desktop's claude_desktop_config.json.

Tools

Tool Arguments Returns list_symbols limit (int, optional), offset (int, optional) JSON: total, offset, count, symbols[] search_symbols query (string, required), limit (int, optional) JSON: query, count, symbols[] export_symbol name (string, required), weight (string, optional), point_size (number, optional), fill (string, optional) The SVG document as text

Errors (unknown symbol, missing arguments) are returned as tool results with isError: true.

How it works

  • List / search read the system catalog plists in /System/Library/CoreServices/CoreGlyphs.bundle/Contents/Resources/ (name_availability.plist, symbol_search.plist, name_aliases.strings).

  • Export loads the SF Symbols asset catalog (Assets.car) through CoreUI's CUICatalog, requests the named vector glyph for the given weight, reads its CGPath, and serializes the path into SVG <path> data. The CoreUI path is already in SVG (Y‑down) orientation, so no coordinate flipping is applied.

Development

Copy & paste β€” that's it
swift build # debug build
swift test # run the test suite

License

SF Symbols themselves are provided by Apple and subject to Apple's licensing. This tool only reads the catalog already present on your Mac; it does not redistribute Apple's assets.