favicon.zip

Generate favicons (ICO, SVG, Apple touch, PWA, manifest) from SVG, text or emoji; check any site.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,051Tokens (tool definitions)
~3.3 KBTypical response size
Moderate attention impact (0.82% of 128k context)

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-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools