Icons
MCP clients can show an icon next to a server and next to each tool, prompt and resource it lists. arcane-mcp sends its brand mark, the “crate” of the brand guide, on its dark plate, which reads on light and dark themes alike, so there are no per-theme variants.
What is sent where
Section titled “What is sent where”One 32 × 32 PNG goes with:
- the server itself (
serverInfoat initialization); - every tool, on all three tool surfaces;
- every prompt;
- every resource and resource template, the action catalog (
arcane://tools) included.
Each copy is 820 bytes in the response.
Every tool carries the same icon: one mark for the whole server, not one per domain. At the 16 to 22 pixels a client draws a tool icon, a separate glyph for each of the 52 domains would not be recognisable, and the tool name already says the domain.
The icon is an embedded data: URI (base64). A server started over stdio has no web address a client could load an image from, and clients may refuse images from any other address (the MCP specification allows it, and VS Code does it), so nothing is fetched over the network.
Why one 32-pixel PNG
Section titled “Why one 32-pixel PNG”- PNG because the MCP specification requires every client that shows icons to read PNG and JPEG, while SVG is optional. VS Code, for one, shows PNG, JPEG, GIF and WebP icons and skips SVG ones.
- 32 × 32 because VS Code asks for a 22-pixel icon and takes the smallest one at least that large, and 32 pixels also covers a 16-pixel slot on a double-density screen.
- One icon because each one is repeated with every tool listed, and from protocol version 2026-07-28 on every response repeats the server’s identity, its icons included, in its
_meta.
Which clients show it
Section titled “Which clients show it”Showing icons is up to each client, and a client that ignores them works exactly the same. VS Code shows the server, tool and resource icons. Clients that do not show icons skip the field.
What the icon costs
Section titled “What the icon costs”Icons are for display: clients do not normally pass them to the model, so they should cost no tokens. What they add is bytes in the list responses (the whole tools/list result, at protocol version 2026-07-28):
| Surface | Tools | tools/list without icons | With icons |
|---|---|---|---|
dynamic | 2 | 3.3 KB | 5.8 KB |
meta | 52 | 79 KB | 122 KB |
individual | 461 | 610 KB | 988 KB |
At protocol version 2026-07-28 the server’s icon also adds about 820 bytes to every other response, tool calls included.
Turning icons off
Section titled “Turning icons off”ARCANE_MCP_ICONS=off removes every icon: the server’s and those of every tool, prompt and resource (see Configuration). Use it if a client refuses a server that sends data: URI icons, or to save the bytes above. Like the other switches, a value that is not on or off stops the server at startup.
How it is made
Section titled “How it is made”The icon is generated with the rest of the brand by cmd/gen_brand (make gen-brand) and embedded in the binary from internal/brand/icons/. The generator draws it from the same geometry as the favicon, so make check-brand verifies it with the SVGs. It changes only with the mark.