favicon.zip
Generate favicons (ICO, SVG, Apple touch, PWA, manifest) from SVG, text or emoji; check any site.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"favicon": {
"url": "https://favicon.zip/mcp"
}
}
}Remote endpoints
https://favicon.zip/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟡generate_favicon(svg, emoji, text, font, text_color, ...)
Generates the complete modern favicon set (favicon.ico, icon.svg, apple-touch-icon.png, PWA icons, manifest.webmanifest, favicon-setup.md with the install snippet) from an SVG, an emoji, or short text. Returns a download URL for favicon.zip plus the HTML head snippet to paste. Files follow current best practice: ICO with 16, 32, and 48px layers, a 96px Google Search icon, opaque apple-touch-icon, and a maskable icon with safe-zone padding.
Input Schema
{
"type": "object",
"properties": {
"svg": {
"description": "Raw SVG markup to use as the icon. The best source when available.",
"type": "string"
},
"emoji": {
"description": "A single emoji character, rendered with Twemoji vector artwork.",
"type": "string"
},
"text": {
"description": "1–4 characters rendered as vector glyphs (e.g. a brand initial like \"F\").",
"type": "string"
},
"font": {
"description": "Typeface for text mode: any Google Fonts family name (e.g. \"Bangers\", \"Bebas Neue\", \"Press Start 2P\"), or a bundled id like inter-800, geist-700, silkscreen-400.",
"type": "string"
},
"text_color": {
"description": "Hex glyph color for text mode, default #0a0a0b.",
"type": "string"
},
"background": {
"description": "Icon background: \"none\" (default), a hex color, or a linear gradient.",
"anyOf": [
{
"type": "string",
"description": "\"none\" or a solid hex color"
},
{
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"angle": {
"type": "number"
}
},
"required": [
"from",
"to"
]
}
]
},
"padding": {
"description": "Content inset as a fraction of icon size, -1–0.35. Negative zooms in: the mark scales past the frame and is cropped toward the center (-0.5 renders it at 2x).",
"type": "number",
"minimum": -1,
"maximum": 0.35
},
"radius": {
"description": "Corner rounding: 0 square, ~0.25 rounded, 1 circle.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"offset_x": {
"description": "Nudge content horizontally, -0.25 (left) to 0.25 (right).",
"type": "number",
"minimum": -0.25,
"maximum": 0.25
},
"offset_y": {
"description": "Nudge content vertically, -0.25 (up) to 0.25 (down).",
"type": "number",
"minimum": -0.25,
"maximum": 0.25
},
"app_name": {
"description": "App name written into the web manifest.",
"type": "string"
},
"short_name": {
"type": "string"
},
"theme_color": {
"description": "Hex theme color for the manifest.",
"type": "string"
},
"pwa": {
"description": "Include PWA icons + manifest (default true).",
"type": "boolean"
},
"google_96": {
"description": "Emit favicon-96x96.png for Google Search results (default true).",
"type": "boolean"
},
"dark_background": {
"description": "Hex background for a dark-mode variant; icon.svg then adapts to the browser theme.",
"type": "string"
},
"dark_text_color": {
"description": "Hex glyph color for the dark-mode variant (text mode).",
"type": "string"
},
"env_variants": {
"description": "Also emit dev/staging/preview favicon copies with a corner badge.",
"type": "boolean"
},
"monochrome": {
"description": "Add a monochrome manifest icon for tinted/badge surfaces.",
"type": "boolean"
},
"dynamic_module": {
"description": "Add favicon-dynamic.js — badge/progress/spinner with the icon baked in.",
"type": "boolean"
},
"framework": {
"description": "Tailors the setup guide: html, nextjs, vite, astro, rails, wordpress. Next.js App Router uses file conventions, not link tags.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_html_snippet(has_svg_icon, pwa, google_96)
Returns the modern minimal <head> snippet for favicons, plus placement guidance. Use when the favicon files already exist and only the HTML wiring is needed.
Input Schema
{
"type": "object",
"properties": {
"has_svg_icon": {
"description": "Site ships an /icon.svg (default true)",
"type": "boolean"
},
"pwa": {
"description": "Site ships PWA icons + manifest (default true)",
"type": "boolean"
},
"google_96": {
"description": "Site ships favicon-96x96.png (default true)",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢check_favicon(url)
Fetches a URL, probes every icon it declares (root favicon.ico, SVG icon, apple-touch-icon, web manifest), and grades the setup against the modern set. Follow up with generate_favicon to fix what is missing.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The site to check, e.g. example.com"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence