内容
<!-- mcp-name: io.github.botmonster/image2svg-mcp -->
# 图像转SVG工具
[](https://pypi.org/project/image2svg-mcp/)
[](https://github.com/botmonster/image2svg-mcp/actions/workflows/docker.yml)
[](LICENSE)
[](https://github.com/botmonster/image2svg-mcp/actions/workflows/tests.yml)
一个将栅格图像(PNG、JPG、WEBP)转换为可缩放的SVG矢量图形的MCP服务器。
## 功能特点
- 接受以**base64编码数据**或**URL**形式的图像
- 支持PNG、JPG、JPEG、WEBP、TIFF等常见的栅格格式
- 完全控制矢量化参数(颜色精度、斑点过滤、跟踪模式等)
- 自动处理`data:image/...;base64,` URI前缀
- 流式下载URL,大小限制为5MB
- 可选的`file://` URL支持,用于本地图像(需通过`--allow-local-files-path`启用)
## 使用方法
要查看其实际效果,请访问 [在线图像转SVG工具](https://botmonster.com/image2svg/)。
### Claude 代码 & Claude 桌面版
在`settings.json`中添加:
```json
{
"mcpServers": {
"image2svg": {
"command": "uvx",
"args": ["image2svg-mcp"]
}
}
}
```
对于**Claude 代码**,使用命令行添加:
```bash
claude mcp add image2svg --scope user -- uvx image2svg-mcp
```
启用本地文件访问:
```bash
claude mcp add image2svg --scope user -- uvx image2svg-mcp --allow-local-files-path /home/user/images
```
### Docker
作为HTTP服务器运行:
```bash
docker run -p 8000:8000 ghcr.io/botmonster/image2svg-mcp
```
启用本地文件访问:
```bash
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
```
这使得以下提示成为可能:
> 将本地文件转换为SVG:file://logo.png
只有指定目录(及其子目录)内的文件可访问。路径被规范化以防止目录遍历。没有此标志,`file://` URL将被拒绝。
## 示例提示
以下是您可以告诉LLM使用此工具执行的一些示例:
### 1. 简单的图像转SVG转换
> 生成一张山脉上的日落图像,然后将其转换为SVG。
LLM将生成栅格图像,然后使用`convert_image_to_svg`工具并使用默认设置生成干净的矢量版本。
### 2. 使用特定参数的精细转换
> 创建一个带有蓝色圆圈和白色星星的标志。现在使用二进制颜色模式转换为SVG,以实现清晰的边缘,并设置`filter_speckle`为10以去除噪点。
这使用`colormode: "binary"`进行黑白线条艺术样式输出,非常适合标志和图标。较高的`filter_speckle`值会去除小伪影。
### 3. 从URL转换并具有简约风格
> 将此图像转换为具有低颜色精度的简化SVG,以实现简约的海报效果:https://example.com/photo.png
使用`color_precision: 3`可显著减少颜色数量,产生艺术性的海报化矢量效果。非常适合风格化的插图。
### 4. 直接转换base64图像
> 将此base64图像转换为SVG:iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAO0lEQVR4nGP8z8Dwn4EIwESMIqwKGRn+MzBisYQJXRE2NopCbKYgi5Huxv8MjBiSyGJMuCTQNTJSPRwBCjYOD5JU5rIAAAAASUVORK5CYII=
这是一个10x10的红色方块,中间有一个蓝色圆圈。直接使用内联图像数据进行工具测试 - 无需URL。
## 工具参数
| 参数 | 类型 | 默认值 | 范围 | 描述 |
|---|---|---|---|---|
| `image_base64` | 字符串 | - | - | Base64编码的图像数据。提供此参数或`image_url`。 |
| `image_url` | 字符串 | - | - | 从URL获取图像(`http://`、`https://`或启用时为`file://`)。提供此参数或`image_base64`。 |
| `colormode` | 字符串 | `"color"` | `color`、`binary` | 全彩或黑白线条艺术 |
| `mode` | 字符串 | `"spline"` | `spline`、`polygon`、`none` | 跟踪模式:平滑曲线、直线边缘或像素完美 |
| `filter_speckle` | 整数 | `4` | 0-128 | 删除N个像素或更少的斑点 |
| `color_precision` | 整数 | `6` | 1-12 | 颜色量化位数。较低值 = 颜色较少,SVG较简单 |
| `layer_difference` | 整数 | `16` | 0-128 | 层合并的颜色差异 |
| `corner_threshold` | 整数 | `60` | 0-180 | 角检测的角度阈值(度) |
| `length_threshold` | 浮点数 | `4.0` | 3.5-10.0 | 最小路径段长度 |
| `splice_threshold` | 整数 | `45` | 0-180 | 样条拼接的角度阈值 |
| `path_precision` | 整数 | `8` | 1-12 | SVG坐标的十进制精度 |
| `hierarchical` | 字符串 | `"stacked"` | `stacked`、`cutout` | 层排列模式 |
| `max_iterations` | 整数 | `10` | 1-100 | 最大曲线拟合迭代次数 |
## 开发
### 安装
```bash
git clone https://github.com/botmonster/image2svg-mcp.git
cd image2svg-mcp
uv sync
```
### 运行测试
```bash
uv run pytest tests/ -v
```
### 运行MCP检查器
```bash
uv run fastmcp dev inspector src/image2svg_mcp/server.py:mcp
```
## 许可证
Apache 2.0 - 请参阅 [LICENSE](LICENSE)