io.github.asr-aditya/iconserve

Registre officiel Recherche et web

Icons for agentic development: search & fetch 366,000+ open-source icons as SVG/PNG. No API key.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http iconserve 'https://icons-for-agents.site/mcp'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "iconserve": {
            "type": "http",
            "url": "https://icons-for-agents.site/mcp"
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. IconServe
  2. How an agent uses it
  3. Architecture
  4. Local development
  5. Deploy (Cloudflare free tier)
  6. Adding / updating icon sets
  7. Licensing

IconServe

A free, agent-readable service that aggregates 10,000+ open-source icons — Lucide, Heroicons, Tabler, and Simple Icons — 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

NeedDo this
Embed an icon you know the name ofGET /i/{name}.svg (best match) or /icons/{set}/{name}.svg
Find the right iconGET /api/search?q=shopping+cart → names + ready URLs
Read the whole API in one shotGET /llms.txt (or /llms-full.txt)
Native tool callsMCP server at /mcp (search_icons, get_icon, list_sets)
OpenAPIGET /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

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)

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: 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, 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.

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.

Questions fréquentes

Qu'est-ce que io.github.asr-aditya/iconserve ?

Icons for agentic development: search & fetch 366,000+ open-source icons as SVG/PNG. No API key.

Comment installer io.github.asr-aditya/iconserve ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http iconserve 'https://icons-for-agents.site/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.asr-aditya/iconserve ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.asr-aditya/iconserve est-il open source ?

Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.

Qui maintient io.github.asr-aditya/iconserve ?

Il est publié par asr-aditya. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.