Provides comprehensive SVG file conversion capabilities, supporting conversion from SVG to PNG, ICO, and JPG formats with multiple rendering engines, optimized text rendering, and batch processing features.
SVG 转换器 FastMCP 服务
一个基于 FastMCP 的专业 SVG 文件转换服务包,提供完整的 SVG 转换功能。支持将 SVG 转换为 PNG、ICO、JPG 等格式,优先使用 Cairo C库 进行高质量渲染,特别优化了中文字符的显示效果。
🎨 支持的输出格式
格式 | 扩展名 | 透明支持 | 适用场景 | 推荐用途 |
PNG |
| ✅ | 图标、图形、UI元素 | 推荐格式,质量最佳 |
ICO |
| ✅ | 应用程序图标 | Windows 图标文件 |
JPG/JPEG |
| ❌ | 照片、复杂图像 | 文件较小,不支持透明 |
🏗️ 项目架构
� SVG 转换流程
🚀 安装方法
方法一:从 GitHub 安装(推荐)
方法二:从源码安装
安装可选依赖(强烈推荐)
Cairo C库 安装说明
为了获得最佳的 SVG 渲染质量,建议安装 Cairo C库:
Windows 用户:
下载并安装最新版本的 GTK+ Runtime Environment
然后安装 cairosvg:
pip install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple/
Linux/macOS 用户:
验证安装
🔌 MCP 客户端配置
基本配置
在您的 MCP 客户端配置文件(如 mcp_settings.json)中添加:
🛠️ 可用工具函数
安装后,MCP 客户端可以使用以下 6 个工具函数:
1. convert_svg_file
从文件路径转换 SVG
参数:
svg_file_path,output_file_path,output_format,width,height,scale,quality,background,transparent,prefer_engine返回: 转换结果信息,包含输出路径、文件大小、使用的引擎等
用途: 转换本地 SVG 文件为指定格式
2. convert_svg_string
从 SVG 字符串内容转换
参数:
svg_content,output_file_path,output_format,width,height,scale,quality,background,transparent,prefer_engine返回: 转换结果信息
用途: 直接从内存中的 SVG 内容转换,无需先保存为文件
3. batch_convert_svg_files
批量转换多个 SVG 文件
参数:
svg_files,output_directory,output_format,width,height,quality,background,transparent,prefer_engine返回: 批量转换结果报告,包含成功/失败统计
用途: 一次性处理多个 SVG 文件,提高效率
4. get_converter_engine_info
获取转换引擎信息
参数:
prefer_engine返回: 当前引擎状态、可用引擎列表、安装建议
用途: 查看系统中可用的转换引擎状态
5. get_svg_file_info
获取 SVG 文件详细信息
参数:
svg_file_path返回: 文件信息、尺寸分析、转换建议
用途: 分析 SVG 文件的特征和复杂度
6. get_svg_string_info
获取 SVG 字符串信息
参数:
svg_content返回: 内容分析、特征检测、转换建议
用途: 分析 SVG 内容特征,如是否包含中文字符等
⚙️ 转换引擎说明
🏆 Cairo C库 (cairosvg) - 推荐
✅ 最高质量: 完整的 SVG 规范支持
✅ 中文优化: 优秀的中文字体渲染效果
✅ 功能完整: 支持复杂的 SVG 特性
❌ 依赖要求: 需要额外安装 Cairo 库
🥈 SVGLib (svglib + reportlab) - 兼容
✅ 纯 Python: 无需系统级依赖
✅ 良好支持: 支持大部分 SVG 特性
⚠️ 中文限制: 中文字体支持有限
✅ 稳定性: 成熟的 Python 实现
🥉 PIL (Pillow) - 后备
✅ 内置支持: 无需额外依赖
✅ 轻量级: 占用资源少
❌ 功能限制: 仅支持基本 SVG 元素
❌ 质量一般: 中文字体渲染效果有限
🔧 配置选项
命令行参数
参数 | 说明 | 默认值 | 示例 |
| 传输协议 |
|
|
| 服务器地址 |
|
|
| 端口号 |
|
|
| 调试模式 |
| - |
| 显示版本 | - | - |
| 检查依赖 | - | - |
转换参数
参数 | 类型 | 说明 | 范围/选项 |
|
| 输出格式 |
|
|
| 输出宽度 | 1-8192 像素 |
|
| 输出高度 | 1-8192 像素 |
|
| 缩放比例 | 0.1-10.0 |
|
| JPG 质量 | 1-100 |
|
| 背景颜色 | 颜色名称或十六进制 |
|
| 透明背景 |
|
|
| 首选引擎 |
|
🐛 故障排除
常见问题
1. 导入错误
解决方案:
2. 依赖库缺失
解决方案:
3. 中文字符显示异常
现象: 中文字符显示为方块或乱码
解决方案:
确保安装了 cairosvg:
pip install cairosvg检查系统中文字体: 确保系统安装了中文字体
使用引擎检查:
python -m svg_converter_mcp --check-deps
4. MCP 客户端连接失败
现象: MCP 客户端无法连接到服务
解决方案:
检查 Python 路径是否正确
确认包已正确安装:
python -m svg_converter_mcp --version验证配置文件语法: 确保 JSON 格式正确
检查端口占用: 如使用 HTTP 模式,确保端口未被占用
5. 转换质量不佳
现象: 输出图像质量不理想
解决方案:
优先使用 cairosvg 引擎
适当增加输出尺寸 (
width,height)对于文本内容,建议使用 PNG 格式
检查原始 SVG 文件质量
性能优化建议
安装 Cairo C库: 获得最佳转换质量和性能
使用批量转换: 处理多个文件时使用
batch_convert_svg_files合理设置尺寸: 避免过大的输出尺寸影响性能
选择合适格式: PNG 用于图标,JPG 用于照片
缓存结果: 对于重复转换,考虑缓存输出结果
核心组件关系
🙏 致谢
📄 许可证
本项目采用 MIT 许可证。