What is the nakkas MCP server?
nakkas is an MCP server for making animated SVG graphics such as logos, icons, loading spinners and README banners. The agent sends one JSON config to the render_svg tool, gets a PNG preview back and revises. Animation is CSS keyframes and SMIL with no JavaScript, and no API key is needed.
nakkas is a Model Context Protocol server that lets an AI assistant build animated SVG graphics from a declarative JSON config. The name is an old Turkish word for painter, and the server ships as a single rendering engine.
Typical jobs are logos, icons, loading spinners, GitHub README banners, badges and generative art. The agent decides every detail in the config, and nakkas does the drawing.
How the render loop works
- The agent writes an SVGConfig object with a canvas, optional defs, elements and animations, then calls
render_svg. - nakkas returns a PNG preview and an artifact id such as
art-1, plus design warnings when it finds problems. - The agent looks at the preview, edits the config and renders again.
- When the result is right,
savewrites the stored artifact to disk as SVG or PNG.
Where the output can run
The README says the SVG uses CSS keyframes and SMIL, with no JavaScript, so it works inside GitHub README images and anywhere an img tag renders SVG. External fonts and click handlers only work in inline SVG on a web page.
Who it suits
- Developers who want animated logos, spinners or banners without opening a vector editor.
- Teams that need motion assets for READMEs and docs, where scripts are stripped.
- Anyone comparing animation helpers. Related: an animation vocabulary skill and a motion craft skill.
Skip it if
- You need photographic or raster editing. The output is declarative vector graphics.
- You need SMIL motion verified in a preview. The filmstrip option samples CSS animation only.
- You want a full page layout. Related: a canvas design skill.
Use it with UiChemy
nakkas only produces the SVG file. UiChemy is a separate step for the page around it: Composer is an AI visual editor that writes real HTML, CSS and JS inside Elementor or Gutenberg. Click Get Started on uichemy.com.
Connect nakkas MCP Server: Animated SVG Generation for AI Coding Agents to your AI client
npx -y nakkas@latestAdd the server to your client
Paste the config above into the MCP settings of Cursor, Zed or another client. Claude Desktop uses the same block in its claude_desktop_config.json file.
Or use the Claude Code command
Run
claude mcp add nakkas npx nakkas@latestto register the server from the terminal.Ask for a graphic
Try a prompt such as a loading spinner with a draw-on stroke that loops every 1.5 seconds.
Build from source if you prefer
Clone the repository, run
npm install && npm run build, and usedist/index.jsas the server command.
Client configuration
{
"mcpServers": {
"nakkas": {
"command": "npx",
"args": ["-y", "nakkas@latest"]
}
}
}Endpoints and ports
https://github.com/arikusi/nakkasSource, README and tool referenceWhat you can do with it
- One config, many designsA single render_svg call covers shapes, text, groups, gradients, filters, clip paths, masks, patterns and markers.
- Preview on every renderEach render returns a PNG, so the model can critique its own work and revise instead of designing blind.
- Token-cheap iterationThe SVG stays on the server as an artifact, and preview and save address it by id, so revision loops skip the SVG text.
- Filmstrip motion checkSetting frames to a value from 2 to 10 returns one image sampling the CSS animation at that many points in time.
- Design warningsRenders can flag too many concurrent animations, content past the viewport, low contrast text by WCAG ratio, and overlapping text.
- Generators and filtersRadial, arc, grid, scatter and path groups place copies of a child, and 15 filter presets include glow, neon, glitch and emboss.
- Parametric curvesBuilt in functions draw rose, heart, star, lissajous, spiral, superformula, epitrochoid, hypotrochoid and wave shapes.
- Local and keylessThere is no cloud API and no API key. The server runs on your machine.
Tools it exposes
render_svg
Takes SVGConfig JSON and returns a PNG preview, an artifact id and optional design analysis warnings.
preview
Re-renders a stored artifact, or raw SVG, to PNG at any width.
save
Writes a stored artifact or raw content to disk as SVG text or PNG, adding a numeric counter if the file already exists.
Frequently asked questions
What does the nakkas MCP server do?
It turns a JSON description into an animated SVG. The agent calls render_svg, receives a PNG preview and an artifact id, and can then preview at another width or save the file. It targets logos, icons, spinners, banners, badges and generative art.
How do I install nakkas?
Add a server entry that runs npx with the arguments -y and nakkas@latest to your MCP client config. The README also offers a clone and build route that uses dist/index.js as the command. No account or key is required, because rendering happens locally.
Which agents can use nakkas?
The README gives setup for Claude Desktop, Claude Code, Cursor, Zed and other MCP clients. Each uses the same npx command, so any client that can launch a local MCP server by command should be able to run it.
Does nakkas use JavaScript in the SVG?
No. Animation is written as CSS keyframes or SMIL, with no JavaScript. That is why the files survive GitHub's image proxy and render in README images. Interactive click handlers only work when the SVG is inlined in a web page.
How many SVGs can it keep in memory?
Artifacts live for the lifetime of the server process and are capped at 32, with the oldest evicted first. Save anything you want to keep to disk with the save tool before restarting the server or rendering many more.
Can it check that an animation actually moves?
Yes, for CSS animation. The frames option samples the keyframes at several points and returns one filmstrip image. SMIL animations are not sampled, so a single preview of those only shows the starting state.
Which fonts should I use in a design?
Prefer the generic families sans-serif, serif and monospace, since named fonts like Arial exist only on some systems. A named font with a generic fallback, such as Georgia then serif, is the safe pattern the README recommends.



