Kuticon
CLI

CC0 · free

Free · CC0 · MCP server + CLI

Ask for icons.
Get a set that matches.

Describe your app in one sentence. Kuticon builds a matching pack in one style from its 2,431-icon library, as SVG and PNG. Try it here, or let your coding agent call it while it builds.

Style

No sign-up. 8 free packs a day per visitor, reset at 00:00 UTC. Library icons and search are always free.

coding agent · my-habits-app

you Add a tab bar and settings screen. Use one consistent icon set.

I'll get a matching icon pack from Kuticon.

kuticon · draw_icon_pack{ "prompt": "icons for a habit tracker app", "style": "duotone", "count": 8 }

✓ 8 icons · duotone · SVG + PNG → src/assets/icons/

Wired them into TabBar.tsx and Settings.tsx.

Today
  • Morning run5 day streak
  • Read 20 pagesdone
  • Sleep by 112 of 7
  • Today
  • Stats
  • Goals
  • Settings

src/App.tsx · built with the pack above

For coding agents

Give your agent its own icon tool.

Set it up once. After that your agent asks Kuticon whenever a screen needs icons, and every pack comes out in the same style. New packs count against a small daily limit; searching the library does not.

1

Connect your agent. Kuticon runs at https://kuticon.com/mcp: nothing to install, no key. Pick yours.

Paste into Claude Code, Codex, Cursor or any coding agent. It adds the hosted server and asks before overwriting anything.

Setup prompt
Add the Kuticon MCP server for yourself (the agent I am talking to now).

Server: name "kuticon", remote (Streamable HTTP), URL https://kuticon.com/mcp,
no authentication.

1. Register it using your own native method (your CLI's "mcp add" command or
   your MCP config file). Use user/global scope unless I say otherwise.
2. If a "kuticon" entry already exists, show me what you would change and ask
   before overwriting anything; back up any file you edit.
3. Reload MCP servers if needed, then confirm it works by calling the kuticon
   list_styles tool and showing me the result.
If you cannot use remote MCP servers, stop and tell me: I can install the
local kuticon CLI instead (https://github.com/nyancodex/kuticon-cli).
Tell me each command you run, and do not change anything else.
Terminal
claude mcp add --transport http kuticon https://kuticon.com/mcp

Running the local CLI instead: claude mcp add --scope user kuticon -- kuticon mcp

Terminal
codex mcp add kuticon --url https://kuticon.com/mcp

Or add [mcp_servers.kuticon] with url = "https://kuticon.com/mcp" to ~/.codex/config.toml.

Running the local CLI instead: codex mcp add kuticon -- kuticon mcp

One click: Add to Cursor or paste this into the file.

~/.cursor/mcp.json
{
  "mcpServers": {
    "kuticon": {
      "url": "https://kuticon.com/mcp"
    }
  }
}

Running the local CLI instead: "command": "kuticon", "args": ["mcp"] in place of the url.

Terminal
code --add-mcp '{"name":"kuticon","type":"http","url":"https://kuticon.com/mcp"}'

Or put {"servers": {"kuticon": {"type": "http", "url": "https://kuticon.com/mcp"}}} in .vscode/mcp.json.

Running the local CLI instead: code --add-mcp '{"name":"kuticon","command":"kuticon","args":["mcp"]}'

Settings → Connectors → Add custom connector. Name it Kuticon, paste this URL, and leave sign-in off. Free plans allow one custom connector.

https://kuticon.com/mcp

Running the local CLI instead: Settings → Developer → Edit Config, add {"mcpServers": {"kuticon": {"command": "kuticon", "args": ["mcp"]}}}, then restart.

The open-source kuticon CLI runs the same tools on your machine (kuticon mcp) and works without an agent. Install with Go 1.24+, or grab a binary from GitHub Releases.

go install github.com/nyancodex/kuticon-cli/cmd/kuticon@latest
Terminal
kuticon draw "icons for a neighborhood bakery" --style sticker --count 8 --out ./bakery
kuticon search "coffee cup"
kuticon get cupcake --format png --size 128 -o cupcake.png
kuticon styles

Add --json for scripts, --base-url or KUTICON_URL to point elsewhere. The local CLI's packs count against the studio's daily limit, not the hosted one.

2

Ask for icons.

“Add icons for the tab bar and settings screen. Flat style, same set.”

MCP tools

  • draw_icon_pack
  • search_icons
  • get_icon
  • list_styles

HTTP API

  • GET /api/icons?q=coffee&limit=20search the library
  • GET /api/metaevery style, size and choice
  • GET /icons/{id}/png?size=128one icon as PNG

Open source CLI and MCP on GitHubnyancodex/kuticon-cli · MIT

Why one pack

One app, one look. No more icon soup.

Five icons, five styles

What you get when icons come from wherever.

One Kuticon pack

Same grid, same stroke, same colors. Ask for more later and they still match.

Styles

Ten styles. Pick one and the whole pack follows.

Just added

New icons, just drawn.

See all new →

The library grows every day. These are the latest, newest first, and every pack and style can use them right away.

Studio

Want more control? Fine-tune the pack here.

Stroke weight, corners, icon count, file types and PNG sizes. Same engine your agent calls.

Pick a style
Weight, corner, files, sizes
Weight
Corner
Plate
Use
Icons
12
Files
Pixels

Enter to draw. Shift+Enter for a new line.

API

The same choices, as a request.

The controls above write this body. Plate stays on the desk. It is not a field. A missing field still means 12 icons, both files, and every size.

POST /api/packs
{
  "prompt": "",
  "weight": "text",
  "cap": "round",
  "style": "flatline",
  "count": 12,
  "formats": ["svg", "png"],
  "sizes": [16, 24, 32, 48, 64, 128, 256]
}
  1. That post answers 202 with {id, status:"queued", position}.
  2. Read GET /api/packs/{id} until status is ready or failed.
  3. Take the zip at GET /api/packs/{id}/download.
prompt
The sentence, trimmed, 1…280 characters.
weight
fine, text, or bold.
cap
round or sharp.
style
outline, sticker, blueprint, neon, clay, pixel, duotone, twotone, flatline, or flat. Missing means outline.
count
1 for one icon, or 4, 6, 8, 12, 16, 24 for a pack. Missing means 12.
formats
Any of svg, png, font (WOFF2, TTF, and CSS), react, vue, sprite (sprite and Figma sheet), and app (Android and iOS launcher icons). Missing means svg and png. Empty is refused.
sizes
PNG sides from 16, 24, 32, 48, 64, 128, 256. Missing means all seven. Ignored when PNG is off. Empty while PNG is on is refused.

Bakery, a specimen

Twelve icons · 24 grid