asset-finder-mcp
<div align="center">
# Asset Finder MCP
**The all-in-one asset search MCP server for AI coding agents**
Find icons, logos, stock photos, vectors, and emoji — all from a single tool call.
[](https://github.com/Erfangit23/asset-finder-mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/asset-finder-mcp)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org)
</div>
---
## Why?
AI coding agents (Cursor, Claude Code, Windsurf, Cline) build UIs every day — but when they need an icon, a logo, or a stock photo, the human has to go find it manually. **Asset Finder MCP fixes this.** Your AI agent can now search 700,000+ assets and pick the right one, in real-time, without leaving the editor.
## What It Does
| Tool | Description | Sources |
|------|-------------|---------|
| `search_icons` | Search 200,000+ UI icons | Iconify |
| `search_logos` | Find brand & company logos | Logo.dev |
| `search_stock_photos` | Search free stock photography | Pexels, Unsplash, Pixabay |
| `search_vectors` | Search 500,000+ SVG vectors | SVG Repo |
| `search_emoji` | Search open-source emoji | OpenMoji |
| `suggest_asset` | Describe what you need → get ranked matches | All sources |
| `get_asset` | Get full details for a specific asset | All sources |
| `list_providers` | Show available asset sources | — |
## Quick Start
### One-line install (no API keys needed):
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"]
}
}
}
```
That's it. The server starts immediately with 3 free providers (Iconify, SVG Repo, OpenMoji) — no signup, no keys, no config.
### With stock photos and logos (optional API keys):
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"],
"env": {
"PEXELS_API_KEY": "your-key",
"UNSPLASH_ACCESS_KEY": "your-key",
"PIXABAY_API_KEY": "your-key",
"LOGO_DEV_TOKEN": "your-token"
}
}
}
}
```
Get free API keys:
- **Pexels** — https://www.pexels.com/api/
- **Unsplash** — https://unsplash.com/developers
- **Pixabay** — https://pixabay.com/api/docs/
- **Logo.dev** — https://logo.dev
## Install in Your Editor
<details>
<summary><b>Claude Desktop</b></summary>
Edit `claude_desktop_config.json`:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"]
}
}
}
```
</details>
<details>
<summary><b>Cursor</b></summary>
Create `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"]
}
}
}
```
</details>
<details>
<summary><b>Windsurf</b></summary>
Edit `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"]
}
}
}
```
</details>
<details>
<summary><b>VS Code (Cline / Continue)</b></summary>
Add to your MCP settings:
```json
{
"mcpServers": {
"asset-finder": {
"command": "npx",
"args": ["-y", "asset-finder-mcp"]
}
}
}
```
</details>
<details>
<summary><b>Local Development</b></summary>
```bash
git clone https://github.com/Erfangit23/asset-finder-mcp.git
cd asset-finder-mcp
npm install
npm run build
npm start
```
</details>
## The `suggest_asset` Tool (The Killer Feature)
Instead of knowing which tool to call, just describe what you need:
```
"suggest_asset" with description: "modern minimalist icon for a settings menu, blue color"
→ searches Iconify + SVG Repo, returns ranked results
"suggest_asset" with description: "Stripe company logo"
→ searches Logo.dev, returns the Stripe logo
"suggest_asset" with description: "professional headshot photo for a team page"
→ searches Pexels + Unsplash + Pixabay, returns photos
"suggest_asset" with description: "cute cat emoji"
→ searches OpenMoji, returns matching emoji
```
The tool auto-detects the asset type from your description and searches the right providers.
## Example: AI Agent Workflow
1. **You ask Cursor:** "Build a settings page with a gear icon and a mountain background image"
2. **Cursor calls:** `suggest_asset("gear settings icon")` → gets SVG icon URL
3. **Cursor calls:** `suggest_asset("mountain landscape background")` → gets stock photo URL
4. **Cursor writes:** The full HTML/CSS with real assets embedded — no placeholders
## Asset Catalog
| Source | Type | Count | API Key | License |
|--------|------|-------|---------|---------|
| Iconify | Icons | 200,000+ | No | Various (per icon set) |
| SVG Repo | Vectors | 500,000+ | No | Various (CC0, CC-BY, etc.) |
| OpenMoji | Emoji | 4,000+ | No | CC BY-SA 4.0 |
| Pexels | Stock Photos | Millions | Yes | Free for commercial use |
| Unsplash | Stock Photos | Millions | Yes | Unsplash License |
| Pixabay | Photos & Vectors | 2M+ | Yes | Pixabay Content License |
| Logo.dev | Brand Logos | 50,000+ | Yes | Free for commercial use |
## Features
- **Zero-config start** — works immediately with 3 free providers, no signup
- **Multi-source aggregation** — one tool call, results from all providers
- **AI-friendly output** — license info, dimensions, format, tags in every result
- **License-aware filtering** — filter by MIT, CC0, CC-BY, commercial-use, etc.
- **Smart suggestion** — describe in natural language, get the right asset type
- **In-memory caching** — LRU cache reduces API calls and latency
- **TypeScript** — fully typed, declaration files included
- **Tested** — unit tests for cache, normalization, and filtering
## Project Structure
```
asset-finder-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── config.ts # Environment config loader
│ ├── types.ts # Shared type definitions
│ ├── tools/
│ │ ├── search-tools.ts # search_icons, search_logos, search_stock_photos, search_vectors, search_emoji
│ │ ├── suggest-asset.ts # suggest_asset (smart multi-provider search)
│ │ ├── get-asset.ts # get_asset (fetch by ID)
│ │ └── list-providers.ts # list_providers (show available sources)
│ ├── providers/
│ │ ├── iconify.ts # 200k+ icons (free, no key)
│ │ ├── svgrepo.ts # 500k+ SVG vectors (free, no key)
│ │ ├── openmoji.ts # Open-source emoji (free, no key)
│ │ ├── pexels.ts # Stock photos (free, key needed)
│ │ ├── unsplash.ts # Stock photos (free, key needed)
│ │ ├── pixabay.ts # Photos & vectors (free, key needed)
│ │ └── logo-dev.ts # Brand logos (free, token needed)
│ └── utils/
│ ├── cache.ts # LRU cache
│ ├── normalize.ts # Result normalization & AI formatting
│ └── license-filter.ts # License/format/color filtering
├── tests/
│ ├── cache.test.ts
│ ├── normalize.test.ts
│ └── license-filter.test.ts
├── examples/
│ ├── claude-desktop.json
│ ├── cursor-config.json
│ └── windsurf-config.json
├── docs/
│ ├── INSTALL.md
│ └── PROVIDERS.md
├── .github/workflows/ci.yml
├── .env.example
├── package.json
├── tsconfig.json
└── LICENSE
```
## Contributing
Contributions are welcome! Here's how to add a new provider:
1. Create `src/providers/your-provider.ts` implementing the `Provider` interface
2. Register it in `src/index.ts`
3. Add tests
4. Update `docs/PROVIDERS.md`
5. Submit a PR
## License
MIT — see [LICENSE](LICENSE)
## Links
- **MCP Specification:** https://modelcontextprotocol.io
- **MCP SDK:** https://github.com/modelcontextprotocol/typescript-sdk
- **Report an issue:** https://github.com/Erfangit23/asset-finder-mcp/issues
---
<div align="center">
**If this project helped you, give it a star!**
</div>
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: search_icons, search_logos, search_stock_photos, search_vectors, and search_emoji target different asset types, while list_providers, suggest_asset, and get_asset handle provider status, cross-source suggestions, and detail retrieval respectively. There is no overlap or ambiguity between any two tools.
All tool names follow a consistent verb_noun pattern in snake_case (list_, search_, suggest_, get_), with logical and descriptive verbs. The naming is uniform and predictable across the entire set.
With exactly 8 tools, the server is well-scoped for an asset finder, covering search for major asset types, provider status, suggestion, and detail retrieval without redundancy or excess. Each tool earns its place.
The tool set provides comprehensive coverage of the asset discovery workflow: listing available providers, searching all major asset types, retrieving detailed metadata, and even a cross-source natural language suggestion tool. There are no obvious missing operations.