Convert SVG files to PNG, ICO, and JPG formats with high-quality rendering using the Cairo C library.
一个基于 FastMCP 的专业 SVG 文件转换服务包,提供完整的 SVG 转换功能。支持将 SVG 转换为 PNG、ICO、JPG 等格式,优先使用 Cairo C库 进行高质量渲染,特别优化了中文字符的显示效果。
格式 | 扩展名 | 透明支持 | 适用场景 | 推荐用途 |
---|---|---|---|---|
PNG | .png | ✅ | 图标、图形、UI元素 | 推荐格式,质量最佳 |
ICO | .ico | ✅ | 应用程序图标 | Windows 图标文件 |
JPG/JPEG | .jpg , .jpeg | ❌ | 照片、复杂图像 | 文件较小,不支持透明 |
graph TB
subgraph "MCP 客户端层"
A[MCP 客户端<br/>Claude Desktop/其他]
B[HTTP 客户端<br/>Web 应用]
C[SSE 客户端<br/>实时应用]
end
subgraph "FastMCP 服务层"
D[FastMCP 框架]
E[STDIO 传输]
F[HTTP 传输]
G[SSE 传输]
end
subgraph "工具函数层"
H[convert_svg_file<br/>文件转换]
I[convert_svg_string<br/>字符串转换]
J[batch_convert_svg_files<br/>批量转换]
K[get_converter_engine_info<br/>引擎信息]
L[get_svg_file_info<br/>文件信息]
M[get_svg_string_info<br/>字符串信息]
end
subgraph "核心转换层"
N[SVGConverter 类]
O[Cairo C库 引擎]
P[SVGLib 引擎]
Q[PIL 引擎]
R[混合渲染引擎]
end
A -.->|JSON-RPC| E
B -.->|HTTP API| F
C -.->|Server-Sent Events| G
E --> D
F --> D
G --> D
D --> H
D --> I
D --> J
D --> K
D --> L
D --> M
H --> N
I --> N
J --> N
K --> N
L --> N
M --> N
N --> O
N --> P
N --> Q
N --> R
style A fill:#e3f2fd
style B fill:#e3f2fd
style C fill:#e3f2fd
style D fill:#fff3e0
style N fill:#f3e5f5
style O fill:#e8f5e8
style P fill:#e8f5e8
style Q fill:#e8f5e8
style R fill:#e8f5e8
flowchart TD
A[SVG 输入] --> B{检测内容类型}
B -->|包含中文字符| C[混合渲染模式]
B -->|纯英文/图形| D[标准引擎模式]
C --> C1[Cairo/SVGLib 渲染基础图形]
C1 --> C2[PIL 覆盖渲染中文文字]
C2 --> E[图像后处理]
D --> D1{选择转换引擎}
D1 -->|优先| D2[Cairo C库]
D1 -->|备选| D3[SVGLib + ReportLab]
D1 -->|后备| D4[PIL 直接渲染]
D2 --> E
D3 --> E
D4 --> E
E --> F{输出格式}
F -->|PNG| G[PNG 输出<br/>支持透明背景]
F -->|ICO| H[ICO 输出<br/>图标格式]
F -->|JPG| I[JPG 输出<br/>照片格式]
G --> J[转换完成]
H --> J
I --> J
style A fill:#e1f5fe
style J fill:#c8e6c9
style C fill:#fff3e0
style D fill:#f3e5f5
# 直接从 GitHub 安装最新版本
pip install git+https://github.com/RusianHu/svg-converter-tools-mcp.git -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装完整版本(包含所有可选依赖)
pip install "git+https://github.com/RusianHu/svg-converter-tools-mcp.git[full]" -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 克隆仓库
git clone https://github.com/RusianHu/svg-converter-tools-mcp.git
cd svg_converter_tools_mcp
# 基础安装
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 开发模式安装
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装 Cairo C库 支持(最高质量渲染)
pip install .[cairo] -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装 SVGLib 支持(良好兼容性)
pip install .[svglib] -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装所有可选依赖(推荐)
pip install .[full] -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 开发环境安装
pip install .[dev] -i https://pypi.tuna.tsinghua.edu.cn/simple/
为了获得最佳的 SVG 渲染质量,建议安装 Cairo C库:
Windows 用户:
pip install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple/
Linux/macOS 用户:
# Ubuntu/Debian
sudo apt-get install libcairo2-dev libgirepository1.0-dev
# CentOS/RHEL
sudo yum install cairo-devel gobject-introspection-devel
# macOS
brew install cairo gobject-introspection
# 然后安装 cairosvg
pip install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 检查版本信息
python -m svg_converter_mcp --version
# 检查依赖项状态
python -m svg_converter_mcp --check-deps
在您的 MCP 客户端配置文件(如 mcp_settings.json
)中添加:
{
"mcpServers": {
"svg-converter-mcp": {
"command": "python",
"args": ["-m", "svg_converter_mcp"],
"disabled": false
}
}
}
安装后,MCP 客户端可以使用以下 6 个工具函数:
convert_svg_file
从文件路径转换 SVG
svg_file_path
, output_file_path
, output_format
, width
, height
, scale
, quality
, background
, transparent
, prefer_engine
convert_svg_string
从 SVG 字符串内容转换
svg_content
, output_file_path
, output_format
, width
, height
, scale
, quality
, background
, transparent
, prefer_engine
batch_convert_svg_files
批量转换多个 SVG 文件
svg_files
, output_directory
, output_format
, width
, height
, quality
, background
, transparent
, prefer_engine
get_converter_engine_info
获取转换引擎信息
prefer_engine
get_svg_file_info
获取 SVG 文件详细信息
svg_file_path
get_svg_string_info
获取 SVG 字符串信息
svg_content
pip install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install svglib reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple/
参数 | 说明 | 默认值 | 示例 |
---|---|---|---|
--transport | 传输协议 | stdio | http , sse |
--host | 服务器地址 | 127.0.0.1 | 0.0.0.0 |
--port | 端口号 | 8000 | 9000 |
--debug | 调试模式 | False | - |
--version | 显示版本 | - | - |
--check-deps | 检查依赖 | - | - |
参数 | 类型 | 说明 | 范围/选项 |
---|---|---|---|
output_format | str | 输出格式 | png , ico , jpg , jpeg |
width | int | 输出宽度 | 1-8192 像素 |
height | int | 输出高度 | 1-8192 像素 |
scale | float | 缩放比例 | 0.1-10.0 |
quality | int | JPG 质量 | 1-100 |
background | str | 背景颜色 | 颜色名称或十六进制 |
transparent | bool | 透明背景 | true , false |
prefer_engine | str | 首选引擎 | auto , cairosvg , svglib , pil |
ImportError: No module named 'svg_converter_mcp'
解决方案:
# 确保包已正确安装
pip install -e .
# 或重新安装
pip uninstall svg-converter-mcp -y && pip install .
DependencyError: cairosvg 和 svglib 均未安装
解决方案:
# 安装推荐的依赖库
pip install .[full] -i https://pypi.tuna.tsinghua.edu.cn/simple/
现象: 中文字符显示为方块或乱码
解决方案:
pip install cairosvg
python -m svg_converter_mcp --check-deps
现象: MCP 客户端无法连接到服务
解决方案:
python -m svg_converter_mcp --version
现象: 输出图像质量不理想
解决方案:
width
, height
)batch_convert_svg_files
classDiagram
class SVGConverter {
+prefer_engine: str
+engine: str
+convert_file(svg_path, output_path, ...)
+convert_string(svg_content, output_path, ...)
+batch_convert(svg_files, output_dir, ...)
+get_svg_info(svg_path)
+get_engine_info()
-_check_dependencies()
-_select_engine()
-_render_svg_with_hybrid_method()
-_convert_with_cairosvg()
-_convert_with_svglib()
}
class FastMCP {
+name: str
+instructions: str
+run(transport, host, port)
}
class ConverterTools {
+convert_svg_file()
+convert_svg_string()
+batch_convert_svg_files()
+get_converter_engine_info()
+get_svg_file_info()
+get_svg_string_info()
}
class Engines {
<<interface>>
+Cairo C库
+SVGLib + ReportLab
+PIL (Pillow)
+混合渲染引擎
}
class Exceptions {
+SVGConverterError
+DependencyError
+ConversionError
}
FastMCP --> ConverterTools : 注册工具函数
ConverterTools --> SVGConverter : 使用
SVGConverter --> Engines : 调用
SVGConverter --> Exceptions : 抛出
note for SVGConverter "核心转换类\n支持多种引擎\n智能中文渲染"
note for FastMCP "MCP 服务框架\n支持多种传输协议"
note for Engines "转换引擎优先级:\n1. Cairo (最高质量)\n2. SVGLib (良好兼容)\n3. PIL (基本功能)"
本项目采用 MIT 许可证。
Provides direct access to your Bear notes database for comprehensive note management, bypassing standard API limitations.
Connects to Anki via AnkiConnect to retrieve leech-tagged flashcards for use in Claude Desktop.
Converts Markdown text into HTML compatible with WeChat official accounts using an external API key.
An intelligent shipping assistant for managing shipments, requiring a ShipBoss API token.
MCP server for managing accounting and taxes with Norman Finance.
A cognitive framework selector to help choose the right mental models and thinking frameworks for any situation.
Enhances AI reasoning by providing a structured thinking environment.
A GitHub-integrated project management server for Claude Desktop, requiring a personal access token.
A simple calculator server for performing basic arithmetic operations.
An advanced MCP server for intelligent conversation context management and session continuity, requiring the Claude Desktop application and a Node.js environment.