EasyFavicon

Favicon MCP Server

Connect your AI agent to EasyFavicon and it can generate a complete, installable favicon set without leaving the editor — the favicon.svg source, the exact <head> markup, a web manifest, and every PNG and .ico size. No account, no API key, no rate-limit tier.

Server endpoint

https://easyfavicon.com/api/mcp

Transport: Streamable HTTP (stateless JSON-RPC). No authentication.

Opening that URL in a browser shows “Method Not Allowed”

That is the correct response, not a fault. MCP servers speak JSON-RPC over HTTP POST; a GET is reserved for opening a server-sent event stream, and a stateless server must answer it with 405. The endpoint is meant to be called by an MCP client — the setup for each one is below.

Claude Code

One command, then restart your session:

claude mcp add --transport http easyfavicon https://easyfavicon.com/api/mcp

Claude Desktop

Settings → Connectors → Add custom connector, then paste the server URL above.

Cursor

Add it to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json to make it available everywhere:

{
  "mcpServers": {
    "easyfavicon": {
      "url": "https://easyfavicon.com/api/mcp"
    }
  }
}

VS Code (GitHub Copilot)

Add it to .vscode/mcp.json:

{
  "servers": {
    "easyfavicon": {
      "type": "http",
      "url": "https://easyfavicon.com/api/mcp"
    }
  }
}

Then just ask

Once connected, describe what you want in plain language:

The agent calls create_favicon, writes favicon.svg into your public root, and pastes the <head> snippet for you.

The tool: create_favicon

Every parameter is optional — anything invalid falls back to a sensible default rather than erroring, so a malformed call still returns a usable favicon.

ParameterValuesNotes
modeletter | emojiletter draws 1–2 characters, emoji draws one emoji.
textstringThe letters or the emoji itself — "AF" or "🚀".
fontsystem | helvetica | georgia | courier | verdana | trebuchet | impact | palatinoLetter mode only. Affects the SVG; PNG and ICO render in a standard sans.
fontSize20–180Glyph size in a 192-unit design space. Default 128 — lower it for two letters.
textColorhexWithout the "#", e.g. ffffff.
bgTypesolid | gradientBackground style.
bgColorhexUsed when bgType is solid.
gradientStarthexUsed when bgType is gradient.
gradientEndhexUsed when bgType is gradient.
gradientAngle0–360Degrees. 0 sweeps left to right.
namestringSite name written into site.webmanifest.

It returns the SVG source, the <head> snippet, a site.webmanifest, download URLs for the binary formats, and an editUrl that opens the visual editor with that exact design loaded — so a human can take over and tweak it.

No MCP? Use the plain HTTP API

The same renders are ordinary GET endpoints, taking the same parameters:

# The complete set, zipped
curl -O https://easyfavicon.com/api/favicon.zip?text=AF&name=Acme

# Individual formats
https://easyfavicon.com/api/favicon.svg?mode=letter&text=AF&bgColor=000000
https://easyfavicon.com/api/favicon.ico?text=AF
https://easyfavicon.com/api/favicon.png?text=AF&size=512

Colours are hex without a leading # — a literal # in a URL starts the fragment and would silently drop every parameter after it.

Or hotlink it — no files at all

Every render is immutable and cached at Cloudflare’s edge, so you can point a <link> straight at the endpoint and be done. This is the fastest way to give a site a favicon:

<link rel="icon" href="https://easyfavicon.com/api/favicon.svg?text=AF&bgColor=000000" type="image/svg+xml">
<link rel="apple-touch-icon" href="https://easyfavicon.com/api/favicon.png?text=AF&size=180">

Good for prototypes, previews and internal tools. It does mean your favicon depends on easyfavicon.com being reachable — for production, download the set and serve the files yourself.

Calling it directly

The server is plain JSON-RPC, so you can exercise it with curl:

curl -X POST https://easyfavicon.com/api/mcp \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "create_favicon",
      "arguments": {
        "mode": "emoji",
        "text": "🚀",
        "bgType": "gradient",
        "gradientStart": "312e81",
        "gradientEnd": "2563eb",
        "gradientAngle": 45
      }
    }
  }'

What it will not do

It is deterministic, not a diffusion model. It will not invent artwork from a text prompt, trace a photograph, or convert an image you have not provided — image conversion runs in the browser, not over the API. For an honest comparison with AI image generators, see AI favicon generators.

Machine-readable summary of this site, including when an agent should reach for it: /llms.txt. Every page also serves Markdown via Accept: text/markdown.

Prefer to click? The visual generator does the same thing in your browser.