logolab
v0.7.0
Published
MCP server for LogoLab: trace an image to a clean SVG and export a full app-icon set, locally, from your coding agent.
Maintainers
Readme
logolab
Turn an image into a clean SVG and a complete app-icon set — from your coding agent, on your machine.
An MCP server wrapping the vectorizer and icon exporter from LogoLab. A model generates a 1024px PNG with soft edges and a JPEG-ish halo; something has to turn that into a favicon that is still legible at 16px. Doing it by hand means a raster upscale and a blurry icon. This runs a real trace — region segmentation and curve fitting, not an image embed — so the result scales.
Nothing is uploaded. It is a stdio server: your agent starts it as a child process, it reads and writes files on your disk, and it never opens a socket.
Install
claude mcp add logolab -- npx -y logolab # Claude CodeOr let it write the config itself, in whichever project should get the icons:
npx -y logolab install # .mcp.json here (Claude Code)
npx -y logolab install --scope user # every project
npx -y logolab install --client cursor # .cursor/mcp.json
npx -y logolab install --client vscode # .vscode/mcp.json
npx -y logolab install --client print # print the JSON, change nothingAny other client wants the usual three facts:
{ "mcpServers": { "logolab": { "command": "npx", "args": ["-y", "logolab"] } } }Then ask your agent: "trace icon.png and export a PWA icon set into public/".
…or as a skill
No server at all: an Agent Skill that runs this package's CLI.
/plugin install logolab --marketplace Blaxzter/LogoLab # Claude Code plugin
npx -y logolab install --skill # .claude/skills/logolab/ (--scope user: every project)
npx -y logolab install --skills-dir <dir> # any agent that reads skills from a folderThe CLI it drives is usable by hand as well:
npx -y logolab tools # the tools, or `tools <name>` for one tool's inputs
npx -y logolab call trace_icon image=icon.png strokes=trueTools
| Tool | What it does |
| --- | --- |
| make_app_icons | image → traced SVG → a full icon set. The one call that does the job. |
| trace_icon | just the vectorization: a clean, editable SVG. |
| export_icons | an existing SVG/PNG → PWA, favicon, Tauri, Electron, Android, iOS or extension icons. |
| split_icon_sheet | a grid of icons on one canvas → one traced SVG per icon, icon-set ready: grid hint, names, normalize: 24, ink: "currentColor", transparent tiles. |
| inspect_icon | what the tracer would decide, before it runs. |
Presets: pwa, favicon, web, tauri, electron, android, ios, extension.
Try it without a client
npx -y logolab try ./icon.png ./outNotes
- Node ≥ 22.18 is required.
- WebP inputs need the optional
sharpdecoder, which is an optional peer and is not installed by default — it pulls a platform-specific libvips binary that dwarfs the rest of the server. Runnpm install sharpif you need it, or convert to PNG. Every other format (PNG, JPEG, GIF, BMP, SVG) works out of the box. - Relative paths in a tool call resolve against your agent's working directory,
not this package — so
./public/means the project you are working on.
MIT © Frederic Abraham
