Skip to content

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.

One 32 × 32 PNG goes with:

  • the server itself (serverInfo at 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.

  • 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.

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.

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):

SurfaceToolstools/list without iconsWith icons
dynamic23.3 KB5.8 KB
meta5279 KB122 KB
individual461610 KB988 KB

At protocol version 2026-07-28 the server’s icon also adds about 820 bytes to every other response, tool calls included.

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.

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.