Skip to main content
ClaudeWave

Agent-readable open-source icon service — 10k+ icons (Lucide, Heroicons, Tabler, Simple Icons) as SVG/PNG on Cloudflare, with keyword+semantic search, MCP server, and llms.txt

MCP ServersRegistry oficial0 estrellas0 forksTypeScriptNOASSERTIONActualizado today
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/asr-aditya/iconserve
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "iconserve": {
      "command": "node",
      "args": ["/path/to/iconserve/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/asr-aditya/iconserve and follow its README for install instructions.
Casos de uso

Resumen de MCP Servers

# IconServe

A free, agent-readable service that aggregates **10,000+ open-source icons** — [Lucide](https://lucide.dev),
[Heroicons](https://heroicons.com), [Tabler](https://tabler.io/icons), and [Simple Icons](https://simpleicons.org) —
and serves them as **SVG or PNG** at predictable URLs, with keyword + semantic search, an `llms.txt`, and an MCP server.

Runs entirely within the **Cloudflare free tier** (Workers + R2 + Workers AI).

## How an agent uses it

| Need | Do this |
|---|---|
| Embed an icon you know the name of | `GET /i/{name}.svg` (best match) or `/icons/{set}/{name}.svg` |
| Find the right icon | `GET /api/search?q=shopping+cart` → names + ready URLs |
| Read the whole API in one shot | `GET /llms.txt` (or `/llms-full.txt`) |
| Native tool calls | MCP server at `/mcp` (`search_icons`, `get_icon`, `list_sets`) |
| OpenAPI | `GET /openapi.json` |

### Discoverability surfaces (for crawling/browsing agents)

- `GET /icon/{set}/{name}` — crawlable HTML page per icon (preview, usage, JSON-LD `ImageObject` + breadcrumb). `/icon/{name}` 302-redirects to the best match.
- `GET /sitemap.xml` — every icon page (~10k URLs).
- `GET /robots.txt` — explicitly **allows** AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, …) and points to the sitemap.
- Landing page carries `WebSite`+`SearchAction` and `WebAPI` JSON-LD and Open Graph tags.
- **IndexNow**: key file served at `/{INDEXNOW_KEY}.txt`; `npm run indexnow` pings Bing/Yandex to crawl new or changed URLs instantly (pass paths to submit a subset, e.g. `npm run indexnow /icon/lucide/house`).

### Transforms (query params on any icon URL)

- `color=` hex / CSS color / `currentColor` — e.g. `?color=%23e11d48`
- `size=` `1..2048` px
- `stroke=` `0..20` (line icons)
- `style=` e.g. `solid` (Heroicons), `filled` (Tabler)
- `format=` `svg` | `png`

Example: `/i/shopping-cart.svg?color=crimson&size=48&stroke=1.5`

## Architecture

```
Build (offline, on your machine — no Cloudflare cost)
  scripts/ingest.mjs  → data/pack/icons.json  (id → normalized SVG, currentColor-driven)
                        data/pack/catalog.json (names, tags, aliases, license, styles)
                        data/pack/corpus.json  (search text per icon)
  scripts/embed.mjs   → data/pack/embeddings.bin  (10k × 384, bge-small-en-v1.5)
                        data/pack/embed-index.json

Cloudflare
  R2 (ICONS)   holds the 4 packed artifacts; loaded once per isolate into memory
  Workers AI   embeds ONLY the query string at search time (same 384-dim model)
  Worker       routing, color/size/stroke transforms, PNG (resvg-wasm), search, MCP, docs
  Assets       public/index.html landing page
```

Semantic search = keyword ranking **fused** (reciprocal-rank fusion) with cosine similarity over the
in-memory embeddings. No Vectorize, no per-vector billing, no dimension cap. If `embeddings.bin` is
absent, search gracefully falls back to keyword-only.

## Local development

```bash
npm install
npm run build:data     # ingest + embed  (embed downloads a ~40MB model once)
npm run upload:r2      # push artifacts into the LOCAL R2 store
npm run dev            # http://localhost:8787
```

> In `wrangler dev --local` the Workers AI binding is offline, so search runs keyword-only locally.
> Semantic search activates once deployed (or when running against the remote AI binding).

## Deploy (Cloudflare free tier)

```bash
wrangler login         # one-time, opens a browser
npm run deploy         # creates the R2 bucket, uploads artifacts, deploys the Worker
```

`npm run deploy` runs [`scripts/deploy.mjs`](scripts/deploy.mjs): it creates the `iconserve-icons`
bucket (idempotent), uploads the four artifacts to **remote** R2, then `wrangler deploy`.

## Adding / updating icon sets

Edit [`scripts/lib/sets.mjs`](scripts/lib/sets.mjs), then re-run `npm run build:data && npm run upload:r2`
(local) or `npm run deploy` (remote). Set priority for `/i/{name}` best-match is `DEFAULT_SET_ORDER` in
[`wrangler.toml`](wrangler.toml).

## Licensing

Icons are redistributed under their original permissive licenses: Lucide (ISC), Heroicons (MIT),
Tabler (MIT), Simple Icons (CC0). Brand marks from Simple Icons are trademarks of their respective
owners — use them per each brand's guidelines.
ai-agentscloudflare-workersheroiconsicon-libraryiconsllms-txtlucidemcpmodel-context-protocolsimple-iconssvgtabler

Lo que la gente pregunta sobre iconserve

¿Qué es asr-aditya/iconserve?

+

asr-aditya/iconserve es mcp servers para el ecosistema de Claude AI. Agent-readable open-source icon service — 10k+ icons (Lucide, Heroicons, Tabler, Simple Icons) as SVG/PNG on Cloudflare, with keyword+semantic search, MCP server, and llms.txt Tiene 0 estrellas en GitHub y se actualizó por última vez today.

¿Cómo se instala iconserve?

+

Puedes instalar iconserve clonando el repositorio (https://github.com/asr-aditya/iconserve) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar asr-aditya/iconserve?

+

asr-aditya/iconserve aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.

¿Quién mantiene asr-aditya/iconserve?

+

asr-aditya/iconserve es mantenido por asr-aditya. La última actividad registrada en GitHub es de today, con 0 issues abiertos.

¿Hay alternativas a iconserve?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega iconserve en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: asr-aditya/iconserve
[![Featured on ClaudeWave](https://claudewave.com/api/badge/asr-aditya-iconserve)](https://claudewave.com/repo/asr-aditya-iconserve)
<a href="https://claudewave.com/repo/asr-aditya-iconserve"><img src="https://claudewave.com/api/badge/asr-aditya-iconserve" alt="Featured on ClaudeWave: asr-aditya/iconserve" width="320" height="64" /></a>

Más MCP Servers

Alternativas a iconserve