loading…
Search for a command to run...
loading…
Provides AI-driven SVG generation and editing via natural language, with real-time updates and secure file handling.
Provides AI-driven SVG generation and editing via natural language, with real-time updates and secure file handling.
A powerful MCP server for generating, editing, and converting SVG images using SVGMaker API.
Website npm version License Build Status npm downloads
This very illustration came to life through our own SVGMaker MCP server—a living example of AI assistants and vector graphics working in perfect harmony via the Model Context Protocol.
node --version # Should be >= v18.0.0
npm --version # Should be >= 7.0.0
@genwave/svgmaker-mcp/
├── build/ # Compiled JavaScript files
├── docs/ # Documentation
│ └── api/ # API documentation
├── src/ # Source TypeScript files
│ ├── tools/ # MCP tool implementations
│ ├── services/ # API integration
│ └── utils/ # Utility functions
└── types/ # TypeScript declarations
# Using npm
npm install @genwave/svgmaker-mcp
# Using yarn
yarn add @genwave/svgmaker-mcp
SVGMAKER_API_KEY="your_api_key_here"
npx svgmaker-mcp
{
"mcpServers": {
"svgmaker": {
"command": "npx",
"args": ["@genwave/svgmaker-mcp"],
"transport": "stdio",
"env": {
"SVGMAKER_API_KEY": "your_api_key_here"
}
}
}
}
Generate an SVG of a minimalist mountain landscape:
<mcp>
{
"server": "svgmaker",
"tool": "svgmaker_generate",
"arguments": {
"prompt": "Minimalist mountain landscape with sun",
"output_path": "./landscape.svg",
"quality": "high",
"aspectRatio": "landscape"
}
}
</mcp>
Or configure manually:
{
"mcpServers": {
"svgmaker": {
"type": "local",
"command": "npx",
"args": ["@genwave/svgmaker-mcp"],
"transport": "stdio",
"env": {
"SVGMAKER_API_KEY": "your_api_key_here"
}
}
}
}
Use svgmaker to edit the logo.svg file and make it more modern:
<mcp>
{
"server": "svgmaker",
"tool": "svgmaker_edit",
"arguments": {
"input_path": "./logo.svg",
"prompt": "Make it more modern and minimalist",
"output_path": "./modern_logo.svg",
"quality": "high"
}
}
</mcp>
Or configure manually:
{
"servers": {
"svgmaker": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@genwave/svgmaker-mcp"],
"env": {
"SVGMAKER_API_KEY": "<your_api_key>"
}
}
}
}
Generate a new icon for my app:
<mcp>
{
"server": "svgmaker",
"tool": "svgmaker_generate",
"arguments": {
"prompt": "Modern app icon with abstract geometric shapes",
"output_path": "./assets/icon.svg",
"quality": "high",
"aspectRatio": "square"
}
}
</mcp>
{
"mcpServers": {
"svgmaker": {
"command": "npx",
"args": ["-y", "@genwave/svgmaker-mcp"],
"env": {
"SVGMAKER_API_KEY": "<your_api_key>"
}
}
}
}
Convert the company logo to SVG:
<mcp>
{
"server": "svgmaker",
"tool": "svgmaker_convert",
"arguments": {
"input_path": "./branding/logo.png",
"output_path": "./branding/vector_logo.svg"
}
}
</mcp>
{
"context_servers": {
"svgmaker": {
"command": {
"path": "npx",
"args": ["-y", "@genwave/svgmaker-mcp"],
"env": {
"SVGMAKER_API_KEY": "<your_api_key>"
}
},
"settings": {}
}
}
}
Edit an existing SVG file:
<mcp>
{
"server": "svgmaker",
"tool": "svgmaker_edit",
"arguments": {
"input_path": "./diagrams/flowchart.svg",
"prompt": "Add rounded corners and smooth gradients",
"output_path": "./diagrams/enhanced_flowchart.svg",
"quality": "high"
}
}
</mcp>
Generate SVG images from text prompts. Supports style parameters for fine-grained control over the output.
{
"prompt": "A minimalist mountain landscape with sun",
"output_path": "/path/to/landscape.svg",
"quality": "medium",
"style": "flat",
"color_mode": "few_colors",
"composition": "full_scene",
"background": "transparent"
}
Raster mode — set raster: true to skip vectorization and get a PNG instead of an SVG. Use a .png extension for output_path. Cannot be combined with storage (raster results are temporary).
{
"prompt": "A minimalist mountain landscape with sun",
"output_path": "/path/to/landscape.png",
"quality": "medium",
"raster": true
}
| Parameter | Type | Description |
|---|---|---|
raster |
boolean | When true, returns a raster PNG instead of SVG (skips vectorization). Use a .png output path. Cannot be used with storage. |
storage |
boolean | When true, stores the generated image permanently in cloud storage. Cannot be used with raster. Defaults to true when raster is not set. |
All parameters below are optional and shared by svgmaker_generate and svgmaker_edit. Only specify the ones the user explicitly requests.
| Parameter | Values | Default | Description |
|---|---|---|---|
quality |
low, medium, high |
medium |
Detail level vs. speed. high forces a square aspect ratio. |
aspectRatio |
square, portrait, landscape |
auto (by quality) | Output shape. Ignored when quality is high (forced square). |
background |
auto, transparent, opaque |
auto |
Background style. transparent is good for overlays. |
style |
flat, line_art, engraving, linocut, silhouette, isometric, cartoon, ghibli |
— | Art style. |
color_mode |
full_color, monochrome, few_colors |
full_color |
Color scheme. |
image_complexity |
icon, illustration, scene |
— | Level of detail in the composition. |
composition |
centered_object, repeating_pattern, full_scene, objects_in_grid |
— | Layout arrangement. |
text_style |
only_title, embedded_text |
— | How text is handled in the design. |
Edit existing SVGs or images with natural language. Supports the same style parameters as generate. Accepts a local file path or generation ID (works for both your own generations and public gallery items).
{
"input_path": "/path/to/input.svg",
"prompt": "Add a gradient background and make it more vibrant",
"output_path": "/path/to/enhanced.svg",
"quality": "high",
"style": "cartoon",
"background": "opaque"
}
Or edit directly from a generation ID (works for both generations and gallery items):
{
"generation_id": "gen_abc123",
"prompt": "Make the background blue",
"output_path": "/path/to/edited.svg"
}
Raster mode — like generate, set raster: true to get a PNG instead of an SVG. Use a .png extension for output_path. Cannot be combined with storage.
{
"input_path": "/path/to/input.svg",
"prompt": "Make it more vibrant",
"output_path": "/path/to/edited.png",
"raster": true
}
| Parameter | Type | Description |
|---|---|---|
raster |
boolean | When true, returns a raster PNG instead of SVG (skips vectorization). Use a .png output path. Cannot be used with storage. |
storage |
boolean | When true, stores the edited image permanently in cloud storage. Cannot be used with raster. Defaults to true when raster is not set. |
Convert raster images to SVG using AI-powered vectorization.
{
"input_path": "/path/to/image.png",
"output_path": "/path/to/vector.svg"
}
Get account information including email, display name, account type, and available credits. No parameters required.
{}
Get API usage statistics with optional date filtering.
{
"days": 30
}
Or use a date range:
{
"start": "2026-01-01",
"end": "2026-01-31"
}
List your SVG generations with optional filtering and pagination.
{
"page": 1,
"limit": 20,
"type": "generate",
"query": "mountain"
}
Get detailed information about a specific generation.
{
"generation_id": "gen_abc123"
}
Delete a generation and its associated files. Requires a paid account.
{
"generation_id": "gen_abc123"
}
Share a generation by making it publicly accessible.
{
"generation_id": "gen_abc123"
}
Download a generation in various formats and save to a local file. Requires a paid account.
{
"generation_id": "gen_abc123",
"output_path": "/path/to/output.svg",
"format": "svg"
}
Preview a generation by returning the image directly in the chat context as a PNG image. The LLM can see and describe the image, enabling follow-up edits.
{
"generation_id": "gen_abc123"
}
Browse the public SVGMaker gallery with optional filtering and pagination.
{
"page": 1,
"limit": 20,
"type": "generate",
"query": "landscape",
"pro": "true"
}
Get detailed information about a specific gallery item.
{
"generation_id": "gal_abc123"
}
Download a gallery item in various formats and save to a local file. Costs 1 credit for SVG formats, 0 credits for WebP/PNG.
{
"generation_id": "gal_abc123",
"output_path": "/path/to/output.svg",
"format": "svg"
}
Preview a gallery item by returning the image directly in the chat context as a PNG image.
{
"generation_id": "gal_abc123"
}
Preview a local image file by returning it directly in the chat context. Supports PNG, SVG, WebP, and SVGZ formats.
{
"file_path": "/path/to/image.svg"
}
| Variable | Description | Required | Default |
|---|---|---|---|
SVGMAKER_API_KEY |
Your SVGMaker API key | ✅ Yes | - |
SVGMMAKER_RATE_LIMIT_RPM |
API rate limit (requests per minute) | ❌ No | 2 |
SVGMAKER_BASE_URL |
Custom SVGMaker API base URL | ❌ No | https://api.svgmaker.io |
SVGMAKER_DEBUG |
Enable debug logging | ❌ No | false |
The server includes comprehensive logging for debugging and monitoring:
Enable Logging:
# Enable debug logging
SVGMAKER_DEBUG=true npx @genwave/svgmaker-mcp
# Or set NODE_ENV to development
NODE_ENV=development npx @genwave/svgmaker-mcp
Log Files Location:
~/.cache/svgmaker-mcp/logs/%LOCALAPPDATA%/svgmaker-mcp/logs/./logs/ (in project directory)Log File Format:
mcp-debug-2025-06-04T10-30-45-123Z.log
npm install
SVGMAKER_API_KEY="your_api_key_here"
npm run dev
Use the MCP Inspector for testing:
npx @modelcontextprotocol/inspector node build/index.js
This project uses GitHub Actions for continuous integration and deployment:
Continuous Integration
Bumping the Version
npm run version:patch
npm run version:minor
npm run version:major
Publishing
mainWe welcome contributions! Please see our Contributing Guide for details.
MIT © Genwave AI - see the LICENSE file for details.
Run in your terminal:
claude mcp add genwavellc-svgmaker-mcp --env SVGMAKER_API_KEY="" --env SVGMAKER_DEBUG="" -- npx Yes, GenWaveLLC/svgmaker-mcp MCP is free — one-click install via Unyly at no cost.
Yes, it requires environment variables: SVGMAKER_API_KEY, SVGMAKER_DEBUG. Unyly injects them into the config during install.
Self-hosted: the server runs locally on your machine via the install command above.
Open GenWaveLLC/svgmaker-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
pro tip
Just installed GenWaveLLC/svgmaker-mcp? Say to Claude: "remember why I installed GenWaveLLC/svgmaker-mcpand what I want to try" — it'll save into your Vault.
how this works →CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Review before useWill ask for:
SVGMAKER_API_KEYAutomated heuristic from public metadata — not a security guarantee.