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/mcpClaude 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:
- “Add a favicon to this project — a rocket on a dark blue gradient.”
- “Make a favicon with the initials AF, white on black.”
- “This site has no favicon. Generate one and wire it up.”
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.
| Parameter | Values | Notes |
|---|---|---|
| mode | letter | emoji | letter draws 1–2 characters, emoji draws one emoji. |
| text | string | The letters or the emoji itself — "AF" or "🚀". |
| font | system | helvetica | georgia | courier | verdana | trebuchet | impact | palatino | Letter mode only. Affects the SVG; PNG and ICO render in a standard sans. |
| fontSize | 20–180 | Glyph size in a 192-unit design space. Default 128 — lower it for two letters. |
| textColor | hex | Without the "#", e.g. ffffff. |
| bgType | solid | gradient | Background style. |
| bgColor | hex | Used when bgType is solid. |
| gradientStart | hex | Used when bgType is gradient. |
| gradientEnd | hex | Used when bgType is gradient. |
| gradientAngle | 0–360 | Degrees. 0 sweeps left to right. |
| name | string | Site 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=512Colours 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.
Accept: text/markdown.Prefer to click? The visual generator does the same thing in your browser.