An MCP server that converts raster images (PNG, JPG, WEBP) to scalable SVG vector graphics.
- Accepts images as base64-encoded data or URL
- Supports PNG, JPG, JPEG, WEBP, TIFF, and other common raster formats
- Full control over vectorization parameters (color precision, speckle filtering, tracing mode, etc.)
- Handles
data:image/...;base64,URI prefixes automatically - Streams URL downloads with a 5 MB size limit
- Optional
file://URL support for local images (opt-in via--allow-local-files-path)
To see it in action check converting image to svg online.
Add to your settings.json:
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}for Claude Code add using command line:
claude mcp add image2svg --scope user -- uvx image2svg-mcpwith access to local files:
claude mcp add image2svg --scope user -- uvx image2svg-mcp --allow-local-files-path /home/user/imagesRun as an HTTP server:
docker run -p 8000:8000 ghcr.io/botmonster/image2svg-mcpWith local file access:
docker run -p 8000:8000 -v /home/user/images:/images ghcr.io/botmonster/image2svg-mcp --allow-local-files-path /images
claude mcp add image2svg --transport http --scope user http://localhost:8000/mcpThis enables prompts like:
Convert this local file to SVG: file://logo.png
Only files inside the specified directory (and its subdirectories) are accessible. Paths are normalized to prevent directory traversal. Without this flag, file:// URLs are rejected.
Here are some examples of what you can tell an LLM to do with this tool:
Generate an image of a sunset over mountains, then convert it to SVG.
The LLM will generate a raster image and then use the convert_image_to_svg tool with default settings to produce a clean vector version.
Create a logo with a blue circle and a white star inside it. Now convert it to SVG using binary colormode for crisp edges and set filter_speckle to 10 to remove noise.
This uses colormode: "binary" for black/white line art style output, which works great for logos and icons. The higher filter_speckle value removes small artifacts.
Convert this image to a simplified SVG with low color precision for a minimalist poster look: https://example.com/photo.png
Using color_precision: 3 reduces the number of colors dramatically, producing an artistic posterized vector effect. Great for stylized illustrations.
Convert this base64 image to SVG: iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAO0lEQVR4nGP8z8Dwn4EIwESMIqwKGRn+MzBisYQJXRE2NopCbKYgi5Huxv8MjBiSyGJMuCTQNTJSPRwBCjYOD5JU5rIAAAAASUVORK5CYII=
This is a 10x10 red square with a blue circle in the middle. Useful for testing the tool with inline image data — no URL needed.
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
image_base64 |
string | - | - | Base64-encoded image data. Provide this OR image_url. |
image_url |
string | - | - | URL to fetch the image from (http://, https://, or file:// when enabled). Provide this OR image_base64. |
colormode |
string | "color" |
color, binary |
Full color or black/white line art |
mode |
string | "spline" |
spline, polygon, none |
Tracing mode: smooth curves, straight edges, or pixel-perfect |
filter_speckle |
int | 4 |
0-128 | Remove speckles of N pixels or fewer |
color_precision |
int | 6 |
1-12 | Color quantization bits. Lower = fewer colors, simpler SVG |
layer_difference |
int | 16 |
0-128 | Color difference for merging layers |
corner_threshold |
int | 60 |
0-180 | Angle threshold for corner detection (degrees) |
length_threshold |
float | 4.0 |
3.5-10.0 | Minimum path segment length |
splice_threshold |
int | 45 |
0-180 | Angle threshold for splicing splines |
path_precision |
int | 8 |
1-12 | Decimal precision for SVG coordinates |
hierarchical |
string | "stacked" |
stacked, cutout |
Layer arrangement mode |
max_iterations |
int | 10 |
1-100 | Max curve fitting iterations |
git clone https://github.com/botmonster/image2svg-mcp.git
cd image2svg-mcp
uv syncuv run pytest tests/ -vuv run fastmcp dev inspector src/image2svg_mcp/server.py:mcpApache 2.0 - see LICENSE