Create, edit and export SVG graphics with Inkscape: measured layout, templates, export.
An MCP server that lets AI assistants create, edit and export vector graphics with Inkscape.
Describe a poster, a diagram, a chart or a comic page to your assistant, and it builds a real SVG document in Inkscape: measured, laid out and exported to PNG or PDF. It can also open drawings made elsewhere and change them.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
Made by Claude through inksmcp during field tests, in 13 to 41 tool calls each. The SVG was never edited by hand. The floor plan and the periodic table used a short script to prepare their data.
Asking a model to write SVG by hand works for an icon, but it breaks down on real layouts. The model can't measure text, keeps redoing coordinate arithmetic, and can't see what it drew. inksmcp takes that work off the model:
align and layout arrange things. place keeps a
caption below a title's real glyphs. fit_to sizes a box around its content. connect draws arrows
that stay attached when things move.repeat stamps a template per data row (cards, timelines, legends, table rows,
character poses). split divides a page into panels or cells. Large data comes from JSON or CSV
files, so it doesn't pass through the conversation..svg/.svgz drawings from other tools. inspect find
locates elements by colour, type, text or symbol. Symbols can be placed from icon libraries.render_preview shows the agent what it drew.Add the server to your MCP client. For Claude Code:
claude mcp add --scope user inkscape -- uvx inksmcp
For Claude Desktop, Cursor and others:
{ "mcpServers": { "inkscape": { "command": "uvx", "args": ["inksmcp"] } } }
Ask: "Using the inkscape tools, make an A5 flyer for a book swap on Saturday at 10:00 in the library garden, show me a preview, then export a PDF."
Details for each OS and client, and troubleshooting, are in getting started.
| Area | Tools |
|---|---|
| Documents | document_create, document_open, document_save, inspect (outline, real bboxes, find), inkscape_info |
| Elements | add_elements (rect, circle, ellipse, line, polyline, polygon, path, text, group, arrow, image, use), update_elements, delete_elements, import_file, repeat |
| Arrangement | align, layout, split, connect, z_order, move_to_layer, page_fit, page_resize |
| Charts | grid (linear/log graph paper and axes), plot (data series in data values) |
| Paths | path_operation (union, difference, intersection, combine, stroke to path, ...), run_actions (guarded raw Inkscape actions) |
| Output | render_preview (PNG back to the agent), export |
See the recipes for how they combine, and the tool reference for every parameter.
The document lives in the server as an lxml tree, which is the source of truth. Edits are applied
there directly. Anything that needs Inkscape (measuring, boolean operations, connectors, rendering,
export) goes to one persistent inkscape --shell process, so a call takes milliseconds instead of
the ~1 s it takes to start Inkscape. The architecture notes have
the details.
inksmcp is beta (0.3). It has been through eleven field tests, in which agents used it for real tasks. The latest one edited files made in other tools. There are 160 tests, and they run against the real Inkscape.
Known limits:
style
when they already exist in the document.The roadmap lists what's next.
Bug reports, field reports ("I asked for X, here's what the agent struggled with") and pull requests
are welcome. See CONTRIBUTING.md. The project is built experiment-first: every
Inkscape behaviour it relies on is proven by a script in experiments/ and guarded by a test. The
development handbook explains the method.
MIT. Inkscape is a separate program under the GPL; inksmcp calls it as an external process.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx inksmcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-bhanutpt-inksmcp": {
"command": "uvx",
"args": [
"inksmcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceinksmcppypiInkscape (inksmcp) works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.