Skip to main content
Glama
ZengZichao

Bioicons MCP Server

by ZengZichao

Bioicons MCP Server

⚠️ Third-Party / Unofficial Implementation

This is an independent, community-developed MCP server and is not the official MCP server for bioicons.com. This project is not affiliated with, endorsed by, or sponsored by bioicons.com or its creator. The official bioicons.com website can be found at https://bioicons.com.

Version 0.1.0

A Model Context Protocol server for bioicons.com — a free library of 2800+ high quality science illustrations.

中文文档 (Chinese README)


Table of Contents

  1. Overview

  2. Features

  3. Quick Start

  4. Installation

  5. Client Configuration

  6. Tools Reference

  7. Prompts

  8. Transport Modes

  9. Project Structure

  10. Development

  11. Licensing

  12. FAQ


Related MCP server: brain-mcp-icon-visual

Overview

Bioicons MCP Server bridges bioicons.com — a curated library of open-source SVG illustrations for the life sciences — and any AI client that supports the Model Context Protocol (MCP), such as Claude Desktop, Cursor, or Cline.

With this server, your AI assistant can:

  • 🔍 Search the entire bioicons.com icon library (2800+ icons)

  • 📋 Inspect icon metadata (name, category, license, author)

  • 📥 Download SVG files to your local filesystem

  • 🏷️ Understand licensing and attribution requirements for each icon

What is bioicons.com?

Created by Simon Duerr, bioicons.com is an open platform providing high-quality vector illustrations for scientific figures. All icons are available as SVG files under permissive licenses (CC0, CC BY, CC BY-SA, MIT, BSD) and can be used in Inkscape, Adobe Illustrator, Microsoft Office, and more.


Features

Feature

Description

✅ Full-text search

Search icons by keyword; multiple tokens are AND-matched

✅ Category filtering

Filter by 37 bio-science categories

✅ License filtering

Filter by CC0 / CC BY / CC BY-SA / MIT / BSD

✅ SVG retrieval

Fetch raw SVG source of any icon

✅ Local download

Save SVG files to a specified directory

✅ Rich metadata

Full icon info including license URL and attribution requirements

✅ Bilingual

Category descriptions in English and Chinese

✅ stdio transport

For Claude Desktop, Cursor, and other local clients

✅ SSE transport

For remote / web-based clients

✅ In-memory cache

Metadata cached for 1 hour to minimise network requests

✅ Prompt template

Built-in "find science icons" prompt


Quick Start

Prerequisites

  • Python ≥ 3.10

  • Network access to https://bioicons.com

  • An MCP-compatible client (recommended: Claude Desktop or Cursor)

60-Second Setup

# 1. Enter the project directory
cd Bioicons-MCP

# 2. Create and activate a virtual environment
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Install the package (editable mode)
pip install -e .

# 5. Verify installation
bioicons-mcp --help

Expected output:

usage: bioicons-mcp [-h] [--transport {stdio,sse}] [--host HOST] [--port PORT]

MCP server for bioicons.com — high quality science illustrations.

Installation

git clone <your-repo-url> Bioicons-MCP
cd Bioicons-MCP
pip install -e .

Option B: Run directly without installing

cd Bioicons-MCP
pip install -r requirements.txt
python -m bioicons_mcp --transport stdio

Client Configuration

Claude Desktop

Edit the Claude Desktop config file:

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

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

{
  "mcpServers": {
    "bioicons": {
      "command": "python",
      "args": ["-m", "bioicons_mcp"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

Tip: If you're using a virtual environment, replace "python" with the full path to the Python executable, e.g. "C:\\Bioicons-MCP\\.venv\\Scripts\\python.exe".

Cursor

Navigate to Settings → MCP and add:

{
  "mcpServers": {
    "bioicons": {
      "command": "python",
      "args": ["-m", "bioicons_mcp"]
    }
  }
}

Cline (VS Code)

In .cline/mcp_settings.json:

{
  "mcpServers": {
    "bioicons": {
      "command": "python",
      "args": ["-m", "bioicons_mcp"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

SSE Mode (Remote Deployment)

Start the SSE server:

bioicons-mcp --transport sse --host 0.0.0.0 --port 8080

Then configure your client with the SSE URL:

http://<server-ip>:8080/sse

Tools Reference

The server exposes 5 tools that AI clients can call automatically.

1. list_categories — List All Categories

Lists every bioicons.com category with icon counts and descriptions.

Parameters:

Parameter

Type

Required

Default

Description

language

string ("en" / "zh")

No

"en"

Language for descriptions

Example:

list_categories(language="en")

Sample output:

# bioicons.com Icon Categories
Total icons: 2829

- **All_icons** (2829 icons): All available icons on bioicons.com
- **Amino-Acids** (31 icons): Amino acid illustrations
- **Animals** (384 icons): Animal and model organism illustrations
- **Chemistry** (92 icons): Chemistry illustrations
...

2. search_icons — Search Icons

Search the icon library by keyword, with optional category and license filters.

Parameters:

Parameter

Type

Required

Default

Description

query

string

✅

—

Search keywords (space-separated, all must match)

category

string

No

"All_icons"

Category filter

license

string

No

""

License filter

limit

integer

No

50

Max results (cap: 500)

Example:

search_icons(query="alanine", category="Amino-Acids", limit=10)

License slugs:

Slug

Full name

Attribution required

cc-0

CC0 (Public Domain)

No

cc-by-3.0

CC BY 3.0

Yes

cc-by-4.0

CC BY 4.0

Yes

cc-by-sa-3.0

CC BY-SA 3.0

Yes

cc-by-sa-4.0

CC BY-SA 4.0

Yes

mit

MIT

Yes

bsd

BSD 3-Clause

Yes

3. get_icon — Get SVG Content

Fetch the raw SVG source of a specific icon.

Parameters:

Parameter

Type

Required

Description

name

string

✅

Icon name (without .svg)

category

string

No

Category slug for exact matching

license

string

No

License slug for exact matching

author

string

No

Author slug for exact matching

If only name is provided, the first matching icon is returned.

Example:

get_icon(name="alanine")

4. download_icon — Download SVG to Disk

Save an icon's SVG file to the local filesystem.

Parameters:

Parameter

Type

Required

Default

Description

name

string

✅

—

Icon name

save_dir

string

No

"."

Save directory (auto-created)

filename

string

No

icon name

Custom filename

category

string

No

""

Category slug

license

string

No

""

License slug

author

string

No

""

Author slug

Example:

download_icon(name="PyTorch", save_dir="./icons", filename="pytorch.svg")

The tool will also display an attribution reminder if the icon's license requires it.

5. get_icon_info — Get Icon Metadata

Return detailed metadata for a specific icon, including license name, URL, and attribution requirements.

Parameters:

Parameter

Type

Required

Description

name

string

✅

Icon name

category

string

No

Category slug

license

string

No

License slug

author

string

No

Author slug

Sample JSON output:

{
  "name": "alanine",
  "category": "Amino-Acids",
  "license": {
    "slug": "cc-0",
    "name": "CC0 (Public Domain)",
    "url": "https://creativecommons.org/publicdomain/zero/1.0/",
    "requires_attribution": "no"
  },
  "author": "B--Gideon-Bergheim",
  "svg_url": "https://bioicons.com/icons/cc-0/Amino-Acids/B--Gideon-Bergheim/alanine.svg"
}

Prompts

The server includes one reusable prompt template:

find_science_icons

Find science illustrations based on a natural-language description.

Parameters:

Parameter

Type

Required

Description

description

string

✅

Natural-language description of the desired icon

category

string

No

Optional category to narrow the search

Example usage:

"Find me an icon of a DNA double helix"

The AI will automatically call search_icons with the keyword "DNA" and suggest the most relevant icons.


Transport Modes

stdio (default)

For local MCP clients (Claude Desktop, Cursor, etc.):

bioicons-mcp                       # default stdio
bioicons-mcp --transport stdio     # explicit

SSE

For remote deployment or web-based clients:

bioicons-mcp --transport sse --host 0.0.0.0 --port 8080

SSE endpoints:

  • Connection URL: http://<host>:<port>/sse

  • Message endpoint: http://<host>:<port>/messages/


Project Structure

Bioicons-MCP/
├── src/
│   └── bioicons_mcp/
│       ├── __init__.py        # Package init, version
│       ├── __main__.py        # Enable: python -m bioicons_mcp
│       ├── server.py          # MCP Server core (tools, prompts, transport)
│       ├── client.py          # Async bioicons.com API client (with cache)
│       ├── models.py          # IconInfo data model
│       ├── constants.py       # Constants: URLs, licenses, category descriptions
│       └── py.typed           # PEP 561 type marker
├── tests/
│   └── test_server.py         # Unit tests (no network required)
├── pyproject.toml              # Project metadata & build config
├── requirements.txt            # Runtime dependencies
├── requirements-dev.txt        # Development dependencies
├── LICENSE                     # MIT License
├── README.md                   # English documentation (this file)
├── README_CN.md                # Chinese documentation
└── examples/
    ├── claude_desktop_config.json   # Claude Desktop config example
    ├── cursor_mcp_config.json       # Cursor config example
    └── cline_mcp_settings.json      # Cline config example

Development

Running Tests

pip install -r requirements-dev.txt
pytest tests/ -v

Linting & Type Checking

ruff check src/ tests/
mypy src/

Architecture

┌─────────────────┐     MCP (stdio/SSE)     ┌──────────────────┐
│  MCP Client      │ ◄───────────────────► │  bioicons-mcp     │
│  (Claude, etc.)  │                         │  Server           │
└─────────────────┘                         └────────┬──────────┘
                                                     │
                                                     │ Async HTTP
                                                     ▼
                                            ┌──────────────────┐
                                            │  bioicons.com    │
                                            │  (GitHub Pages)  │
                                            │                  │
                                            │  icons.json      │
                                            │  categories.json │
                                            │  authors.json    │
                                            │  */icon.svg      │
                                            └──────────────────┘

Key design decisions:

  1. BioiconsClient communicates with bioicons.com via httpx.AsyncClient, fetching JSON metadata in parallel and caching it for 1 hour.

  2. IconInfo is an immutable dataclass (frozen=True, slots=True) with a matches_query method that mirrors the bioicons.com website's search logic.

  3. constants.py centralises all static information for easy maintenance when the upstream site changes.

  4. SVG URL construction follows bioicons.com's deterministic path: /icons/{license}/{category}/{author}/{name}.svg.


Licensing

This MCP Server

The server code is licensed under the MIT License. See LICENSE.

Icons on bioicons.com

Icons accessed through this server are hosted by bioicons.com and each has its own license. Always check and respect the license of each icon you download.

License

Attribution required

Notes

CC0

No

Public domain, free to use

CC BY 3.0/4.0

Yes

Attribute the author

CC BY-SA 3.0/4.0

Yes

Attribute + share-alike

MIT

Yes

Retain copyright notice

BSD

Yes

Retain copyright notice

Attribution example:

alanine icon by B--Gideon-Bergheim is licensed under CC0 (https://creativecommons.org/publicdomain/zero/1.0/)


FAQ

Q1: I get ModuleNotFoundError: No module named 'mcp'

Install the dependencies:

pip install -r requirements.txt

Q2: Search returns no results

  • Verify network access to https://bioicons.com

  • The search is case-insensitive but requires all whitespace-separated tokens to appear in the icon name

  • Try broader keywords (e.g. "DNA" instead of "dna_replication_fork")

Q3: Tools don't appear in Claude Desktop

  • Restart Claude Desktop

  • Check the JSON syntax of your config file

  • Verify the Python path is correct (use an absolute path)

Q4: Can I use this offline?

bioicons.com is a static website and metadata must be fetched online. Offline mode is not currently supported, but you could manually download icons.json and modify client.py to read from a local file.

Q5: Which Python versions are supported?

Python 3.10 and above.


Contributing

Contributions are welcome! Please read our Contributing Guidelines before submitting a pull request.

To report a security vulnerability, see our Security Policy.



Disclaimer

This project is a third-party, unofficial MCP server implementation for bioicons.com. It is not created, maintained, or endorsed by bioicons.com or its creator Simon Duerr. The official bioicons.com website is independently operated at https://bioicons.com.

This project simply provides an MCP adapter that interfaces with the publicly accessible data on bioicons.com. All icons accessed through this server remain the property of their respective authors and are subject to their individual licenses.


This project is an independent, third-party community MCP adapter and is not officially affiliated with or endorsed by bioicons.com.

Available Tools

5 tools
download_iconA

Download an icon's SVG file from bioicons.com and save it to the local filesystem. Returns the saved file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesIcon name (without .svg).
authorNoAuthor slug (optional).
licenseNoLicense slug (optional).
categoryNoCategory slug (optional).
filenameNoCustom file name (with or without .svg). Defaults to the icon name.
save_dirNoDirectory where the SVG file should be saved. Created if it does not exist. Defaults to the current working directory..

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the key side effect (writes a file to the local filesystem) and the return value (saved file path), which is the most important behavior for a write tool. However, it says nothing about overwrite behavior, permissions, network/rate-limit constraints, or failure modes.

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 sentences, zero waste, with the action and the source front-loaded and the return value last. Nothing is repeated from the schema.

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?

There is no output schema, but the description covers the return value explicitly, and all parameters are fully documented in the schema. For a simple single-file download tool the only real gap is the absence of overwrite/permission behavior.

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%, including defaults and the 'created if it does not exist' note on save_dir, so the schema already documents all six parameters. The description adds no parameter-level meaning beyond that, which is the baseline-3 case.

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?

States a specific verb and resource ('Download an icon's SVG file'), names the source (bioicons.com), and states the effect (save to local filesystem) plus the return value. This is clear enough to distinguish it from the read-only siblings (get_icon, get_icon_info), though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: you use this when you need the SVG persisted to disk rather than fetched into context. No when-to-use/when-not guidance and no mention of when get_icon would be the better choice, so the agent must infer the distinction.

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

get_iconA

Fetch the SVG content of a specific icon from bioicons.com. Provide either the exact icon name or all four identifying fields (name, category, license, author). The SVG source is returned as text.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesIcon name (without .svg extension).
authorNoAuthor slug. If omitted, the first icon matching *name* is used.
licenseNoLicense slug. If omitted, the first icon matching *name* is used.
categoryNoCategory slug. If omitted, the first icon matching *name* is used.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the return shape ('SVG source is returned as text') but says nothing about failure behavior when an icon is not found, ambiguity resolution beyond the schema's fallback note, or rate/auth limits. Partial coverage of the behavioral surface.

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 tight sentences, front-loaded with purpose, then invocation rule, then return type. No filler or repetition of the tool name.

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?

For a 4-parameter read tool with no annotations and no output schema, the description covers purpose, invocation and return type. It omits error/no-match behavior and disambiguation guidance, leaving gaps an agent might hit in practice.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds genuine value by explaining the either/or resolution strategy — exact name alone, or all four identifying fields together — which is an invocation constraint not spelled out in the schema itself.

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?

States a specific verb (Fetch) and resource (SVG content of an icon) with the source named (bioicons.com), which is clear and concrete. It does not, however, differentiate itself from siblings like get_icon_info or download_icon, which an agent could confuse with this one.

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

Usage Guidelines3/5

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

The description gives invocation guidance ('Provide either the exact icon name or all four identifying fields'), which helps the agent know how to supply parameters. It says nothing about when to choose this tool over get_icon_info or download_icon, so alternative selection is left to inference.

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

get_icon_infoB

Return detailed metadata for a specific icon: name, category, license (with full name and URL), author, SVG download URL, and attribution requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesIcon name (without .svg).
authorNoAuthor slug (optional).
licenseNoLicense slug (optional).
categoryNoCategory slug (optional).

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the return contents (including attribution requirements and the SVG URL), which is genuinely useful because there is no output schema. It says nothing, though, about behavior on a missing icon, whether the optional author/license/category params act as filters or disambiguators, or any permissions/rate limits.

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 packs the verb, resource, and return contents with zero filler. Every clause 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?

With no output schema, the description correctly compensates by enumerating the returned metadata fields, which is the most important missing piece. The remaining gap is selection guidance against the closely-related get_icon and download_icon siblings.

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 all four parameters are already documented in the schema and the baseline is 3. The description adds only marginal semantic value — the parenthetical '(with full name and URL)' hints that the license field is structured — and does not explain how the optional author/license/category params change the lookup.

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?

States a specific verb and resource ("Return detailed metadata for a specific icon") and enumerates the exact fields returned, so the agent knows this is a metadata lookup rather than a download. However, it does not distinguish itself from the near-identical sibling get_icon, nor explain how it relates to download_icon, leaving the agent to guess between them.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no named alternative — despite a sibling named get_icon that appears to serve a very similar purpose. Usage is only implied by the listed return fields.

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

list_categoriesA

List all icon categories available on bioicons.com, each with the number of icons and descriptions in both English and Chinese.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage for category descriptions: 'en' for English, 'zh' for Chinese.en

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'List all' implies a read-only operation and it discloses returned fields (icon counts and bilingual descriptions), but it omits pagination, ordering, authentication, or rate-limit behavior.

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 efficiently structured sentence with no filler. The core action and returned content are front-loaded.

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 one-parameter read tool with no output schema, the description gives enough context about what is returned. It could be more complete by explaining how the language parameter affects the bilingual descriptions.

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%, so the language enum is already documented. The description mentions English and Chinese descriptions but does not clarify how that relates to the single language parameter, adding little parameter-specific meaning and creating mild ambiguity.

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?

States a specific verb and resource: list all icon categories available on bioicons.com. It also says what each category includes, making it clearly distinct from sibling tools that fetch, search, or download individual icons.

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

Usage Guidelines3/5

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

The description implies browsing/discovery usage by saying it lists all categories, but it does not explicitly say when to use this instead of search_icons or get_icon. No exclusions or prerequisites are stated.

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

search_iconsA

Search the bioicons.com icon library by keyword. Returns matching icons with name, category, license, author and a direct SVG download URL. Optionally filter by category and/or license.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 50, max 500).
queryYesSearch keywords. The search is case-insensitive and every whitespace-separated token must appear in the icon name.
licenseNoFilter by license slug (e.g. 'cc-0', 'mit', 'bsd', 'cc-by-4.0', 'cc-by-sa-4.0'). Empty string means no license filter.
categoryNoFilter by category slug (e.g. 'Amino-Acids', 'Chemistry'). Use 'All_icons' (default) to search all categories.All_icons

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the returned field set and that filtering is optional, which is useful behavioral context. It omits other traits an agent would want: read-only/safety profile, pagination behavior beyond the limit param, rate limits, and auth requirements. Disclosing the return shape is real value, but the behavioral picture is incomplete.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the purpose, then return values, then filters; no filler. Slightly more could be said about routing, but nothing present is wasted.

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 read-only search tool with no output schema, explaining the returned fields (including the SVG URL) is exactly the missing piece and it is supplied. The schema fully covers the parameters, and the absence of annotations makes the safety/profile omission a modest gap rather than a fatal one.

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 query, limit, license, and category are all documented in the schema itself; the baseline is 3. The description only restates optional category/license filtering and adds no syntax or format detail beyond the schema.

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?

States a specific verb (Search) and resource (bioicons.com icon library) scoped to keyword search, and enumerates what comes back (name, category, license, author, SVG URL). It never contrasts against siblings like get_icon or list_categories, so an agent must infer the boundary, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

'Search ... by keyword' plus 'Optionally filter by category and/or license' implies the discovery use case, which is adequate for a search tool. However there is no explicit when-to-use-vs-alternatives guidance (e.g. use this to find icons, then get_icon_info or download_icon), leaving the agent to infer routing among four 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.

  1. 5 tool updatesv0.1.0
    • First observeddownload_icon
    • First observedget_icon
    • First observedget_icon_info
    • First observedlist_categories
    • First observedsearch_icons

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation4/5

get_icon, download_icon, and get_icon_info all target a single icon and could be momentarily confused, but descriptions clearly separate them (SVG text vs. saved file vs. metadata). list_categories and search_icons are cleanly distinct discovery tools.

Naming Consistency5/5

All five tools follow a consistent verb_noun snake_case pattern: download_icon, list_categories, search_icons, get_icon, get_icon_info. No deviations or mixed conventions.

Tool Count5/5

Five tools is well-scoped for an icon library: discovery (list/search), inspection (info), and retrieval (get/download) each earn their place without redundancy.

Completeness4/5

The surface covers discovery, metadata, SVG retrieval, and download, forming a full lifecycle. Only minor gaps like bulk download or pagination controls prevent a perfect score.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to search, browse, and download professional icons from The Noun Project directly within MCP-compatible environments. It supports SVG and PNG formats with customizable styles and provides optimized modes for free and paid API tiers.
    7
    50 npm
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Visual icon search, retrieval, and comparison for AI agents. Search 200k+ icons semantically, render side-by-side comparison grids, and retrieve raw SVG markup — all tools return images so vision-capable LLMs can see the icons.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI coding tools to search, inspect, recommend, and export SVG icons from svgicons.com for use in design systems, frontend projects, and AI-assisted workflows.
    MIT