Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inkscape MCP Server

A complete, cross-platform Model Context Protocol server that lets an AI coding agent create, edit, query, transform, export, and live-preview SVG vector graphics using Inkscape. 22 focused tools, a dual engine (direct lxml editing + a persistent inkscape --shell), and a browser live-preview.

Requirements

  • uv — runs the server (and manages Python for you)
  • Inkscape 1.2+ (developed and tested against 1.4.2): https://inkscape.org/release/
  • Python 3.11+ (uv provides this automatically if you don't have it)

Quick start (any MCP client)

The server runs straight from GitHub — no clone required:

uvx --from git+https://github.com/jaags-dev/inkscape-mcp inkscape-mcp

That exact command is also what you drop into your agent's MCP config (below). Prefer a local checkout? See From source.

Add it to your AI coding agent

This is a standard stdio MCP server, so any MCP-capable agent can use it. Most of them share the same JSON shape — set it once and reuse it:

{
  "mcpServers": {
    "inkscape": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jaags-dev/inkscape-mcp", "inkscape-mcp"],
      "env": { "INKSCAPE_MCP_WORKSPACE": "/absolute/path/to/your/svg/workspace" }
    }
  }
}

Use an absolute path for INKSCAPE_MCP_WORKSPACE — it's the only folder the server may read/write (its security sandbox). Agents launch the server from different working directories, so relative paths are unreliable.

Where each agent's config lives

Agent Where to add it Config key
Claude Code claude mcp add … (see below) or a project .mcp.json mcpServers
Claude Desktop Settings → Developer → Edit Config → claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\) mcpServers
Cursor .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) mcpServers
Windsurf Settings → Cascade → MCP → ~/.codeium/windsurf/mcp_config.json mcpServers
Cline (VS Code) MCP Servers panel → Configure → cline_mcp_settings.json mcpServers
Gemini CLI ~/.gemini/settings.json mcpServers
Continue ~/.continue/config.yaml (or a project .continue/) mcpServers
JetBrains AI Assistant / Junie Settings → Tools → AI Assistant → Model Context Protocol → Add (paste the JSON) mcpServers
VS Code (GitHub Copilot) .vscode/mcp.json (workspace) or user settings.json servers (see below)
Zed settings.json (Cmd/Ctrl+,) context_servers (see below)
OpenAI Codex CLI ~/.codex/config.toml TOML (see below)

Everything in the first group accepts the JSON above verbatim. The four below use a different shape:

Claude Code — one command (no file editing):

claude mcp add inkscape --scope user \
  -e INKSCAPE_MCP_WORKSPACE=/absolute/path/to/workspace \
  -- uvx --from git+https://github.com/jaags-dev/inkscape-mcp inkscape-mcp

VS Code (GitHub Copilot agent mode).vscode/mcp.json; note the servers key and type:

{
  "servers": {
    "inkscape": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jaags-dev/inkscape-mcp", "inkscape-mcp"],
      "env": { "INKSCAPE_MCP_WORKSPACE": "/absolute/path/to/workspace" }
    }
  }
}

Zedsettings.json, under context_servers:

{
  "context_servers": {
    "inkscape": {
      "source": "custom",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jaags-dev/inkscape-mcp", "inkscape-mcp"],
      "env": { "INKSCAPE_MCP_WORKSPACE": "/absolute/path/to/workspace" }
    }
  }
}

OpenAI Codex CLI~/.codex/config.toml:

[mcp_servers.inkscape]
command = "uvx"
args = ["--from", "git+https://github.com/jaags-dev/inkscape-mcp", "inkscape-mcp"]
env = { INKSCAPE_MCP_WORKSPACE = "/absolute/path/to/workspace" }

If your agent can't find uvx: GUI apps often don't inherit your shell PATH. Use the absolute path to uvx as command — e.g. ~/.local/bin/uvx (macOS/Linux) or C:\Users\<you>\.local\bin\uvx.exe (Windows).

Schemas drift: MCP client config formats change between releases. If a key differs from the table, check that tool's own MCP docs — but the command / args / env values stay the same.

Restart the agent (or reload its MCP servers) after editing config. You should then see the inkscape tools available.

From source

git clone https://github.com/jaags-dev/inkscape-mcp
cd inkscape-mcp
uv sync
uv run inkscape-mcp      # smoke-run; Ctrl+C to stop

Then use this as the command in any config above (instead of the uvx form):

"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/inkscape-mcp", "inkscape-mcp"]

Configuration (environment variables)

Variable Default Meaning
INKSCAPE_PATH auto-detected Path to the inkscape executable
INKSCAPE_MCP_WORKSPACE current dir Root folder all file reads/writes are scoped to (security boundary)
INKSCAPE_MCP_MAX_FILE_MB 50 Max size of an SVG that can be opened
INKSCAPE_MCP_ACTION_ALLOWLIST built-in set Comma-separated Inkscape actions the escape hatch may run

Tools

  • Documents: new_document, open_document, save_document, get_svg_source
  • Shapes: create_shape (rect/circle/ellipse/line/polygon/star)
  • Paths: create_path, path_boolean (union/difference/intersection/exclusion), object_to_path
  • Text: add_text, edit_text
  • Style: set_style
  • Transform: transform_object, align_distribute
  • Layers: manage_layers (create/list/update/reorder)
  • Query: list_objects, get_object, describe_document, get_geometry
  • Export: export (png/pdf/svg/ps/eps)
  • Preview: start_preview, stop_preview (live auto-reloading browser preview)
  • Escape hatch: run_inkscape_action

Live preview

start_preview spins up a local HTTP + Server-Sent-Events server and returns a http://127.0.0.1:<port> URL. Open that URL in any browser tab; it renders the current SVG and automatically refreshes whenever the document changes (e.g. after another tool call). This is a cross-platform preview mechanism — it does not drive a running Inkscape GUI window and does not use DBus.

Verify it works

  • Claude Code: claude mcp listinkscape: ✔ Connected.
  • Any client: run the uvx … command in a terminal — it should start and wait on stdin (that's the stdio server; Ctrl+C to stop).

About

A complete, cross-platform Inkscape MCP server (Python/FastMCP): 22 tools to create, edit, query, transform, export, and live-preview SVG via Inkscape.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages