MCP server that lets AI coding assistants search the icon libraries your project actually uses (Lucide, Heroicons, React Icons, Phosphor, Tabler, Iconoir, Fluent UI, Carbon, Ant Design) and get exact, version-correct imports.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add trueicon -- npx -y trueicon{
"mcpServers": {
"trueicon": {
"command": "npx",
"args": ["-y", "trueicon"]
}
}
}Resumen de MCP Servers
# TrueIcon
[](https://www.npmjs.com/package/trueicon)
[](https://insiders.vscode.dev/redirect/mcp/install?name=trueicon&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22trueicon%22%5D%2C%22env%22%3A%7B%22TRUEICON_PROJECT_DIR%22%3A%22%24%7BworkspaceFolder%7D%22%7D%7D)
[](https://insiders.vscode.dev/redirect/mcp/install?name=trueicon&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22trueicon%22%5D%2C%22env%22%3A%7B%22TRUEICON_PROJECT_DIR%22%3A%22%24%7BworkspaceFolder%7D%22%7D%7D&quality=insiders)
[](https://cursor.com/en/install-mcp?name=trueicon&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInRydWVpY29uIl0sImVudiI6eyJUUlVFSUNPTl9QUk9KRUNUX0RJUiI6IiR7d29ya3NwYWNlRm9sZGVyfSJ9fQ%3D%3D)
TrueIcon is an [MCP](https://modelcontextprotocol.io) server that gives AI coding assistants exact, version-correct icon references. Your assistant searches the icon packages your project actually uses (`lucide-react`, `react-icons`, `@heroicons/react`, `@phosphor-icons/react`, `@tabler/icons-react`, `iconoir-react`, `@fluentui/react-icons`, `@carbon/icons-react`, `@ant-design/icons`) and gets back real icon names, import paths and a ready-to-paste `import` line.
## Why
AI assistants often guess icon names. The guess can be an icon that never existed, one renamed a few releases ago, or one from a different library, and you only find out when the build fails. TrueIcon closes that gap:
- It reads which icon packages and versions your project uses.
- It downloads those exact versions from npm and indexes every icon once.
- The assistant calls `search_icons` and gets results that are guaranteed to exist in that version, for example `import { Trash2 } from 'lucide-react';`.
## Supported providers
| Provider id | npm package | Icon naming |
| ------------- | ----------------------- | -------------------------------------------------------------------------------------------------------- |
| `lucide` | `lucide-react` | Lucide's file names, e.g. `trash-2` → `Trash2` |
| `heroicons` | `@heroicons/react` | `<icon>-<size>-<style>`, e.g. `trash-24-outline` → `TrashIcon` |
| `react-icons` | `react-icons` | `<set>-<icon>`, e.g. `fa6-beer-mug-empty` → `FaBeerMugEmpty` |
| `phosphor` | `@phosphor-icons/react` | `<icon>` for the regular weight, `<icon>-<weight>` otherwise, e.g. `trash-bold` → `TrashIcon` with `weight="bold"` |
| `tabler` | `@tabler/icons-react` | Tabler's icon names, e.g. `trash` → `IconTrash`, `trash-filled` → `IconTrashFilled` |
| `iconoir` | `iconoir-react` | `<icon>` for regular, `<icon>-solid` for solid, e.g. `trash-solid` → `TrashSolid` |
| `fluentui` | `@fluentui/react-icons` | `<icon>-<style>` with style `regular`, `filled` or `color`, e.g. `delete-regular` → `DeleteRegular`. Only the scalable (1em) icons are indexed, not the size-specific variants |
| `carbon` | `@carbon/icons-react` | Carbon's export names in kebab case, e.g. `trash-can` → `TrashCan`. Variants add `-filled`, `-alt` or `-color`, e.g. `accessibility-filled` → `AccessibilityFilled` |
| `antdesign` | `@ant-design/icons` | `<icon>-<theme>` with theme `outlined`, `filled` or `two-tone`, e.g. `delete-outlined` → `DeleteOutlined` |
Tools accept either the provider id or the npm package name (`"lucide"` or `"lucide-react"`). Usage snippets are for React. Phosphor weights all share one component, so pass the record's `style` as the `weight` prop (e.g. `<TrashIcon weight="bold" />`); the usage snippet only shows the import.
## Install
TrueIcon needs Node.js 20 or newer.
```sh
# Run without installing (this is what the MCP configs below do)
npx -y trueicon
# Or install globally and run the `trueicon` binary
npm i -g trueicon
trueicon
```
`trueicon` is a stdio MCP server. Your MCP client starts it; running it by hand only prints `trueicon: v<version> running on stdio` to stderr and waits for JSON-RPC on stdin.
## Quick start
1. Register TrueIcon with your MCP client ([Claude Code](#claude-code), [Claude Desktop](#claude-desktop), or [VS Code and Cursor](#using-it-in-vs-code-and-cursor)).
2. Ask your assistant for an icon.
That's it for most projects. TrueIcon finds the icon packages your `package.json` lists and the versions installed in `node_modules`. The first search for each package downloads and indexes it, which takes a few seconds. Later searches use the local cache.
## Configuration
### Which icon packages are searched
- **By default**, every supported package listed in `dependencies` or `devDependencies` of your `package.json`.
- **With `.iconmcp.json`** in the project, exactly the packages it lists. Use it to search only some of your icon packages, to add one your `package.json` doesn't list (for example one that comes in through a UI kit), or to pin a version.
```json
{
"providers": [
{ "package": "lucide-react" },
{ "package": "react-icons", "version": "5.3.0" },
{ "package": "@heroicons/react", "version": "^2.1.0" }
]
}
```
| Field | Type | Required | Meaning |
| ----------------------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `providers` | array | yes | Icon packages to search. When it lists any, `package.json` is not used to pick packages. |
| `providers[].package` | string | yes | npm package name: `lucide-react`, `react-icons`, `@heroicons/react`, `@phosphor-icons/react`, `@tabler/icons-react`, `iconoir-react`, `@fluentui/react-icons`, `@carbon/icons-react` or `@ant-design/icons`. |
| `providers[].version` | string | no | Exact version or npm range. Overrides the installed version (see [Versions](#versions)). |
- Unsupported packages in `.iconmcp.json` are skipped, and `search_icons` reports them as a warning.
- Invalid JSON or a malformed entry makes the tools return an error that names the file and the bad field.
- If neither file names a supported package, `search_icons` returns an error that says which directory it looked in. You can still pass `provider` to a tool call.
### Which directory is the project
TrueIcon reads `package.json`, `.iconmcp.json` and `node_modules` from the project directory. It picks the first of:
1. `$TRUEICON_PROJECT_DIR`, when set.
2. A folder your MCP client shares with the server (MCP [roots](https://modelcontextprotocol.io/docs/concepts/roots)) that contains a `package.json` or `.iconmcp.json`. Clients that support roots, like VS Code, tell TrueIcon which folders you're working in, so it follows your open project without any setup.
3. The server's working directory, when it contains one of those files. Claude Code starts servers in your project, so this is how it finds it.
4. The first shared folder, else the working directory.
`list_providers` shows the directory in use and which rule picked it, so you can check what your client does.
### Environment variables
| Variable | Default | Purpose |
| ---------------------- | ------------------------------------ | ---------------------------------------------------- |
| `TRUEICON_PROJECT_DIR` | shared folder, else working directory | Project root holding `package.json` and `.iconmcp.json` |
| `TRUEICON_CACHE` | `~/.trueicon/cache` | Where downloaded packages and indexes are stored |
## Versions
### Auto-detection
A provider's version is resolved in this order:
1. The `version` argument passed to the tool call, if any.
2. The provider's `version` in `.iconmcp.json`.
3. The version installed in `node_modules`, looking in the project directory and then each parent directory, so packages hoisted to a monorepo root are found.
4. The version range declared for the package in the project's `package.json`, checking `dependencies` first and then `devDependencies`.
If none of these is available, the tool asks you to pin the version or add the package to `package.json`. TrueIcon doesn't read your lockfile, and it downloads its own copy of the package from npm rather than using the files in `node_modules`. For a range, it indexes the range's base version: `^0.460.0` indexes `lucide-react@0.460.0`. For `a || b` ranges, only the first part counts. Before you run `npm install`, that base version can be older than what you'll get, so pin it in `.iconmcp.json` if the exact version matters.
### Version policy
Indexes are keyed by **major.minor**:
- **Patch versions are ignored.** One index serves all of `0.460.x`. The index built from `0.460.0` answers requests for `0.460.3`.
- **A minor change gets its own index.** Bumping `lucide-react` from `0.460` to `0.461` builds a fresh index on the next search, with no manual step.
- **Majors are strict.** A different major is always a separate index and is never served from another major's index.
- **Cached indexes rebuild automatically** when the bundled `synonyms.json` changes (detected by hash) or the index format changes.
## Using it with Claude
### Claude Code
Add TrueIcon from your project directory:
```sh
claude mcp add trueicon -- npx -y trueicon
```
Or Lo que la gente pregunta sobre trueicon
¿Qué es manikumarkv/trueicon?
+
manikumarkv/trueicon es mcp servers para el ecosistema de Claude AI. MCP server that lets AI coding assistants search the icon libraries your project actually uses (Lucide, Heroicons, React Icons, Phosphor, Tabler, Iconoir, Fluent UI, Carbon, Ant Design) and get exact, version-correct imports. Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-09-24.
¿Cómo se instala trueicon?
+
Puedes instalar trueicon clonando el repositorio (https://github.com/manikumarkv/trueicon) 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 manikumarkv/trueicon?
+
Nuestro agente de seguridad ha analizado manikumarkv/trueicon y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene manikumarkv/trueicon?
+
manikumarkv/trueicon es mantenido por manikumarkv. La última actividad registrada en GitHub es del 2026-09-24, con 1 issues abiertos.
¿Hay alternativas a trueicon?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega trueicon 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.
[](https://claudewave.com/repo/manikumarkv-trueicon)<a href="https://claudewave.com/repo/manikumarkv-trueicon"><img src="https://claudewave.com/api/badge/manikumarkv-trueicon" alt="Featured on ClaudeWave: manikumarkv/trueicon" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.