Image to SVG

Converta imagens raster (PNG, JPG, WEBP, TIFF) para gráficos vetoriais SVG escaláveis localmente, sem chave de API, através de uma única ferramenta convert_image_to_svg.

Documentação

image2svg-mcp

PyPI Docker License Tests

Um servidor MCP que converte imagens rasterizadas (PNG, JPG, WEBP) em gráficos vetoriais SVG escaláveis.

Recursos

  • Aceita imagens como dados codificados em base64 ou URL
  • Suporta PNG, JPG, JPEG, WEBP, TIFF e outros formatos rasterizados comuns
  • Controle total sobre os parâmetros de vetorização (precisão de cor, filtro de ruído, modo de rastreamento, etc.)
  • Lida com prefixos de URI data:image/...;base64, automaticamente
  • Faz streaming de downloads de URL com limite de tamanho de 5 MB
  • Suporte opcional a URL file:// para imagens locais (opt-in via --allow-local-files-path)

Uso

Para ver em ação, confira conversão de imagem para svg online.

Claude Code e Claude Desktop

Adicione ao seu settings.json:

{
  "mcpServers": {
    "image2svg": {
      "command": "uvx",
      "args": ["image2svg-mcp"]
    }
  }
}

para Claude Code, adicione usando a linha de comando:

claude mcp add image2svg --scope user -- uvx image2svg-mcp

com acesso a arquivos locais:

claude mcp add image2svg --scope user -- uvx image2svg-mcp --allow-local-files-path /home/user/images

Docker

Execute como um servidor HTTP:

docker run -p 8000:8000 ghcr.io/botmonster/image2svg-mcp

Com acesso a arquivos locais:

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

Isso permite prompts como:

Converta este arquivo local para SVG: file://logo.png

Somente arquivos dentro do diretório especificado (e seus subdiretórios) são acessíveis. Os caminhos são normalizados para evitar travessia de diretórios. Sem esta flag, URLs file:// são rejeitadas.

Exemplos de Prompts

Aqui estão alguns exemplos do que você pode pedir a um LLM para fazer com esta ferramenta:

1. Conversão simples de imagem para SVG

Gere uma imagem de um pôr do sol sobre montanhas e depois converta-a para SVG.

O LLM gerará uma imagem rasterizada e usará a ferramenta convert_image_to_svg com configurações padrão para produzir uma versão vetorial limpa.

2. Conversão ajustada com parâmetros específicos

Crie um logotipo com um círculo azul e uma estrela branca dentro. Agora converta-o para SVG usando colormode binário para bordas nítidas e defina filter_speckle para 10 para remover ruído.

Isso usa colormode: "binary" para um estilo de arte de linha preto/branco, que funciona muito bem para logotipos e ícones. O valor mais alto de filter_speckle remove pequenos artefatos.

3. Conversão de URL com estilo minimalista

Converta esta imagem para um SVG simplificado com baixa precisão de cor para um visual de pôster minimalista: https://example.com/photo.png

Usar color_precision: 3 reduz drasticamente o número de cores, produzindo um efeito vetorial posterizado artístico. Ótimo para ilustrações estilizadas.

4. Converta uma imagem base64 diretamente

Converta esta imagem base64 para SVG: iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAO0lEQVR4nGP8z8Dwn4EIwESMIqwKGRn+MzBisYQJXRE2NopCbKYgi5Huxv8MjBiSyGJMuCTQNTJSPRwBCjYOD5JU5rIAAAAASUVORK5CYII=

Este é um quadrado vermelho de 10x10 com um círculo azul no meio. Útil para testar a ferramenta com dados de imagem inline — sem necessidade de URL.

Parâmetros da Ferramenta

ParâmetroTipoPadrãoIntervaloDescrição
image_base64string--Dados de imagem codificados em base64. Forneça isto OU image_url.
image_urlstring--URL para buscar a imagem (http://, https:// ou file:// quando habilitado). Forneça isto OU image_base64.
colormodestring"color"color, binaryCor completa ou arte de linha preto/branco
modestring"spline"spline, polygon, noneModo de rastreamento: curvas suaves, bordas retas ou pixel-perfeito
filter_speckleint40-128Remove ruídos de N pixels ou menos
color_precisionint61-12Bits de quantização de cor. Menor = menos cores, SVG mais simples
layer_differenceint160-128Diferença de cor para mesclar camadas
corner_thresholdint600-180Limiar de ângulo para detecção de cantos (graus)
length_thresholdfloat4.03.5-10.0Comprimento mínimo do segmento de caminho
splice_thresholdint450-180Limiar de ângulo para emendar splines
path_precisionint81-12Precisão decimal para coordenadas SVG
hierarchicalstring"stacked"stacked, cutoutModo de disposição de camadas
max_iterationsint101-100Máximo de iterações de ajuste de curva

Desenvolvimento

Instalação

git clone https://github.com/botmonster/image2svg-mcp.git
cd image2svg-mcp
uv sync

Executar testes

uv run pytest tests/ -v

Executar o MCP Inspector

uv run fastmcp dev inspector src/image2svg_mcp/server.py:mcp

Licença

Apache 2.0 - veja LICENSE