freeicon-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| i_guideA | Return the usage guide for this freeicon MCP (tool list, login flow, search→download workflow, key rules). Call this first if unsure how to use the tools. No login required. |
| i_versionA | Return the current version of this freeicon MCP server and check if a newer version is available on GitHub. |
| i_check_networkA | Check if iconfont.cn is reachable from this machine. Tests DNS resolution and TCP connectivity. If unreachable, provides troubleshooting steps (DNS change, hosts file, VPN). |
| i_loginA | Start a local reverse-proxy login server for iconfont.cn and return its URL. Open the URL in your normal browser and log in (any method: phone+password, WeChat scan, GitHub, Weibo, SMS, etc.). After success the page shows a "登录成功" notice and the user can close the tab (the proxy serves it for a few seconds, then shuts itself down; a later "connection refused" on that tab is normal). Cookies are captured automatically. Then call i_login_wait (or i_check_auth) to confirm. This is the recommended login method. |
| i_login_waitA | Block until the login server (started by login) reports a successful login, then shut it down. Returns the captured login info. |
| i_login_with_cookieA | Log in to iconfont.cn by pasting a raw Cookie header copied from a logged-in browser session (e.g. browser DevTools > Network > Request Headers > cookie). This is the MOST reliable method and works in headless/CI environments. The cookie string must include the "ctoken" entry (or pass ctoken separately). |
| i_login_with_passwordA | Log in to iconfont.cn with a phone number + password. Opens a visible browser and auto-fills the form. If a slider/captcha appears, solve it in the window — cookies are captured automatically once login completes. |
| i_login_send_smsA | Step 1 of SMS login. Opens a browser, fills the phone number and requests a verification code. Then call i_login_with_sms with the received code within 3 minutes. |
| i_login_with_smsA | Step 2 of SMS login. Submit the SMS verification code received after calling login_send_sms. Cookies are captured automatically once login completes. |
| i_check_authB | Check if you are currently logged in to iconfont.cn. |
| i_searchA | Search icons OR illustrations (插画) on iconfont.cn by keyword. Set type="illustration" for multi-color artwork (returns original SVG downloadable via i_download_svg, no color override). Icons must be downloaded via i_download_svg with a recent search. |
| i_detailA | Get detailed information about an icon on iconfont.cn. The icon MUST have been returned by a recent search call (iconfont no longer has a per-icon detail endpoint; data comes from the search cache). |
| i_download_svgA | Download an icon as SVG text from iconfont.cn. The icon MUST have been returned by a recent search call (iconfont no longer has a per-icon detail endpoint, so the SVG is taken from the search cache). Pass an ID returned by search. Optional color overrides fills. Optional size overrides width/height. |
| i_list_project_iconsA | List all icons in an iconfont.cn project by its Symbol URL. No login required. |
| i_list_collectionsC | Search icon collections on iconfont.cn. |
| l_searchA | [Lucide] Search lucide icons by keyword (open source, no login). Lucide is a community fork of Feather Icons with 2007+ clean outline icons. For multi-source search, use i_search_all instead. |
| l_download_svgA | [Lucide] Download a lucide icon as SVG text (open source, no login). For unified download from any source, use i_download instead. |
| l_list_allA | [Lucide] List all available lucide icons (open source, no login). 2007+ icons total. |
| l_get_tagsB | [Lucide] Get tags for a specific lucide icon (open source, no login). |
| i_sourcesA | List all available icon data sources with details (icon count, license, auth requirement, status). Use this to discover which sources are available for search and download. |
| i_search_allA | Search icons across ALL or specific data sources. Returns combined results with source labels. By default searches all sources. Use sources parameter to limit to specific sources (e.g. sources=["lucide","tabler"]) or use source keywords: "free" (all open sources), "all" (everything). Iconfont requires login. |
| i_downloadA | Unified download: download an icon as SVG text from ANY registered source. Pass the source id (e.g. "lucide", "tabler", "mdi") and the icon id (name from search results). Optional color overrides the stroke/fill color. Optional size overrides width/height. Use i_sources to see available sources, or i_search_all to find icons. |
| g_generateA | Get a precise spec for generating a custom SVG icon, then the AI (you) draws the SVG following it. Use when i_search_all finds nothing suitable. After drawing, ALWAYS pass the SVG through g_validate to sanitize and normalize it (color/size injection, XML check, security filter). |
| g_validateA | Validate, sanitize and normalize an AI-generated (or any hand-written) SVG icon: XML well-formedness, security filter (rejects /event handlers//javascript:), adds missing xmlns/viewBox, injects color/size. Returns the cleaned SVG ready for use, plus warnings. |
| ov_loginA | Save Openverse API credentials (OAuth2 client_id/client_secret) to raise rate limits from 20/min + 200/day (anonymous) to 100/min + 10,000/day. Register an application at https://api.openverse.org/v1/ to get them. The exchange is verified immediately; anonymous access keeps working without this. |
| ov_registerA | One-click Openverse app registration: registers an application via the public API, receives client_id/client_secret, exchanges them for a token and saves credentials — rate limits go from 20/min + 200/day to 100/min + 10,000/day. A verification link is emailed to the address you provide (clicking it is recommended but credentials work immediately). If credentials already exist, use ov_login instead. |
| ov_check_authA | Check whether Openverse API credentials are configured (higher rate limits) or the server is running anonymous (20/min + 200/day). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Source prefixes (i_/l_/ov_/g_) give a rough mental map, but there is real overlap: i_search vs i_search_all vs l_search, and i_download_svg vs l_download_svg vs i_download all do near-identical things for different scopes. Descriptions do cross-reference each other ("use i_search_all instead"), which mitigates but does not eliminate misselection risk, and the six login variants (login, login_wait, login_with_cookie/password/sms, login_send_sms) require careful reading to sequence correctly.
Names follow a predictable 'sourceprefix_verb_object' snake_case pattern throughout (i_search, l_download_svg, ov_register, g_validate), so the style is consistent. Minor deviations exist: i_download / i_download_svg differ in granularity, and single-letter source prefixes (ov_, g_) are less self-explanatory.
27 tools is on the heavy side for what is essentially search+download across a few icon sources. The six login/auth variants plus version, guide, and network-check utilities inflate the surface beyond the core workflow.
The domain surface is well covered: multi-source search, unified and per-source download, icon detail, collection/project listing, auth flows, and a generation+validation fallback when nothing is found. Minor gaps only, e.g. no obvious way to browse icons inside a collection returned by i_list_collections.