SFSymbolsMCP
FreeNot checkedAn MCP server exposing Apple's SF Symbols catalog — search, platform availability, and alias lookup
About
An MCP server exposing Apple's SF Symbols catalog — search, platform availability, and alias lookup
README
An MCP server that exposes Apple's SF Symbols catalog to language models. It reads the metadata bundled with the SF Symbols app and serves three read-only tools: symbol search, platform availability, and alias lookup.
Requirements
- macOS 13 or later
- Swift 6.2 toolchain
- The SF Symbols app installed (the server reads its bundled metadata; nothing is fetched at runtime)
Build
swift build -c release
The executable is produced at .build/release/SFSymbolsMCP. It speaks MCP over stdio.
Configuration
By default the server reads metadata from /Applications/SF Symbols.app/Contents/Resources/Metadata. Two environment variables override the location (the first non-empty one wins):
| Variable | Points at | Example |
|---|---|---|
SF_SYMBOLS_METADATA_PATH |
the Metadata directory directly |
/path/to/Metadata |
SF_SYMBOLS_APP_PATH |
the .app bundle (the Contents/Resources/Metadata subpath is derived) |
/Applications/SF Symbols Beta.app |
Connecting a client
Point your MCP client at the built binary over stdio. For example, in an .mcp.json:
{
"mcpServers": {
"sf-symbols": {
"command": "/absolute/path/to/.build/release/SFSymbolsMCP"
}
}
}
To target a beta install, add an env block:
{
"mcpServers": {
"sf-symbols": {
"command": "/absolute/path/to/.build/release/SFSymbolsMCP",
"env": { "SF_SYMBOLS_APP_PATH": "/Applications/SF Symbols Beta.app" }
}
}
}
Claude Code
Register the server once for all projects (user scope):
claude mcp add -s user sf-symbols -- /absolute/path/to/.build/release/SFSymbolsMCP
To target a beta install, add the env override:
claude mcp add --env 'SF_SYMBOLS_APP_PATH=/Applications/SF Symbols Beta.app' -s user sf-symbols -- /absolute/path/to/.build/release/SFSymbolsMCP
Tools
All tools are read-only.
search
Find symbols whose name, aliases, or search terms contain the query (case-insensitive substring match). Results are ordered shortest-name first.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | yes | Text to match. |
limit |
integer | no | Maximum results (default 25). |
Example: search(query: "microphone", limit: 5)
{
"names": [
"microphone",
"microphone.fill",
"microphone.slash",
"music.microphone",
"microphone.circle"
]
}
availability
Look up the platform availability of a symbol. Accepts a canonical name or an alias. If the name is an alias with no availability of its own, it resolves to the symbol it points at and name reports that symbol. If the alias has its own availability, name stays the requested name and aliasTarget (or legacyAliasTarget) reports the symbol it aliases. layerSetAvailability is present only for symbols that have per-layer-set availability.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Symbol or alias name, e.g. circle.fill. |
Example: availability(name: "microphone")
{
"baseAvailability": {
"iOS": "18.0",
"macOS": "15.0",
"tvOS": "18.0",
"visionOS": "2.0",
"watchOS": "11.0"
},
"layerSetAvailability": {
"multicolor": {
"iOS": "15.0",
"macOS": "12.0",
"tvOS": "15.0",
"visionOS": "1.0",
"watchOS": "8.0"
}
},
"name": "microphone"
}
Example: availability(name: "mic")
{
"aliasTarget": "microphone",
"baseAvailability": {
"iOS": "13.0",
"macOS": "10.15",
"tvOS": "13.0",
"visionOS": "1.0",
"watchOS": "6.0"
},
"name": "mic"
}
Unknown names return an error result (No symbol found for: …).
aliases
List the alias and legacy alias names that refer to a symbol.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Symbol or alias name. |
Example: aliases(name: "microphone")
{
"aliases": [
"mic"
],
"legacyAliases": []
}
Project layout
SFSymbolsKit— a standalone library that loads the SF Symbols metadata and answers queries (search, details, availability resolution, alias lookup). No MCP dependency.SFSymbolsMCP— the executable that wrapsSFSymbolsKitin an MCP server.
Installing SFSymbolsMCP
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/leptos-null/SFSymbolsMCPFAQ
Is SFSymbolsMCP MCP free?
Yes, SFSymbolsMCP MCP is free — one-click install via Unyly at no cost.
Does SFSymbolsMCP need an API key?
No, SFSymbolsMCP runs without API keys or environment variables.
Is SFSymbolsMCP hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install SFSymbolsMCP in Claude Desktop, Claude Code or Cursor?
Open SFSymbolsMCP on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare SFSymbolsMCP with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
