{"slug": "mcp-server-for-340k-svg-icons", "title": "MCP server for 340k SVG icons", "summary": "Aria Icons, an open-source project by LeulAria, has released a Model Context Protocol (MCP) server and command-line interface (CLI) that provides access to over 340,000 SVG icons from multiple collections, including Lucide, Tabler, Heroicons, theSVG brand logos, and 200+ Iconify sets. The tool allows developers to search, customize, and integrate icons directly into their codebases, with commands for adding icons, migrating between icon libraries, and auditing mixed sets, and it supports local stdio and remote HTTP MCP configurations for AI agents in Cursor, Claude, and VS Code.", "body_md": "**340,000+ SVG icons — searchable, customizable, and a package manager for your icon codebase.**\n\nWebsite + API + CLI + MCP. Find any icon, write it into the project as source (no giant dependency), migrate mixed icon libraries, and let AI agents use the same engine.\n\nRepo: [github.com/LeulAria/Aria-Icons](https://github.com/LeulAria/Aria-Icons)\n\n```\nnpx -y aria-icons@latest setup\n# or\nbunx aria-icons@latest setup\n# or\ncurl -fsSL https://icons.leularia.com/install.sh | bash\n```\n\nThe npm package name is `aria-icons` (verified unused on the registry at the time of adding the CLI). The CLI is tiny: it talks to the Aria Icons API and only downloads the icons you request.\n\n```\nnpx -y aria-icons@latest setup\nbunx aria-icons@latest setup\ncurl -fsSL https://icons.leularia.com/install.sh | bash\nnpm install -g aria-icons\n# or\nbun add -g aria-icons\n```\n\n| Command | Purpose | \n|---|---|\n| `search <query>` | Search all collections | \n| `get <id>` | Print SVG or framework source | \n| `add <names…>` | Write icon files into the repo | \n| `migrate --to <set>` | Map existing icon-package imports onto one collection | \n| `doctor` | Audit mixed libraries | \n| `suggest [src/]` | Recommend a consistent set | \n| `init` | Write `.aria-icons.json` | \n| `setup` | Configure MCP for Cursor / Claude / VS Code / … | \n| `mcp` | Stdio MCP server (default if you run `aria-icons` with no args) | \n\nIcon ids: `collection:name` (`lucide:house`, `tabler:arrow-up`, `thesvg:github`).\n\nFull CLI docs: [`packages/cli/README.md`](/LeulAria/Aria-Icons/blob/main/packages/cli/README.md).\n\n**Local (stdio)** — what `aria-icons setup` writes:\n\n```\n{\n  \"mcpServers\": {\n    \"aria-icons\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"aria-icons\"]\n    }\n  }\n}\n```\n\n**Remote HTTP** — same catalog, hosted with the website:\n\n```\n{\n  \"mcpServers\": {\n    \"aria-icons\": {\n      \"url\": \"https://icons.leularia.com/api/mcp\"\n    }\n  }\n}\n```\n\nPublic REST used by the CLI (tiny payloads, no icon database in the package):\n\n| Endpoint |  | \n|---|---|\n| `GET /api/v1/search?q=` | Search | \n| `GET /api/v1/icon?id=lucide:house` | One icon | \n| `GET /api/v1/icons?ids=a,b` | Batch | \n| `GET /api/v1/collections` | Collections | \n| `GET /api/v1/similar?id=` | Similar / other sets | \n| `GET /api/v1/equivalent?id=&to=` | Cross-set mapping | \n\nDuring local development:\n\n```\nARIA_ICONS_API=http://localhost:3001 bun run cli:dev -- search house\n```\n\nFirst, install the dependencies:\n\n```\nbun install\n```\n\nFetch the brand + Iconify icon sources (one-time, or whenever you want to refresh), then rebuild the search catalog:\n\n```\ncd apps/web\nbun run fetch:thesvg          # ~6,500 brand logos (~4s)\nbun run fetch:iconify -- --all  # 200+ Iconify sets (~80s)\nbun run generate-icons        # build icons-meta.json for search + MCP\n```\n\nThen, from the repo root, run the development server:\n\n```\nbun run dev\n```\n\nOpen [http://localhost:3001](http://localhost:3001) in your browser. The in-app **Contribute Icons** page (`/contribute`) walks through adding a new set.\n\nIcons come from three storage backends, all indexed into one catalog:\n\n| Source | Storage | Fetch | \n|---|---|---|\n| Vendored sets (Lucide, Tabler, Heroicons, …) | one JSON per set in `apps/web/icons/vendored/` | committed to the repo | \n| theSVG brand logos (6,500+ brands, variants) | `apps/web/icons/thesvg.json` | `bun run fetch:thesvg` (auto-packs) | \n| Iconify collections (200+ sets) | one JSON per set in `apps/web/icons/iconify/` | `bun run fetch:iconify` (add`-- --all` for every set) | \n\nAfter fetching, rebuild the search catalog:\n\n```\ncd apps/web\nbun run generate-icons\n```\n\nThis writes `public/icons-meta.json` (browser + MCP search index with names,\ntags, aliases, and categories) and `icons-name.json`.\n\nEvery icon set here was contributed or curated by the community — new sets\nand better metadata are always welcome. The in-app guide at\n[`/contribute`](http://localhost:3001/contribute) walks through it, and the\nshort version is:\n\n1. **Fork**[LeulAria/Aria-Icons](https://github.com/LeulAria/Aria-Icons) and clone your fork.\n2. **Add SVGs** under`apps/web/icons/<your-set-name>/` (lowercase, hyphenated file names — the file name becomes the icon name).\n3. **Register the set** in`apps/web/src/lib/icon-sets.ts` (id, label, homepage, and whether it's`line` or`solid` style).\n4. **Pack + rebuild** with`bun run pack:icons -- --delete && bun run generate-icons` inside`apps/web` .\n5. **Preview** with`bun run dev` — check the sidebar, grid rendering, and search.\n6. **Open a pull request** against[LeulAria/Aria-Icons](https://github.com/LeulAria/Aria-Icons) mentioning the icon count, source, and license.\n\nOther ways to contribute:\n\n- **Brand icons** — contribute upstream to[theSVG](https://github.com/glincker/thesvg) , then refresh with`bun run fetch:thesvg` .\n- **Iconify sets** — pull additional collections with`bun run fetch:iconify -- --sets <prefix>` .\n- **Metadata** — better tags/aliases make search smarter; metadata PRs are just as valuable as new icons.\n\nOnly submit icons you have the right to share, and include the license in your PR (MIT, CC0, or similarly permissive licenses preferred).\n\n```\naria-icons/\n├── apps/\n│   └── web/               # Next.js app, catalog, /api/v1, HTTP MCP\n├── packages/\n│   ├── cli/               # published npm package `aria-icons`\n│   ├── api/               # oRPC layer\n│   └── config/\n# Install\nbun install\n\n# Website\nbun run dev:web                          # http://localhost:3001\nbun run build                            # turbo: web + cli\n\n# CLI against production API\nbun run cli:dev -- search house\nbun run cli:dev -- get lucide:house\nbun run cli:dev -- doctor\n\n# CLI against local website\nARIA_ICONS_API=http://localhost:3001 bun run cli:dev -- search house\n\n# Tests + types\nbun run cli:test\nbun run check-types\n\n# Version the CLI (bumpp: commit, tag vX.Y.Z, push)\nbun run cli:release\n\n# GitHub Actions then publishes packages/cli to npm on tag v*\n# Requires repo secret NPM_TOKEN\n```\n\nManual npm publish:\n\n```\ncd packages/cli\nbun run build\nnpm publish --access public\n```\n\nPre-release:\n\n```\ncd packages/cli\nbunx bumpp prerelease --preid beta --commit --tag --push\n# tag like v0.1.1-beta.0 publishes with npm tag `beta`\n```\n\nWebsite deploy is unchanged (Vercel / your current host for `apps/web`). After deploy, `/api/v1/*` and `/api/mcp` are what the CLI and remote MCP use.\n\n- `bun run dev` : Start all applications in development mode\n- `bun run build` : Build all applications\n- `bun run check-types` : Check TypeScript types across all apps\n- `bun run cli:dev` : Run the CLI from source\n- `bun run cli:build` : Bundle the CLI for npm\n- `bun run cli:release` : Version, tag, and push the CLI\n\nInside `apps/web`:\n\n- `bun run fetch:thesvg` : Fetch/refresh theSVG brand icons (packs into`icons/thesvg.json` )\n- `bun run fetch:iconify` : Fetch Iconify sets (`-- --sets a,b` ,`-- --all` )\n- `bun run pack:icons` : Collapse loose SVG folders into one JSON per set (`-- --delete` removes sources)\n- `bun run generate-icons` : Rebuild the icon search catalog", "url": "https://wpnews.pro/news/mcp-server-for-340k-svg-icons", "canonical_source": "https://github.com/LeulAria/Aria-Icons", "published_at": "2026-09-07 19:17:55+00:00", "updated_at": "2026-09-07 19:31:48.705773+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["Aria Icons", "LeulAria", "Lucide", "Tabler", "Heroicons", "theSVG", "Iconify", "Cursor"], "alternates": {"html": "https://wpnews.pro/news/mcp-server-for-340k-svg-icons", "markdown": "https://wpnews.pro/news/mcp-server-for-340k-svg-icons.md", "text": "https://wpnews.pro/news/mcp-server-for-340k-svg-icons.txt", "jsonld": "https://wpnews.pro/news/mcp-server-for-340k-svg-icons.jsonld"}}