Image to SVG
Convierte imágenes raster (PNG, JPG, WEBP, TIFF) a gráficos vectoriales SVG escalables de forma local, sin clave API, mediante una única herramienta convert_image_to_svg.
Documentación
image2svg-mcp
Un servidor MCP que convierte imágenes rasterizadas (PNG, JPG, WEBP) a gráficos vectoriales escalables SVG.
Características
- Acepta imágenes como datos codificados en base64 o URL
- Soporta PNG, JPG, JPEG, WEBP, TIFF y otros formatos rasterizados comunes
- Control total sobre los parámetros de vectorización (precisión de color, filtrado de motas, modo de trazado, etc.)
- Maneja prefijos de URI
data:image/...;base64,automáticamente - Transmite descargas de URL con un límite de tamaño de 5 MB
- Soporte opcional de URL
file://para imágenes locales (opt-in mediante--allow-local-files-path)
Uso
Para verlo en acción, consulta conversión de imagen a svg en línea.
Claude Code y Claude Desktop
Agrega a tu settings.json:
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
para Claude Code, agrega usando la línea de comandos:
claude mcp add image2svg --scope user -- uvx image2svg-mcp
con acceso a archivos locales:
claude mcp add image2svg --scope user -- uvx image2svg-mcp --allow-local-files-path /home/user/images
Docker
Ejecuta como servidor HTTP:
docker run -p 8000:8000 ghcr.io/botmonster/image2svg-mcp
Con acceso a archivos locales:
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/mcp
Esto habilita indicaciones como:
Convierte este archivo local a SVG: file://logo.png
Solo los archivos dentro del directorio especificado (y sus subdirectorios) son accesibles. Las rutas se normalizan para prevenir el recorrido de directorios. Sin esta bandera, las URLs file:// son rechazadas.
Indicaciones de Ejemplo
Aquí hay algunos ejemplos de lo que puedes pedirle a un LLM que haga con esta herramienta:
1. Conversión simple de imagen a SVG
Genera una imagen de un atardecer sobre montañas, luego conviértela a SVG.
El LLM generará una imagen rasterizada y luego usará la herramienta convert_image_to_svg con la configuración predeterminada para producir una versión vectorial limpia.
2. Conversión ajustada con parámetros específicos
Crea un logotipo con un círculo azul y una estrella blanca dentro. Ahora conviértelo a SVG usando modo de color binario para bordes nítidos y establece filter_speckle a 10 para eliminar ruido.
Esto usa colormode: "binary" para un estilo de arte lineal en blanco y negro, que funciona muy bien para logotipos e iconos. El valor más alto de filter_speckle elimina pequeños artefactos.
3. Conversión desde URL con estilo minimalista
Convierte esta imagen a un SVG simplificado con baja precisión de color para un aspecto de póster minimalista: https://example.com/photo.png
Usar color_precision: 3 reduce drásticamente el número de colores, produciendo un efecto vectorial posterizado artístico. Ideal para ilustraciones estilizadas.
4. Convierte una imagen base64 directamente
Convierte esta imagen base64 a SVG: iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAO0lEQVR4nGP8z8Dwn4EIwESMIqwKGRn+MzBisYQJXRE2NopCbKYgi5Huxv8MjBiSyGJMuCTQNTJSPRwBCjYOD5JU5rIAAAAASUVORK5CYII=
Este es un cuadrado rojo de 10x10 con un círculo azul en el medio. Útil para probar la herramienta con datos de imagen en línea — no se necesita URL.
Parámetros de la Herramienta
| Parámetro | Tipo | Predeterminado | Rango | Descripción |
|---|---|---|---|---|
image_base64 | string | - | - | Datos de imagen codificados en base64. Proporciona esto O image_url. |
image_url | string | - | - | URL para obtener la imagen (http://, https://, o file:// cuando está habilitado). Proporciona esto O image_base64. |
colormode | string | "color" | color, binary | Color completo o arte lineal en blanco y negro |
mode | string | "spline" | spline, polygon, none | Modo de trazado: curvas suaves, bordes rectos o píxel perfecto |
filter_speckle | int | 4 | 0-128 | Elimina motas de N píxeles o menos |
color_precision | int | 6 | 1-12 | Bits de cuantización de color. Menor = menos colores, SVG más simple |
layer_difference | int | 16 | 0-128 | Diferencia de color para fusionar capas |
corner_threshold | int | 60 | 0-180 | Umbral de ángulo para detección de esquinas (grados) |
length_threshold | float | 4.0 | 3.5-10.0 | Longitud mínima del segmento de ruta |
splice_threshold | int | 45 | 0-180 | Umbral de ángulo para empalmar splines |
path_precision | int | 8 | 1-12 | Precisión decimal para coordenadas SVG |
hierarchical | string | "stacked" | stacked, cutout | Modo de disposición de capas |
max_iterations | int | 10 | 1-100 | Iteraciones máximas de ajuste de curvas |
Desarrollo
Instalación
git clone https://github.com/botmonster/image2svg-mcp.git
cd image2svg-mcp
uv sync
Ejecutar pruebas
uv run pytest tests/ -v
Ejecutar el Inspector MCP
uv run fastmcp dev inspector src/image2svg_mcp/server.py:mcp
Licencia
Apache 2.0 - ver LICENSE