Skip to main content
Glama
Erfangit23

asset-finder-mcp

by Erfangit23

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.

CI npm version License: MIT Node.js


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.

Related MCP server: PickAPIcon MCP

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):

{
  "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):

{
  "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:

Install in Your Editor

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "asset-finder": {
      "command": "npx",
      "args": ["-y", "asset-finder-mcp"]
    }
  }
}

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "asset-finder": {
      "command": "npx",
      "args": ["-y", "asset-finder-mcp"]
    }
  }
}

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "asset-finder": {
      "command": "npx",
      "args": ["-y", "asset-finder-mcp"]
    }
  }
}

Add to your MCP settings:

{
  "mcpServers": {
    "asset-finder": {
      "command": "npx",
      "args": ["-y", "asset-finder-mcp"]
    }
  }
}
git clone https://github.com/Erfangit23/asset-finder-mcp.git
cd asset-finder-mcp
npm install
npm run build
npm start

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


If this project helped you, give it a star!

Available Tools

8 tools
get_assetA

Get full details for a specific asset by its ID (e.g. 'iconify:mdi:home' or 'pexels:12345'). Returns the asset URL, download URL, license info, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID (e.g. 'iconify:mdi:home', 'svgrepo:12345', 'unsplash:abc123')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description takes on the burden. It discloses the return payload (URL, download URL, license, metadata) but doesn't mention error handling, rate limits, or authentication requirements, which is a moderate gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action and scoped by 'specific asset by its ID'. No filler, each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID with no output schema, the description adequately covers the return values and ID format. It may lack error conditions, but given the low complexity, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a full description of the 'id' parameter with examples. The description's examples overlap with the schema, adding little new semantic meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb 'Get' and resource 'asset by its ID', distinguishing it from sibling search tools. It also provides concrete ID format examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by its ID' implies use when an ID is already known, contrasting with the search-oriented siblings. It doesn't explicitly mention alternatives like search_icons, but the context is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_providersA

List all available asset providers and their status. Shows which providers are configured and ready to search. Use this to understand what sources are available before searching.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosure. It states the tool lists configured providers and their readiness to search, which conveys read-only, non-destructive behavior. It doesn't elaborate on return format or edge cases, but for a simple listing tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the key action and resource. Every sentence adds value: the first states the function, the second explains the purpose and timing. No redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is quite complete: it states what is returned (providers and status) and when to use it. It could mention the exact output structure, but the simplicity of the tool makes the description sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema already documents this (100% coverage). Baseline for no parameters is 4, and the description doesn't need to add parameter semantics since there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a clear resource ('all available asset providers') and adds scope ('their status'). It clearly distinguishes from sibling search tools by focusing on enumerating providers rather than searching for assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to use this tool 'before searching,' providing clear context for when it applies. It doesn't mention when not to use or alternatives, but the phrasing effectively differentiates it from the search-focused siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_emojiA

Search for open-source emoji from OpenMoji. Returns SVG emoji files. All emoji are CC BY-SA 4.0 licensed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
queryYesSearch term (e.g. 'happy face', 'rocket', 'heart love')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It discloses that the tool returns SVG emoji files and notes the CC BY-SA 4.0 license, which is useful behavioral context. However, it does not mention potential caveats like rate limits, pagination, or behavior on empty results, so it's not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences, each adding value: the purpose, the output format, and licensing. It is front-loaded with the key action and resource, with no redundant or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with two parameters and no output schema, the description is fairly complete. It states what is searched, what is returned, and the license. It does not detail the exact response structure, but that is less critical given the absence of an output schema and the simplicity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameter descriptions, so the baseline is 3. The description adds minimal param-specific meaning beyond the schema; it does not elaborate on 'query' or 'limit' syntax or behavior. The schema's own descriptions are sufficient, so the description adds little extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search for open-source emoji from OpenMoji') and specifies the resource type (emoji from OpenMoji). It explicitly differentiates from sibling tools like search_icons and search_logos by naming the provider and asset type, and mentions the output format (SVG files).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when searching for open-source emoji from OpenMoji. However, it does not explicitly mention alternatives or exclusions (e.g., 'use search_icons for icons'). The context is clear but lacks explicit alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_iconsA

Search for icons from 200,000+ icons across 150+ icon sets (Iconify). Returns SVG icons with license info. Perfect for finding UI icons, app icons, and symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
queryYesSearch term for icons (e.g. 'settings gear', 'home', 'user avatar')
licenseNoFilter by license: mit, cc0, cc-by, free-for-commercial

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does disclose key behavior: returns SVG icons with license info, and implies a read-only search. However, it lacks details on search behavior (matching, ordering), result size limits, or potential error handling, making it only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each adding value: what it searches, what it returns, and when to use it. Front-loaded with the verb 'Search.' No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward search tool with a well-documented schema and no output schema, the description is complete enough for an agent to select and invoke it. It covers the resource, return type, and use cases. It doesn't mention potential alternatives but that's more relevant to usage guidelines, which already scored a 4.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter meanings are already fully documented in the input schema. The description adds no additional parameter semantics, and per the rubric, baseline is 3 when schema covers parameters well. No bonus or penalty beyond baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for icons from a large collection (200,000+ icons, 150+ sets) and returns SVG icons with license info. It mentions use cases ('UI icons, app icons, symbols') which helps distinguish from sibling tools like search_logos or search_emoji, but it does not explicitly differentiate from search_vectors, which could overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'Perfect for finding UI icons, app icons, and symbols.' It implies usage for icon-specific needs but does not explicitly state when not to use it or name alternative tools, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_logosA

Search for brand and company logos. Returns high-quality PNG logos for 50,000+ brands. Requires LOGO_DEV_TOKEN env var for full functionality.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5)
queryYesBrand or company name (e.g. 'Google', 'Microsoft', 'Stripe')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns high-quality PNG logos, has a large brand coverage, and requires a specific env var for full functionality. This provides useful behavioral context beyond a simple 'search' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the main purpose. Every sentence adds value: the first states the function and key attribute (logos), the second adds scale and a prerequisite. No wasteful words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, the schema covers parameters, and there is no output schema, the description is fairly complete. It explains the return format (PNG), coverage, and token requirement. It could mention how results are returned (e.g., URLs or binary data), but that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, as both query and limit have descriptive text. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and a specific resource ('brand and company logos'), clearly distinguishing it from sibling tools like search_icons, search_vectors, and search_stock_photos. It also adds context about output format (PNG) and scale (50,000+ brands).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: use this when needing brand/company logos. It also mentions a prerequisite (LOGO_DEV_TOKEN) for full functionality, which helps set expectations. However, it does not explicitly state when not to use it or name alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_stock_photosA

Search for free stock photos from Pexels, Unsplash, and Pixabay. Photos are free for commercial use. Set PEXELS_API_KEY, UNSPLASH_ACCESS_KEY, or PIXABAY_API_KEY env vars to enable respective providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoFilter by hex color (e.g. '#3498db' or '3498db')
limitNoMax results per provider (default 10)
queryYesSearch term (e.g. 'mountain landscape', 'office workspace', 'team meeting')
licenseNoFilter by license type

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It adds useful context about free commercial use and provider enablement via env vars, but it does not disclose behavior like what happens if no API keys are set, how results are aggregated across providers, or any rate limits. This is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences: the first states the core purpose, the second adds licensing and setup notes. Every sentence earns its place with no wasted words, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters and no output schema, so the description should explain return values or error behavior. It does not mention what the search returns (e.g., photo URLs, metadata) or how missing API keys are handled. Given the multi-provider complexity, this is a notable gap, though the core purpose and provider setup are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameter descriptions (query, color, limit, license), so the description itself does not need to add parameter details. It adds no extra semantic value beyond the schema, and the baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search for free stock photos from Pexels, Unsplash, and Pixabay.' It uses a specific verb ('search') and specifies the resource type (stock photos) along with named providers, distinguishing it from sibling tools like search_icons or search_vectors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when searching for stock photos) through its clear purpose, and it provides setup context by mentioning required environment variables for each provider. However, it does not explicitly state exclusions or alternative tools, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_vectorsA

Search for SVG vectors and illustrations from SVG Repo (500,000+ open-licensed SVGs). Returns downloadable SVG files with license information.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 15)
queryYesSearch term (e.g. 'arrow', 'chart graph', 'phone mobile')
licenseNoFilter by license: cc0, cc-by, cc-by-sa, cc-by-nc

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses that the tool returns downloadable SVG files with license information, but it omits details like output format, pagination behavior, or error handling. This is moderate disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the primary action and result. It contains no filler, redundancy, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter search tool with no output schema, the description covers purpose, source, and return type (downloadable SVG files with license info). It lacks detailed output structure, but is sufficiently complete for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% parameter coverage with descriptions, so the baseline is 3. The tool description adds no extra parameter semantics beyond the schema, only mentioning license information in the return context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Search' and resource 'SVG vectors and illustrations from SVG Repo', with scale and licensing context. It distinguishes from siblings like search_icons and search_logos by specifying a different asset category and source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool (when searching for SVG vectors/illustrations from SVG Repo), but it does not explicitly mention exclusions or alternative sibling tools. This aligns with 'clear context, no exclusions'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_assetA

Smart asset suggestion — describe what you need in natural language and get the best matching assets across all sources (icons, logos, stock photos, vectors, emoji). The tool automatically picks the right provider(s) based on your description. Use this when you're not sure which specific asset type to search for.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per provider (default 5)
licenseNoFilter by license: mit, cc0, cc-by, free-for-commercial, personal-only
descriptionYesNatural language description of what you need. Be specific about style, purpose, and context. Examples: 'modern minimalist icon for a settings menu in blue', 'professional headshot photo for a team page', 'Stripe company logo', 'cute cat emoji'
preferred_typeNoPreferred asset type: icon, logo, stock-photo, vector, emoji. If not specified, all relevant types are searched.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavior. It discloses that the tool automatically selects provider(s) and searches all sources, giving insight into its decision-making. It doesn't detail ranking or limitations, but covers the essential behavior for a suggestion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that lead with the core action and immediately explain the tool's advantage. Every word adds value, and the structure is clear and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters and no output schema, the description adequately explains the input style and behavior. It could mention what the response looks like, but 'get the best matching assets' signals the output. Sibling context and schema fill most remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all parameters. The tool description adds context about the 'description' parameter (natural language) but doesn't significantly enhance understanding beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: suggesting assets across all sources based on natural language input. It distinguishes itself from sibling search tools by explicitly targeting cases where the user doesn't know the exact asset type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Use this when you're not sure which specific asset type to search for.' This tells the agent exactly when to select this tool over the specialized search_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedget_asset
    • First observedlist_providers
    • First observedsearch_emoji
    • First observedsearch_icons
    • First observedsearch_logos
    • First observedsearch_stock_photos
    • First observedsearch_vectors
    • First observedsuggest_asset

TDQS

A4.3/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A search service based on multiple image APIs and icon generation capabilities, specifically designed for integration with Cursor MCP service. Supports image search, download, and AI-generated icons.
    16
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server that allows FE/UI/Designers to retrieve SVG icons via the Iconify API by simply asking LLMs rather than manually searching websites.
    3
    30
    4
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Tool search engine for AI agents. One API call to discover the best MCP server for any task. 900+ services indexed with 4-dimensional value ranking.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Erfangit23/asset-finder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server