The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Svgmaker MCP listing page.
A powerful MCP server for generating, editing, and converting SVG images using SVGMaker API.
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.
Every client below can run the server two ways:
output_path saves the result to disk.https://mcp.svgmaker.io/mcp and you sign in through the browser. The cloud server cannot see your disk, so output_path is not offered and results come back as hosted SVGMaker URLs. Local files must go through svgmaker_upload first.The example prompts in each section are given in both shapes. Use the one that matches your setup.
Add to claude_desktop_config.json.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Claude Desktop connects to remote servers from the UI, not from the config file: Settings → Connectors → Add custom connector, then enter https://mcp.svgmaker.io/mcp and complete the browser login.
Example usage in Claude Desktop:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Add the server with the Claude Code CLI.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Then run /mcp inside Claude Code, select svgmaker, and complete the browser login.
Example usage in Claude Code:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Or configure manually:
Configure in cursor settings.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Example usage in Cursor:
stdio (API key):
HTTPS (OAuth browser login — no API key):
For a logo that only exists on your machine, call svgmaker_upload first and pass the returned upl_… id as input.
Or configure manually:
Configure in settings.json.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Example usage in VS Code:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Configure in ~/.codeium/windsurf/mcp_config.json.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Example usage in WindSurf:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Configure in settings.
stdio (API key):
HTTPS (OAuth browser login — no API key):
You can also add it from the UI: Settings → AI → General → MCP Servers → Add Server → Add Remote MCP Server.
Example usage in Zed:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Add the server with the Codex CLI.
stdio (API key):
HTTPS (OAuth browser login — no API key):
Example usage in Codex:
stdio (API key):
HTTPS (OAuth browser login — no API key):
Unless a block is marked otherwise, the JSON examples below show the stdio call shape. Over HTTPS, drop output_path — it is not part of the schema there — and use the hosted URL that comes back in the result.
svgmaker_edit, svgmaker_convert and svgmaker_remove_background take their image from a single input parameter. What input may contain depends on how the server is running.
input value | stdio (local server) | HTTPS (mcp.svgmaker.io) |
|---|---|---|
/Users/me/panda.png, file:///Users/me/panda.png | ✅ read from disk | ❌ the server is in the cloud and cannot see your disk — call svgmaker_upload first |
https://example.com/logo.png | ✅ | ✅ |
upl_2f1c8a4e… (upload id from svgmaker_upload) | ✅ | ✅ |
gen_abc123 (generation or gallery id) | ✅ svgmaker_edit and svgmaker_remove_background only | ✅ same |
svgmaker_convert does not accept generation ids: the API would vectorize a downscaled preview of an SVG you already own, so the result is strictly worse than what you started with. Convert takes a file path, an https:// URL or an upload id.
For a URL the MCP server never downloads the image — it hands the URL to the SVGMaker API, which fetches it. A generation id is passed through as-is and resolved server-side.
Output follows the same split:
| stdio | HTTPS | |
|---|---|---|
output_path | ✅ offered — the file is written to that path | not offered at all: the parameter is absent from the tool schema, because the cloud server has no access to your disk |
result when output_path is not used | hosted SVGMaker URL returned | hosted SVGMaker URL returned |
Over HTTPS the server never advertises a parameter it cannot honour. A stale client that still sends output_path is rejected with an error that points it at the hosted URL, so no credits are lost.
svgmaker_preview is likewise not offered over HTTPS — it reads local disk. Use svgmaker_generations_preview or svgmaker_gallery_preview instead.
input_path is still accepted on all three tools as an alias for input, and generation_id on svgmaker_edit and svgmaker_remove_background, so existing configurations keep working. Supply exactly one source. Prefer input in new code — the aliases stay only for compatibility.
HTTPS transport only — it does not appear in the tool list over stdio, where local paths already work directly.
Mints a short-lived upload URL so a local file can be used with the cloud server. No bytes pass through the MCP server; your agent performs the upload itself.
| Parameter | Type | Description |
|---|---|---|
filename | string | Required. Name including extension, e.g. panda.png. Kept for reporting only — the stored object name is generated server-side and the image type is detected from the file bytes. |
The response returns upload_url and expires_in. POST the file there as multipart form data:
Your agent must be able to run a shell command to finish this step. Clients with a terminal — Claude Code, Cursor, VS Code, WindSurf, Zed, Codex — can run the curl themselves. Claude Desktop connected over HTTPS has no shell, so it cannot complete the upload; use an https:// image URL or a generation id there instead.
The response carries the upload id:
Pass that id as input to svgmaker_edit, svgmaker_convert or svgmaker_remove_background.
The upload URL expires after 5 minutes and works once. Files over 25 MB are rejected, as is anything whose bytes are not a supported image. Uploads cost no credits, are private, and are swept after 24 hours.
Generate SVG images from text prompts. Supports style parameters for fine-grained control over the output.
stdio:
HTTPS — no output_path; the result is a hosted SVGMaker URL:
Raster mode — set raster: true to skip vectorization and get a PNG instead of an SVG. Over stdio, use a .png extension for output_path; over HTTPS the PNG comes back as a hosted URL. Cannot be combined with storage (raster results are temporary).
| Parameter | Type | Description |
|---|---|---|
raster | boolean | When true, returns a raster PNG instead of SVG (skips vectorization). Over stdio, 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. input accepts a local file path, an https:// URL, an upl_ upload id, or a generation ID (works for both your own generations and public gallery items) — see the input matrix.
stdio:
HTTPS — the source is a generation ID, an https:// URL or an upl_ upload id, and the result is a hosted URL:
This shape works over stdio too, when you do not want a local file:
Raster mode — like generate, set raster: true to get a PNG instead of an SVG. Over stdio, use a .png extension for output_path. Cannot be combined with storage.
| Parameter | Type | Description |
|---|---|---|
input | string | Image source: local file path (stdio only), https:// URL, upl_ upload id, or generation ID. Required. |
input_path | string | Accepted alias for input, restricted to a local file path. |
generation_id | string | Accepted alias for input, restricted to a generation or gallery ID. |
raster | boolean | When true, returns a raster PNG instead of SVG (skips vectorization). Over stdio, 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 accepts a local file path, an https:// URL or an upl_ upload id — see the input matrix. Generation ids are rejected, because converting one would re-vectorize a downscaled preview of an SVG you already have.
stdio:
HTTPS — no output_path, and the source is a URL or an upload id:
| Parameter | Type | Description |
|---|---|---|
input | string | Image source: local file path (stdio only), https:// URL, or upl_ upload id. Generation IDs are not accepted. Required. |
input_path | string | Accepted alias for input, restricted to a local file path. |
output_path | string | stdio only — not offered over HTTPS. Optional absolute path (must end in .svg) to save the result. When omitted, a hosted URL is returned instead. |
Remove the background from an image and get the result as a clean SVG with transparency. The AI isolates the foreground subject, removes the background, and vectorizes the result. Accepts raster formats (PNG, JPEG, WebP, GIF, TIFF, AVIF) and SVG. input accepts a local file path, an https:// URL, an upl_ upload id, or a generation ID — see the input matrix.
stdio — provide an output_path (with a .svg extension) to save the SVG locally:
HTTPS — output_path is not offered; the result comes back as a SVGMaker-hosted URL. Omitting it over stdio does the same:
| Parameter | Type | Description |
|---|---|---|
input | string | Image source: local file path (stdio only), https:// URL, upl_ upload id, or generation ID. Required. |
input_path | string | Accepted alias for input, restricted to a local file path. |
generation_id | string | Accepted alias for input, restricted to a generation or gallery ID. |
output_path | string | stdio only — not offered over HTTPS. Optional absolute path (must end in .svg) to save the result. When omitted, a hosted URL is returned instead. |
storage | boolean | When true, stores the resulting SVG permanently in cloud storage (appears in your generations). When false, a temporary hosted URL is returned. Defaults to true. |
Get account information including email, display name, account type, and available credits. No parameters required.
Get API usage statistics with optional date filtering.
Or use a date range:
List your SVG generations with optional filtering and pagination.
Get detailed information about a specific generation.
Delete a generation and its associated files. Requires a paid account.
Share a generation by making it publicly accessible.
Download a generation in various formats. Requires a paid account.
stdio — output_path saves the file locally:
HTTPS — output_path is not offered; the tool returns a hosted download URL:
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.
Browse the public SVGMaker gallery with optional filtering and pagination.
Get detailed information about a specific gallery item.
Download a gallery item in various formats. Costs 1 credit for SVG formats, 0 credits for WebP/PNG.
stdio — output_path saves the file locally:
HTTPS — output_path is not offered; the tool returns a hosted download URL:
Preview a gallery item by returning the image directly in the chat context as a PNG image.
stdio transport only — this tool is not offered over HTTPS at all, because it reads local disk and the cloud server cannot see your files. Over HTTPS use svgmaker_generations_preview or svgmaker_gallery_preview, which take an id instead of a path.
Preview a local image file by returning it directly in the chat context. Supports PNG, SVG, WebP, and SVGZ formats.
| Parameter | Type | Description |
|---|---|---|
input | string | Absolute path to the local image file. Required. |
file_path | string | Accepted alias for input. Supply exactly one of the two. |
| Variable | Description | Required | Default |
|---|---|---|---|
SVGMAKER_API_KEY | Your SVGMaker API key | ✅ Yes | - |
SVGMAKER_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:
Log Files Location:
~/.cache/svgmaker-mcp/logs/%LOCALAPPDATA%/svgmaker-mcp/logs/./logs/ (in project directory)Log File Format:
Use the MCP Inspector for testing:
This project uses GitHub Actions for continuous integration and deployment:
Continuous Integration
Bumping the Version
Publishing
mainWe welcome contributions! Please see our Contributing Guide for details.
MIT © Genwave AI - see the LICENSE file for details.