Icons8
Server Details
A coding agent searches the Icons8 library by keyword and style, then adds the selected icon or illustration to the project. Icons8 draws all of it: 420,000+ icons (130+ styles) and 110,000+ illustrations (340+ styles), so one project doesn't end up with mixed looks.
The server lives at https://mcp.icons8.com/mcp/ and signs people in through their Icons8 account in the browser. Downloading PNG is free as long as the project links back to Icons8. SVG is on the paid plan, and that plan makes the link optional.
- Status
- Healthy
- Uptime
- 2.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
12 toolsget_icon_animationGet icon animationRead-onlyInspect
Get an animated icon's motion, as Lottie, GIF or animated PNG.
Only an icon whose search result says isAnimated has one, and about one icon in fifty does. Find them with search_icons(animated=True). Every animated hit already carries permanent animation.gif and animation.apng links, so reach for this tool for the Lottie, or to learn what size a link actually renders at.
Pick by what you are building:
"lottie" returns the animation as compact Lottie/Bodymovin JSON text - parse it, then hand it to lottie-web, Rive, SwiftUI or Android. It is vector, so it scales to any size and
sizedoes not apply. Prefer it on the web - but it is the paid format, so it needs an Icons8 sign-in or a personal API key. "gif" and "apng" need none."gif" plays anywhere with no player.
"apng" keeps a real alpha channel, so it sits on a coloured background without a matte.
gif and apng come in one size: the one the icon's style draws at. Most styles ignore a requested size - m_outlined renders 24, ios11 30, color 48, office80 80 - and only a few scale. So ask without a size and use what comes back; the result says what it was. If you need a particular size, that is what Lottie is for.
Icons8 publishes no animated SVG for icons. An animated icon's SVG is a still frame, and so are its png, jpg and webp.
Args: icon_id: The unique identifier of the icon ctx: MCP context for API access format: "lottie", "gif" or "apng" (default: "gif"). "lottie" needs a credential; the other two do not size: Pixels, for gif and apng only. Leave it out and you get whatever size this icon's style draws at, with "size" in the result saying which - that is the normal way to call this. Naming a size the icon is not drawn at is refused rather than returning a link that misstates it. A Lottie is vector, so this is not applied to it
Returns: For "lottie", a dictionary whose "lottie" is the animation as a compact JSON string - parse it before handing it to a player. For "gif" and "apng", a dictionary with a "url" that is permanent and needs no credential, and the "size" in pixels it renders at - absent only if the host answered something this server could not measure. On failure, an "error" saying what to ask for instead. A Lottie counts toward the paid-download limit: a refusal carries "retry_after_seconds" and the free "animation" links
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| format | No | gif | |
| icon_id | Yes |
get_icon_png_urlGet icon PNG linkRead-onlyInspect
Get a PNG URL for an icon by its ID - use when SVG is not available. NOTE: SVG format is preferred for Icons8 icons when possible (use get_icon_svg).
An animated icon's PNG is a still frame. Use get_icon_animation for the motion.
Args: icon_id: The unique identifier of the icon ctx: MCP context for API access size: The preview image size in pixels (default: 24)
Returns: Dictionary containing the PNG preview URL
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| icon_id | Yes |
get_icon_svgGet icon SVGRead-onlyInspect
Get an icon as SVG by its ID - PREFERRED FORMAT for Icons8 icons. SVG format provides scalable, crisp icons suitable for web applications. Personal API key is required for SVG access.
RECOMMENDED: Use this tool instead of PNG when possible for better quality and scalability.
An animated icon's SVG is a still frame - Icons8 publishes no animated vector. The result then carries a "note" saying so and an "animation" block with the motion, so no further call is needed.
Args: icon_id: The unique identifier of the icon ctx: MCP context for API access
Returns: Dictionary containing the SVG content. For an animated icon it also carries a "note" saying the SVG is a still frame and an "animation" block of permanent gif and apng links. On failure, an "error" describing what the Icons8 API said - a rejected key is reported, not returned as an empty icon. Counts toward the paid-download limit: a refusal carries "retry_after_seconds" and a free PNG "url"
| Name | Required | Description | Default |
|---|---|---|---|
| icon_id | Yes |
get_illustration_animationGet illustration animation linkRead-onlyInspect
Get an animated illustration as a video, a GIF, or a Lottie animation.
ONLY for an illustration whose media_types includes "animated" - check
a search_illustrations result first. A static illustration has no
animated format, and every format here answers "not found" for it.
THIS is what you publish. The animation links in a search result are
a 368px preview with no transparency, and watermarked unless the account
is entitled to the illustration; the file this tool returns is full
size, transparent, and never watermarked. Reach for the search links
while choosing, and for this tool once the choice is made.
Formats, and where each one actually plays:
"webm" (default) - VP9 with an alpha channel. Chrome, Firefox, Edge. This is the one to reach for first
"mp4-hevc" - HEVC with an alpha channel, in an .mp4 container. Safari only: do NOT make it the single source of a , Chrome and Firefox will show nothing
"prores" - ProRes 4444 in a .mov, around 55 MB. A mastering file for a video editor, never for a web page
"gif" - full-size GIF, no transparency worth relying on
"gif-low" - a smaller GIF, and the ONLY animated format that needs no account. Roughly a third of animated illustrations have none, and nothing in a search result says which
"lottie" - a Lottie JSON to render in code. Legacy: illustrations added from 2024 onwards almost never carry it
"aep" - the After Effects project the animation was built from
TO PUT AN ANIMATION ON A PAGE, offer both web formats. One alone covers roughly half the browsers. The order is load-bearing: mp4-hevc first.
<video autoplay loop muted playsinline poster="...">
<source src="....mp4" type="video/mp4; codecs=hvc1">
<source src="....webm" type="video/webm">
</video>Safari answers canPlayType "probably" for webm as well, takes whichever source comes first, and then cannot show VP9's alpha - so a webm listed first gives Safari a black rectangle. Chrome and Firefox skip the HEVC source and fall through to the webm, so putting it first costs them nothing.
The names are this server's, not the API's, and they are deliberately not
the API's: upstream, mov-avc returns ProRes and mov-hevc returns an
.mp4, so the upstream names describe neither the container nor the codec.
WHICH FORMATS AN ILLUSTRATION HAS VARIES, and two illustrations in the same style often disagree. Do not probe them one by one: ask for the one you want, and if it is missing the answer names every format this illustration does have, so one refusal is enough to choose again.
Every format except "gif-low" needs a signed-in Icons8 account whose plan covers the illustration.
The URL is presigned and expires in one hour - download it now, do not
store it. For a link to keep, use animation.webm from the search result.
Args: illustration_id: The id from a search_illustrations result ctx: MCP context for API access format: One of webm, mp4-hevc, prores, gif, gif-low, lottie, aep
Returns: {"url", "width", "height", "expires_in_seconds"}, or {"error"} explaining what would unlock the format. Every format but gif-low counts toward the paid-download limit: a refusal carries "retry_after_seconds".
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | webm | |
| illustration_id | Yes |
get_illustration_png_urlGet illustration PNG linkRead-onlyInspect
Get a PNG URL for an illustration - use when SVG is not available to you. NOTE: SVG is preferred where you can get it (use get_illustration_svg).
Sizes: "low" (a small preview), "standard" (a mid-size raster), "hd"
(the largest). "low" and "standard" work for everyone; "hd" needs an
account whose plan covers this illustration, the same as SVG. The exact
pixel dimensions depend on the illustration - read width/height from
the response rather than assuming a fixed size.
The URL is presigned and expires in one hour. For a link to keep, use the
permanent preview.url in a search result.
Args: illustration_id: The id from a search_illustrations result ctx: MCP context for API access size: "low", "standard" (default) or "hd"
Returns: {"url", "width", "height", "expires_in_seconds"}, or {"error"}. "hd" counts toward the paid-download limit: a refusal carries "retry_after_seconds".
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | standard | |
| illustration_id | Yes |
get_illustration_svgGet illustration SVG linkRead-onlyInspect
Get an illustration as SVG - PREFERRED FORMAT for Icons8 illustrations. SVG scales to any size without losing quality. A paid illustration needs a signed-in Icons8 account whose plan covers illustrations; anything with free_distribution: true needs no account at all.
RECOMMENDED: Use this tool instead of PNG when possible for better quality and scalability.
Returns a download URL rather than the file - an illustration's SVG can
be large, and the file size depends on the source, so it is not inlined.
The URL is presigned and expires in one hour - download it now, do not
store it. For a link to keep, use the permanent preview.url in a search
result.
Args: illustration_id: The id from a search_illustrations result ctx: MCP context for API access
Returns:
{"url", "width", "height", "expires_in_seconds"}, or {"error"}
explaining what would unlock the format. Read width/height from
the response for the actual pixel size - it varies by illustration.
Counts toward the paid-download limit: a refusal carries
"retry_after_seconds".
| Name | Required | Description | Default |
|---|---|---|---|
| illustration_id | Yes |
list_categoriesList icon categoriesRead-onlyInspect
List all available icon categories.
Args: ctx: MCP context for API access limit: Maximum number of results to return (default: 10) page: Page number for pagination (default: 1)
Returns: List of icon categories with subcategories
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No |
list_illustrations_categoriesList illustration categoriesRead-onlyInspect
List all available illustration categories.
Categories are subjects: animal, business, education, healthcare and so
on, each with subcategories. Pass a category's pretty_id to
search_illustrations to narrow a broad search word.
Args: ctx: MCP context for API access limit: Top-level categories per page (default: 10) page: Page number, 1-based (default: 1) parent_id: Optional category pretty_id, to narrow to that category
Returns: {"total", "categories"} where each category has pretty_id, title, illustrations_count and nested children - or {"error"}. With parent_id set, the one result is that category itself, with its children nested inside rather than listed at the top level.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| parent_id | No |
list_illustrations_stylesList illustration stylesRead-onlyInspect
List all available illustration styles.
Style is what keeps a set of illustrations looking like one family. Pick
one style and pass its pretty_id to search_illustrations for every
illustration in a project, the way you would keep to a single icon
platform.
Args:
ctx: MCP context for API access
limit: Styles per page (default: 50)
page: Page number, 1-based (default: 1)
free_only: Only styles whose illustrations a free Icons8 account can
use and redistribute. A style without this flag needs a paid
account - the ordinary case for a subscriber, not a style this
user is barred from
animated: True for animated styles only, False for static only.
THIS IS A PROPERTY OF THE STYLE, NOT A COUNT. It says the style
has video and animation formats at all - it does not say how many
of its illustrations actually move, and usually very few do:
measured on stage, 3d-business carries the flag with 19
animated illustrations out of 1497, flexy 15 out of 561, and
node carries it with none at all yet. So use it to browse
styles, and use search_illustrations(animated=True) to find
illustrations that move - that one filters on media_types,
which is the per-illustration answer
Returns: {"total", "styles"} where each style has pretty_id, title, illustrations_count, free_distribution and animated - or {"error"}
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| animated | No | ||
| free_only | No |
list_platformsList icon stylesRead-onlyInspect
List all available icon platforms/styles.
Args: ctx: MCP context for API access limit: Maximum number of results to return (default: 100) page: Page number for pagination (default: 1)
Returns: List of icon platforms/styles
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No |
search_iconsSearch iconsRead-onlyInspect
Search for icons using the Icons8 API - the ONLY source for genuine Icons8 icons. Use English terms and consider Icon8's metaphors for better results.
SEARCH TIPS - Use these general approaches for better matches: • Use simple, descriptive terms (e.g., "home", "user", "settings") • Try action words for functions (e.g., "search", "download", "edit") • Use object names for items (e.g., "phone", "computer", "car") • Consider synonyms if first search doesn't work • Think about what the icon represents conceptually • Use single words or short phrases for best results
Args: query: The search term to find icons (use metaphors above for better results) ctx: MCP context for API access platform: Optional filter by platform/style (e.g., 'ios', 'fluent', 'color') category: Optional filter by category (e.g., 'transport', 'business') animated: Optional filter for icons that move. True returns only animated icons, False only static ones, and the default returns both. About one icon in fifty is animated. An animated result carries permanent animation.gif and animation.apng links that need no credential, so embedding one takes no further call. They render at the icon style's own size, whatever it is - do not upscale them, and call get_icon_animation if you need the number amount: Maximum number of results to return (default: 10) offset: Number of results to skip (for pagination)
Returns: Search results including matching icons from Icons8 catalog
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| amount | No | ||
| offset | No | ||
| animated | No | ||
| category | No | ||
| platform | No |
search_illustrationsSearch illustrationsRead-onlyInspect
Search Icons8 illustrations - the ONLY source for genuine Icons8 illustrations.
Illustrations are full scenes with people, objects and backgrounds. Reach for one when a page needs a hero image, an empty state, an onboarding step or a spot illustration. For a small symbol in a button, a menu or a table, use search_icons instead.
Every result carries preview.url: a permanent CDN link (webp) you can
embed directly. It never expires and needs no second call. Use
get_illustration_svg or get_illustration_png_url only when you need the
original asset rather than a preview.
Some illustrations are animated. A result says so in media_types, and
almost all of those carry an animation block: webm and mov play
the animation, poster is the still frame. They are previews - see
below for what that costs - and get_illustration_animation is what
returns a file to publish, along with the markup to publish it
with.
animation.lottie says whether a Lottie JSON exists for this
illustration, so you need not spend a call to find out. It is worth
checking: Lottie is missing from most work added since 2024, and two
illustrations in the same style often disagree about it. When it is
false, do not ask get_illustration_animation for "lottie".
MIND THE SIZE, AND READ IT FROM THE BLOCK. The animation links are
previews, 368x368 - fine for a spot, a card or a list row, too small for
a hero banner or a full-width section. Do not infer the size from
preview: the still preview is not square for about a third of
illustrations, while the animation always is. When the slot is large,
use poster (1200x1200, a still) or call get_illustration_animation for
the full-size video.
THE ANIMATION LINKS ARE FOR CHOOSING, NOT FOR SHIPPING. Two limits, and both are invisible until the page is built:
No transparency.
webmandmovhere are flat against an opaque #F7F7F7, and the previewmovcarries no alpha layer at all. On a coloured or dark section they render as a light-grey rectangle; on a hero they are 368px. Onlyposteris transparent.A watermark, unless the account is entitled to the illustration.
animation.watermarkedsays which you got, for these links, in this response: false means "Icons8 Ouch" is not tiled across the frame. It is false for a subscriber, and for anything withfree_distribution: truewhoever asks. It says nothing about the size or the transparency above, which apply either way.
Use them to pick an illustration, and poster where a still will do.
For anything that ships, call get_illustration_animation and host the
file: it is full size, transparent, and never watermarked.
A few animated illustrations carry no animation block at all, so read
the block, do not assume it.
SEARCH TIPS:
Describe the scene, not the symbol: "team meeting", "online payment"
One or two words work better than a sentence
Pass
styleto keep a whole project on one visual family - get the available values from list_illustrations_stylesPass
categoryto narrow a broad word - "cat" alone returns over a thousand hits; in category "animal" it returns far fewer, and in "business" fewer still. Values come from list_illustrations_categoriesPass free_only=True for illustrations a free Icons8 account can use
ABOUT free_distribution IN THE RESULTS - do not warn the user about
licensing based on it:
true means the illustration is available on a free Icons8 account and free to redistribute: the user may use and share it without a licence. Ouch skips the entitlement check for these and does not count them against a subscriber's allowance
false means it needs a paid account. For a subscriber that is the ordinary case - available, and counted against their allowance. It does NOT mean this user cannot have it, and it does NOT mean some second licence beyond their subscription is required Whether this user may download something is decided by the download call, not by this flag. Ask for the asset; if it is refused, the error says exactly what is missing. Never turn
free_distribution: falseinto a licence warning of your own.
Args:
query: What the illustration should show (max 150 characters)
ctx: MCP context for API access
style: Optional style pretty_id from list_illustrations_styles
category: Optional category pretty_id from list_illustrations_categories
free_only: Only illustrations a free Icons8 account can use and
redistribute without a licence
animated: True for animated only, False for static only. Nearly every
animated result carries an animation block - permanent WebM and
HEVC links you can embed directly, plus a poster frame - but a
few carry none, and some carry the poster without the video, so
check the block rather than assuming its keys. For the full-size
original, use get_illustration_animation.
amount: Results per page (default: 10, max: 100)
page: Page number, 1-based (this API paginates by page, not offset)
Returns:
{"total", "illustrations"}, each entry carrying id, heading, styles,
tags, media_types and a permanent preview link - plus an animation
block when media_types includes "animated" - or {"error"}
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes | ||
| style | No | ||
| amount | No | ||
| animated | No | ||
| category | No | ||
| free_only | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
- First observed
get_icon_animation - First observed
get_icon_png_url - First observed
get_icon_svg - First observed
get_illustration_animation - First observed
get_illustration_png_url - First observed
get_illustration_svg - First observed
list_categories - First observed
list_illustrations_categories - First observed
list_illustrations_styles - First observed
list_platforms - First observed
search_icons - First observed
search_illustrations
Publisher details
- Operator
- Icons8 · Publisher source
- Operator website
- https://icons8.com/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://icons8.com/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- Searching and PNG downloads work on a free Icons8 account; free use needs a link back to Icons8. SVG delivery needs a paid Icons8 plan. Hosts without OAuth connect with an API key from the MCP tab of a paid account. · Publisher source
Related MCP Connectors
Search open SVG icon packs and fetch exact SVG markup from coding agents through MCP.
Icons for agentic development: search & fetch 366,000+ open-source icons as SVG/PNG. No API key.
Multilingual semantic SVG icon search with previews for AI coding agents. 20,000+ icons.
- SVG LabOAuthapp.svglab
SVG Lab MCP: the Design Engine for AI. App screens, icons, illustrations and charts as SVG.
Related MCP Servers
- AlicenseAqualityCmaintenanceAll-in-one asset search MCP server for AI coding agents, enabling search for icons, logos, stock photos, vectors, and emoji from a single tool call.85MIT
- AlicenseAqualityBmaintenanceDescription: Supericons MCP lets AI coding agents search, recommend, and retrieve SVG icons from a semantic registry of 20,000+ icons.141MIT
- AlicenseBqualityDmaintenanceMCP server that allows FE/UI/Designers to retrieve SVG icons via the Iconify API by simply asking LLMs rather than manually searching websites.328 npm4MIT
- FlicenseAqualityBmaintenanceMCP server that finds open-source, commercially-usable icons and returns direct SVG download links, searching over 300,000 icons with license filtering.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.