Svg2vector MCP
MCP server for converting SVG files to Android Vector Drawable XML format.
Ask AI about Svg2vector MCP
Powered by Claude Β· Grounded in docs
I know everything about Svg2vector MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
SVG to Vector Drawable MCP Server
MCP (Model Context Protocol) server for converting SVG files to Android Vector Drawable XML format.
Features
- β Converts SVG files to Android Vector Drawable XML
- β Supports local files and remote URLs
- β Handles common SVG shapes: path, rect, circle, polygon, line
- β Converts shapes to path elements
- β Preserves stroke and fill properties
- β Handles CSS styles and presentation attributes
- β Works seamlessly with SVGs exported from Figma MCP
Installation
From npm (recommended)
npm install -g svg2vector-mcp
From source
git clone <your-repo>
cd svg2vector-mcp
npm install
npm link
Usage
As an MCP Server
Add to your MCP client configuration (e.g., Claude Desktop):
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"svg2vector": {
"command": "svg2vector-mcp"
}
}
}
Or if installed from source:
{
"mcpServers": {
"svg2vector": {
"command": "node",
"args": ["/path/to/svg2vector-mcp/src/index.js"]
}
}
}
Available Tools
convert_svg_to_vector
Converts an SVG file to Android Vector Drawable XML format.
Parameters:
svgPath(string, required): Path to SVG file (local path or URL)outputPath(string, required): Output path for the generated XML file
Example:
// Convert local SVG file
{
"svgPath": "/path/to/icon.svg",
"outputPath": "/path/to/output/icon.xml"
}
// Convert remote SVG file
{
"svgPath": "https://example.com/icon.svg",
"outputPath": "./output/icon.xml"
}
// Convert SVG exported from Figma MCP
{
"svgPath": "/path/to/figma-export.svg",
"outputPath": "./android/res/drawable/ic_figma_icon.xml"
}
Integration with Figma MCP
This MCP server works seamlessly with the official Figma MCP server. You can use Figma MCP to export SVG assets from Figma designs, and then use this server to convert them to Android Vector Drawables.
Workflow example:
- Use Figma MCP to export SVG from your Figma design
- Use svg2vector-mcp to convert the exported SVG to Android Vector Drawable XML
- Use the generated XML in your Android project
This makes it easy to maintain design consistency between Figma and Android applications.
Supported SVG Elements
Fully Supported
<path>- Path elements<rect>- Rectangles (converted to paths)<circle>- Circles (converted to paths)<polygon>- Polygons (converted to paths)<line>- Lines (converted to paths)<g>- Groups
Supported Attributes
stroke- Stroke colorstroke-opacity- Stroke alphastroke-width- Stroke widthstroke-linecap- Stroke line capstroke-linejoin- Stroke line joinfill- Fill colorfill-opacity- Fill alphaopacity- Overall opacity
Not Supported
- Text elements
- Gradients
- Filters
- Animations
- Ellipses (use circle or convert manually)
- Polylines (use polygon instead)
- Embedded images
- Clipping paths
Output Format
The tool generates Android Vector Drawable XML files compatible with Android API 21+:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,2 L2,22 L22,22 Z"
android:fillColor="#000000"/>
</vector>
Development
Project Structure
svg2vector-mcp/
βββ src/
β βββ index.js # MCP server entry point
β βββ constants.js # Shared constants and mappings
β βββ converter/
β β βββ index.js # Converter module exports
β β βββ SvgConverter.js # Main converter class
β β βββ XmlWriter.js # XML output writer
β βββ parser/
β β βββ index.js # Parser module exports
β β βββ SvgParser.js # SVG parsing logic
β βββ tree/
β β βββ index.js # Tree module exports
β β βββ SvgNode.js # SVG node classes
β β βββ SvgTree.js # SVG tree container
β βββ utils/
β βββ index.js # Utils module exports
β βββ ColorUtils.js # Color conversion utilities
β βββ PathBuilder.js # Path construction builder
βββ test/
β βββ ColorUtils.test.js # Color utilities tests
β βββ PathBuilder.test.js # Path builder tests
β βββ SvgParser.test.js # Parser tests
β βββ SvgConverter.test.js # Converter tests
β βββ integration.test.js # Integration tests
βββ test-data/ # Test SVG/XML files
βββ package.json
βββ README.md
Running Locally
# Install dependencies
npm install
# Run the server
npm start
# Or directly
node src/index.js
Testing
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
Using the Converter Programmatically
import { SvgConverter } from 'svg2vector-mcp/converter';
const converter = new SvgConverter();
const result = converter.convert(svgContent);
if (result.success) {
console.log(result.xml);
} else {
console.error(result.errors);
}
Troubleshooting
"Not a proper SVG file"
- Ensure the file contains a valid
<svg>root element
"Missing viewBox in element"
- Add a
viewBoxattribute to your SVG element - Or ensure
widthandheightattributes are present
Unsupported element warnings
- The converter will log warnings for unsupported SVG features
- The conversion will continue but may not include all visual elements
License
MIT
Credits
Based on the Android SVG to VectorDrawable converter from the Android Open Source Project.
