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

PyPI Docker License Tests

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ámetroTipoPredeterminadoRangoDescripción
image_base64string--Datos de imagen codificados en base64. Proporciona esto O image_url.
image_urlstring--URL para obtener la imagen (http://, https://, o file:// cuando está habilitado). Proporciona esto O image_base64.
colormodestring"color"color, binaryColor completo o arte lineal en blanco y negro
modestring"spline"spline, polygon, noneModo de trazado: curvas suaves, bordes rectos o píxel perfecto
filter_speckleint40-128Elimina motas de N píxeles o menos
color_precisionint61-12Bits de cuantización de color. Menor = menos colores, SVG más simple
layer_differenceint160-128Diferencia de color para fusionar capas
corner_thresholdint600-180Umbral de ángulo para detección de esquinas (grados)
length_thresholdfloat4.03.5-10.0Longitud mínima del segmento de ruta
splice_thresholdint450-180Umbral de ángulo para empalmar splines
path_precisionint81-12Precisión decimal para coordenadas SVG
hierarchicalstring"stacked"stacked, cutoutModo de disposición de capas
max_iterationsint101-100Iteraciones 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