SVG Converter Tools MCP

SVG Converter Tools MCP

Enables high-quality conversion of SVG files to PNG, ICO, and JPG formats with optimized Chinese character rendering. Supports single file, batch, and string-based conversions using multiple rendering engines including Cairo, SVGLib, and PIL.

Category
访问服务器

README

SVG 转换器 FastMCP 服务

License: MIT Python 3.8+ FastMCP GitHub

一个基于 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

� SVG 转换流程

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 安装(推荐)

# 直接从 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/

Cairo C库 安装说明

为了获得最佳的 SVG 渲染质量,建议安装 Cairo C库:

Windows 用户:

  1. 访问 GTK for Windows Runtime Environment
  2. 下载并安装最新版本的 GTK+ Runtime Environment
  3. 然后安装 cairosvg:
    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 客户端配置文件(如 mcp_settings.json)中添加:

{
  "mcpServers": {
    "svg-converter-mcp": {
      "command": "python",
      "args": ["-m", "svg_converter_mcp"],
      "disabled": false
    }
  }
}

🛠️ 可用工具函数

安装后,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 库
pip install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple/

🥈 SVGLib (svglib + reportlab) - 兼容

  • 纯 Python: 无需系统级依赖
  • 良好支持: 支持大部分 SVG 特性
  • ⚠️ 中文限制: 中文字体支持有限
  • 稳定性: 成熟的 Python 实现
pip install svglib reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple/

🥉 PIL (Pillow) - 后备

  • 内置支持: 无需额外依赖
  • 轻量级: 占用资源少
  • 功能限制: 仅支持基本 SVG 元素
  • 质量一般: 中文字体渲染效果有限

🔧 配置选项

命令行参数

参数 说明 默认值 示例
--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

🐛 故障排除

常见问题

1. 导入错误

ImportError: No module named 'svg_converter_mcp'

解决方案:

# 确保包已正确安装
pip install -e .
# 或重新安装
pip uninstall svg-converter-mcp -y && pip install .

2. 依赖库缺失

DependencyError: cairosvg 和 svglib 均未安装

解决方案:

# 安装推荐的依赖库
pip install .[full] -i https://pypi.tuna.tsinghua.edu.cn/simple/

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 文件质量

性能优化建议

  1. 安装 Cairo C库: 获得最佳转换质量和性能
  2. 使用批量转换: 处理多个文件时使用 batch_convert_svg_files
  3. 合理设置尺寸: 避免过大的输出尺寸影响性能
  4. 选择合适格式: PNG 用于图标,JPG 用于照片
  5. 缓存结果: 对于重复转换,考虑缓存输出结果

核心组件关系

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 (基本功能)"

🙏 致谢

  • FastMCP - 优秀的 MCP 服务框架
  • CairoSVG - 高质量的 SVG 渲染库
  • SVGLib - 纯 Python SVG 处理库
  • Pillow - Python 图像处理库

📄 许可证

本项目采用 MIT 许可证

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选