Skip to main content
Glama

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.

Ownership verified
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 tools
get_icon_animationGet icon animation
Read-only
Inspect

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 size does 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

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
formatNogif
icon_idYes
get_icon_png_urlGet icon PNG link
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
icon_idYes
get_icon_svgGet icon SVG
Read-only
Inspect

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
icon_idYes
get_illustration_animationGet illustration animation link
Read-only
Inspect

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNowebm
illustration_idYes
get_illustration_png_urlGet illustration PNG link
Read-only
Inspect

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNostandard
illustration_idYes
get_illustration_svgGet illustration SVG link
Read-only
Inspect

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
illustration_idYes
list_categoriesList icon categories
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
list_illustrations_categoriesList illustration categories
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
parent_idNo
list_illustrations_stylesList illustration styles
Read-only
Inspect

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"}

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
animatedNo
free_onlyNo
list_platformsList icon styles
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
search_iconsSearch icons
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
amountNo
offsetNo
animatedNo
categoryNo
platformNo
search_illustrationsSearch illustrations
Read-only
Inspect

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. webm and mov here are flat against an opaque #F7F7F7, and the preview mov carries no alpha layer at all. On a coloured or dark section they render as a light-grey rectangle; on a hero they are 368px. Only poster is transparent.

  • A watermark, unless the account is entitled to the illustration. animation.watermarked says 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 with free_distribution: true whoever 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 style to keep a whole project on one visual family - get the available values from list_illustrations_styles

  • Pass category to 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_categories

  • Pass 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: false into 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"}

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
queryYes
styleNo
amountNo
animatedNo
categoryNo
free_onlyNo

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updates
    • First observedget_icon_animation
    • First observedget_icon_png_url
    • First observedget_icon_svg
    • First observedget_illustration_animation
    • First observedget_illustration_png_url
    • First observedget_illustration_svg
    • First observedlist_categories
    • First observedlist_illustrations_categories
    • First observedlist_illustrations_styles
    • First observedlist_platforms
    • First observedsearch_icons
    • First observedsearch_illustrations

Publisher details

Operator
Icons8 · Publisher source
Vendor relationship
First-party · 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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    All-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.
    8
    5
    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
    28 npm
    4
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    MCP server that finds open-source, commercially-usable icons and returns direct SVG download links, searching over 300,000 icons with license filtering.
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources