使用说明
SVG MCP服务器
用Rust编写的模型上下文协议(MCP)服务器,提供SVG到图像的转换工具。
特性
- svg_to_png:将SVG文本内容转换为PNG图像格式
- svg_to_jpeg:将SVG文本内容转换为JPEG图像格式
- 自动尺寸检测:默认情况下使用SVG画布大小,具有可选的自定义尺寸
- 灵活的输出:在临时文件路径(默认)或base64编码数据之间进行选择
- 支持自定义尺寸和JPEG质量设置
- 使用resvg和micro skia进行高性能SVG渲染
快速开始
选项1:NPM(推荐)
# Install globally
npm install -g @svg-mcp/svg-mcp
# Or run directly with npx (no installation needed)
npx @svg-mcp/svg-mcp
所有平台二进制文件都会自动包含在内- 无需额外下载.
选项2:下载预构建的二进制文件
下载自 GitHub发布:
- Windows x64:
svg-mcp-windows-x64.zip(MSVC构建-推荐) - Windows x64 GNU:
svg-mcp-windows-x64-gnu.zip(GNU构建-替代) - Linux x64:
svg-mcp-linux-x64.tar.gz - macOS英特尔:
svg-mcp-macos-x64.tar.gz - macOS苹果硅:
svg-mcp-macos-arm64.tar.gz
所有二进制文件都是通过以下方式自动构建的 GitHub操作CI/CD 以获得一致的质量。
选项3:从源代码构建
# Clone the repository
git clone https://github.com/lihongjie0209/svg-mcp.git
cd svg-mcp
# Build for your platform
cargo build --release
# The binary will be at: target/release/svg-mcp (or .exe on Windows)
有关详细的构建说明,请参阅 BUILD_GUIDE.md.
使用Claude Desktop
使用NPM包(推荐)
{
"mcpServers": {
"svg-converter": {
"command": "npx",
"args": ["@svg-mcp/svg-mcp"]
}
}
}
使用本地二进制
{
"mcpServers": {
"svg-converter": {
"command": "/path/to/svg-mcp",
"args": []
}
}
}
安装方法比较
| 方法 | 优点 | 缺点 |
|---|---|---|
| NPM | ✅ 简易安装 ✅ 自动更新 ✅ 跨平台 ✅ 无需手动设置 ✅ CI构建质量 |
❌ 需要Node.js ❌ 包装尺寸更大 |
| GitHub二进制文件 | ✅ 无依赖关系 ✅ 占地面积最小 ✅ CI构建质量 |
❌ 手动更新 ❌ 平台特定下载 |
| 从源代码构建 | ✅ 最新功能 ✅ 可定制的 ✅ 最小尺寸 |
❌ 需要Rust工具链 ❌ 构建时间 ❌ 手动更新 |
建立质量保证
🏗️ 所有二进制文件都是使用GitHub Actions CI/CD构建的:
- ✅ 清洁环境:内置全新CI跑步器
- ✅ 一致的:所有平台的构建过程相同
- ✅ 已测试:发布前自动测试
- ✅ 可再生:源代码与版本完全匹配
- ✅ 安全:内置GitHub的安全基础设施
可用工具
svg_to_png
将SVG文本转换为PNG图像格式。
参数:
svg_content(string):SVG内容为XML字符串width(可选数字):输出图像宽度(如果未指定,则使用SVG画布宽度)height(可选数字):输出图像高度(如果未指定,则使用SVG画布高度)return_base64(可选布尔值):是否返回base64数据而不是文件路径(默认值:false)
退货:
{
"file_path": "path/to/temporary/file.png",
"mime_type": "image/png"
}
或者什么时候 return_base64 是真的:
{
"base64_data": "base64-encoded-png-data",
"mime_type": "image/png"
}
svg_to_jpeg
将SVG文本转换为JPEG图像格式。
参数:
svg_content(string):SVG内容为XML字符串width(可选数字):输出图像宽度(如果未指定,则使用SVG画布宽度)height(可选数字):输出图像高度(如果未指定,则使用SVG画布高度)quality(可选数字):JPEG质量1-100(默认值:85)return_base64(可选布尔值):是否返回base64数据而不是文件路径(默认值:false)
退货:
{
"file_path": "path/to/temporary/file.jpg",
"mime_type": "image/jpeg"
}
或者什么时候 return_base64 是真的:
{
"base64_data": "base64-encoded-jpeg-data",
"mime_type": "image/jpeg"
}
示例用法
SVG内容示例
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="100" r="80" fill="blue" stroke="red" stroke-width="4"/>
<text x="100" y="110" text-anchor="middle" fill="white" font-family="Arial" font-size="16">Hello SVG!</text>
</svg>
转换为PNG(使用SVG原始大小)
{
"tool": "svg_to_png",
"arguments": {
"svg_content": "<svg width=\"200\" height=\"200\">...</svg>"
}
}
转换为具有自定义大小的PNG
{
"tool": "svg_to_png",
"arguments": {
"svg_content": "<svg>...</svg>",
"width": 400,
"height": 400
}
}
使用base64输出转换为PNG
{
"tool": "svg_to_png",
"arguments": {
"svg_content": "<svg>...</svg>",
"return_base64": true
}
}
转换为JPEG(使用SVG原始大小)
{
"tool": "svg_to_jpeg",
"arguments": {
"svg_content": "<svg width=\"200\" height=\"200\">...</svg>",
"quality": 90
}
}
转换为具有自定义大小和base64输出的JPEG
{
"tool": "svg_to_jpeg",
"arguments": {
"svg_content": "<svg>...</svg>",
"width": 600,
"height": 600,
"quality": 95,
"return_base64": true
}
}
技术细节
建筑
- MCP协议:实现工具集成的模型上下文协议
- SVG渲染:使用resvg和usvg进行高质量的SVG渲染
- 自动调整大小:从SVG viewBox或宽度/高度属性中提取画布尺寸
- 智能缩放:指定自定义尺寸时应用适当的缩放变换
- 图像编码:支持PNG和JPEG输出格式
- 异步运行时:基于Tokio构建,实现高效异步处理
依赖项
rmcp:用于协议实现的Rust MCP SDKresvg:SVG渲染引擎usvg:SVG解析和优化tiny-skia:二维图形渲染image:图像编码和处理base64:用于数据返回的Base64编码tempfile:具有适当文件扩展名的临时文件管理
尺寸检测逻辑
- 默认行为:从SVG中提取尺寸
width和height属性或viewBox - 自定义尺寸:指定后,SVG会缩放以适应目标大小
- 宽高比:保持适当的缩放变换以保持SVG外观
演出
- 快速SVG解析和渲染
- 内存高效的像素缓冲区处理
- 优化了PNG和JPEG格式的编码
- 可扩展以处理各种图像大小
- 自动尺寸检测消除了猜测
- 临时文件包括正确的文件扩展名(.png、.jpg)
发展
地方发展
# Check code
cargo check
cargo clippy
# Run tests
cargo test
# Run locally
cargo run
# Build for your platform
cargo build --release
CI/CD及其发布
所有生产版本都使用GitHub Actions CI/CD:
- 🏗️ 自动化建筑:每次推送和公关触发都会建立
- 🔖 版本发布:Git标签自动创建版本
- 📦 NPM出版:发布自动发布到NPM
- 🧪 质量检测:所有构建都包括自动化测试
- 🌐 多平台:同时为Windows、Linux和macOS构建
看 BUILD_GUIDE.md 有关完整的CI/CD详细信息。
编码结构
src/lib.rs:核心转换逻辑和MCP服务器实现src/main.rs:服务器入口点和CLI界面src/test.rs:功能验证测试程序.github/workflows/build.yml:CI/CD管道定义
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果需要,添加测试
- 提交拉取请求
CI系统将自动在所有平台上构建和测试您的更改。
文档
许可证
该项目根据MIT许可证获得许可。有关详细信息,请参阅LICENSE文件。
