inkscape-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace-root | Yes | A workspace root directory accessible to the MCP server. Can be provided multiple times. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| artifact_read_chunkB | Reads one owner-bound, bounded binary artifact chunk by opaque ID. Use resource links for ordinary artifact consumption. |
| inkscape_statusA | Reports local Inkscape availability, observed capabilities and security posture without exposing filesystem paths. |
| fonts_listB | Lists a bounded cache of local system font family names without exposing font file paths. |
| fonts_preflightA | Checks SVG-declared font families against the local cached font inventory; glyph coverage and embedding permissions remain explicitly unverified. |
| document_snapshotA | Creates an opaque, owner-bound snapshot of a document after verifying its exact revision. |
| document_restoreB | Restores an owner-bound snapshot only when the current document revision matches exactly. |
| elements_updateC | Updates bounded SVG geometry, basic styles, text, or layer labels through typed allowlisted patches. |
| elements_arrangeA | Moves same-parent SVG elements to front, back, one step, a deterministic sibling index, or immediately before/after a sibling. |
| elements_groupA | Groups same-parent SVG elements or ungroups one non-layer group while preserving child order and rejecting broken href references. |
| elements_duplicateB | Duplicates a bounded SVG subtree with deterministic local-ID remapping, or creates an explicit SVG use clone. Only internal fragment references in a copied subtree are rewritten; malformed source IDs must be normalized first. |
| elements_reparentB | Moves bounded SVG elements under one existing group or layer in source document order. It rejects cycles and ancestor-descendant selections. |
| workspace_listB | Lists authorized workspaces by opaque ID without exposing their filesystem roots. |
| workspace_list_documentsA | Lists allowed SVG/SVGZ document paths within one workspace using an opaque cursor. |
| document_importB | Imports one workspace-local SVG or SVGZ into a new sanitized SVG plus an adjacent reproducible conversion manifest. SVGZ expansion is hard-limited and no external resource is fetched. |
| document_import_rasterA | Imports one workspace-local uncompressed BMP/TIFF/TGA, PNG, JPEG, GIF, or WebP as a new SVG document with a byte-sniffed, megapixel-bounded raster wrapper and conversion manifest. It can embed the approved bytes or retain one workspace-local relative link; it never fetches a URL. |
| document_import_capabilitiesA | Reports the exact input types observed from this local Inkscape --list-input-types probe, including headless fixture gates for supported native import adapters. A detected type is never exposed until its real headless conversion fixture passes. |
| document_import_postscriptB | Imports one trusted workspace-local EPS or PostScript file through the observed local Inkscape capability into a sanitized SVG and conversion manifest. It never accepts arbitrary native formats or arguments. |
| document_import_emfB | Imports one trusted workspace-local EMF file through the observed local Inkscape capability into a sanitized SVG and conversion manifest. It never accepts arbitrary native formats or arguments. |
| document_import_pdfB | Imports exactly one page of a workspace-local PDF through the local Inkscape importer into a sanitized SVG and conversion manifest. The internal and Poppler importers are explicit, capability-gated modes with fidelity warnings. |
| document_import_svgA | Imports one workspace-local SVG into a new sanitized SVG document. Scripts, event handlers and forbidden external references are removed according to the selected policy. |
| assets_packageB | Creates a portable workspace-local SVG package containing document.svg, rewritten local assets, and a revision manifest. Every package file is published together and existing files are never overwritten. |
| document_createB | Creates a new SVG document from bounded custom dimensions or a named page preset. Existing outputs are never overwritten. |
| document_normalize_idsB | Explicitly normalizes invalid or duplicate SVG IDs and rewrites supported local href, URL, ARIA and CSS references. Existing valid unique IDs remain unchanged. |
| elements_createC | Creates a bounded batch of typed SVG basic shapes without accepting XML or arbitrary attributes. |
| connector_retargetA | Retargets an existing semantic Inkscape connector to two explicit local endpoints while preserving its current polyline route. |
| connector_routeB | Routes a semantic Inkscape connector orthogonally between explicit rect, circle, or ellipse endpoints. Optional explicit obstacles use bounded Manhattan routing with axis-aligned transforms and a typed clearance. |
| connector_createC | Creates one typed Inkscape polyline connector between two existing local element IDs without accepting SVG/XML or arbitrary connection attributes. |
| document_apply_operationsB | Applies a bounded ordered design transaction to an SVG. Every operation is validated against the preceding in-memory result; a failure leaves the source untouched. |
| elements_queryC | Lists bounded SVG element summaries by IDs, type, layer, or one safe CSS compound selector without exposing arbitrary XML attributes. |
| elements_deleteB | Deletes explicitly selected SVG elements and rejects deletions that would leave fragment references broken. |
| elements_transformB | Appends an allowlisted numeric SVG transform to selected elements without accepting transform strings, then re-routes compatible semantic connectors attached to moved endpoints. |
| paths_combineB | Combines same-parent SVG paths only when their presentation attributes match exactly and removed IDs have no live SVG references. |
| masks_manageA | Creates typed opaque rectangular SVG masks, applies or releases them from explicit elements, and prevents deletion while any SVG or CSS reference remains. |
| clips_manageA | Creates typed rectangular SVG clipPaths, applies or releases them from explicit elements, and prevents deletion while any SVG or CSS reference remains. |
| images_cropC | Crops one SVG image non-destructively by applying a new local user-space clipPath; the original image href and geometry remain unchanged. |
| images_manageB | Relinks, embeds, or extracts explicit SVG raster images using only workspace-confined files and bounded supported MIME types. |
| images_traceA | Irreversibly traces one local or embedded raster image through the verified Inkscape object-trace action. Only the bounded default preset is available; no trace parameters, actions, or extensions are accepted. |
| images_inspect_dpiB | Reports effective DPI X/Y for embedded PNG images and a conservative singular-value range when transforms include rotation or skew. Linked image bytes are never read. |
| resources_inspect_remoteB | Reports remote SVG resources without downloading them, with remediation to replace them using workspace-local linked or embedded image operations. |
| accessibility_inspectB | Provides explicitly heuristic SVG text contrast and document reading-order diagnostics; contrast uses an opaque Inkscape page background when available, otherwise white, and only direct hex fill. |
| text_manageA | Edits local SVG text through bounded plain-text segments or explicit multiline tspans, preserving existing structure only when requested. |
| text_path_manageA | Attaches text (including tspans) to a local SVG path or detaches it without accepting markup. |
| flowed_text_inspectA | Lists Inkscape flowed-text roots and paragraph counts without interpreting their layout. |
| flowed_text_convertA | Converts one simple one-region Inkscape flowRoot to editable SVG text only after explicit lossy confirmation. Complex flows are rejected. |
| metadata_manageB | Updates SVG document metadata or element accessibility with bounded plain text and no arbitrary RDF/XML. |
| defs_vacuumB | Plans or conservatively removes unused top-level SVG definitions. Defaults to dry-run and never rewrites referenced resources. |
| document_optimizeB | Plans or writes a derived SVG that removes only unused top-level definitions. Publication requires a deterministic Inkscape visual-regression render; the source document is never modified. |
| filters_manageB | Creates, replaces, applies, releases or safely deletes typed SVG blur, drop-shadow, blend and color-matrix filters without accepting arbitrary XML. |
| markers_manageB | Creates, replaces, applies or deletes typed SVG arrow/dot markers without accepting free path data or XML. |
| patterns_manageB | Creates, replaces, applies or deletes typed SVG dots/stripes patterns in defs without accepting free XML or CSS. |
| symbols_manageB | Lists, creates or deletes reusable SVG symbols and creates positioned local use clones. Existing cyclic or missing use references are rejected. |
| guides_grids_manageB | Inspects and safely changes document-local Inkscape guides and xygrids. It never reads or changes global Inkscape preferences. |
| path_effects_inspectB | Lists preserved local Inkscape path effects and their local path references without editing effect parameters. |
| path_effects_manageB | Detaches explicit local paths from an Inkscape Live Path Effect or deletes an already unreferenced local effect. It never edits effect parameters or invokes GUI-dependent LPE rendering. |
| color_management_inspectA | Lists local SVG color-profile metadata and ICC paint references without claiming CMYK conversion or PDF/X output-intent validation. |
| palette_applyA | Replaces explicitly mapped local hex paints in attributes, typed inline fill/stroke/stop-color styles, and local CSS variable values without reading global Inkscape palettes. |
| palette_inspectB | Lists direct local hex colors in attributes or typed inline paint styles, plus local CSS variable values, without reading global Inkscape palettes. |
| mesh_gradients_inspectB | Lists preserved SVG mesh gradients and their structural counts without exposing unsupported editing or rewriting their patch geometry. |
| gradients_manageB | Creates, replaces, applies or deletes typed SVG linear/radial gradients in without accepting free XML or CSS. |
| text_to_pathsA | Irreversibly converts explicit SVG text element IDs to paths through Inkscape in a staged copy. The caller must confirm the destructive conversion. |
| objects_to_pathsB | Irreversibly converts selected basic vector objects or their strokes to SVG paths through Inkscape in a staged copy. The caller must confirm the destructive conversion. |
| paths_booleanA | Runs an allowlisted native boolean, division, or cut operation on exactly two safe SVG path IDs in a staged copy, then atomically publishes the sanitized result. For difference, division, and cut, ids[0] is the target and ids[1] is the cutter. |
| path_modifyB | Irreversibly simplifies one SVG path through the verified native action in a staged copy. Legacy inset, outset, and offset requests return a recoverable unavailable-capability error on the current baseline. |
| paths_flattenA | Irreversibly flattens two to 100 explicitly selected overlapping SVG paths through the verified native Inkscape action in a staged copy. |
| path_break_apartC | Splits a compound SVG path into explicit, caller-supplied IDs. Existing references to the source ID are rejected before mutation. |
| path_reverseA | Reverses line-only SVG path subpaths while retaining the path ID and presentation. Curves and arcs are rejected until their exact reversal is available. |
| path_node_editC | Edits explicit absolute linear path nodes or opens/closes a subpath by segment index without accepting raw SVG path data. |
| path_node_moveC | Moves one path endpoint by zero-based segment index without accepting raw SVG path data; relative commands are normalized to equivalent absolute SVG. |
| elements_flatten_transformA | Bakes each selected element's own axis-aligned translate/scale/matrix transform into safe primitive geometry. It rejects rotation, skew, paths and inherited transforms rather than changing SVG semantics. |
| elements_alignB | Aligns SVG elements to a selection, page, coordinate or another element using Inkscape visual bounds; selected ancestors and descendants are rejected. |
| elements_distributeB | Distributes SVG elements by visual edges, centres or gaps using native Inkscape bounds, preserving the first and last element on the chosen axis. |
| elements_remove_overlapsA | Separates overlapping SVG elements by deterministic translation on one axis, using Inkscape visual bounds. It does not union, trim, delete, or otherwise alter path geometry. |
| document_inspectB | Reads SVG settings and a bounded, redacted design inventory from an authorized document without mutating it. |
| document_preflightB | Runs a read-only basic, web, print, or interchange preflight without opening linked resources. |
| document_resizeB | Changes the SVG page size with page_only semantics while preserving element geometry, returning a bounded semantic diff. Requires the current document revision. |
| document_fit_pageB | Fits a page to native visual drawing or selected-object bounds with explicit per-side margins. This never transforms objects. |
| document_page_adjustC | Crops, expands or changes page orientation with explicit physical margins, preserving object geometry. |
| document_pagesB | Lists or safely changes explicit Inkscape 1.4 pages by stable page ID. Mutations require the current document revision. |
| document_page_validateB | Validates explicit Inkscape page overlap, empty pages and objects outside every page using native visual bounds. |
| document_settingsA | Reads or updates typed Inkscape page, desk and border display settings. Updates require the current document revision. |
| document_render_previewB | Renders a bounded transparent PNG preview through Inkscape without changing the source document. Small results are returned inline and every preview is saved to an authorized workspace path. |
| document_export_preset_planA | Preflights one named export preset without publishing files and returns an owner-bound, single-use plan token. Execution must use the token before it expires, so the plan stays tied to the source revision and observed Inkscape capabilities. |
| document_export_batchC | Renders a bounded batch of baseline PNG, PDF, SVG, or plain SVG variants. all_or_nothing verifies every variant before one logical publish; best_effort publishes verified successes. |
| job_getB | Returns the owner-bound status, latest monotonic progress and terminal batch result of an asynchronous export job. |
| job_cancelA | Idempotently requests cancellation of an owner-bound asynchronous export job. No unfinished output is published. |
| document_exportB | Exports one PNG, PDF, SVG, plain SVG, PS, EPS, EMF, experimental WMF, or a fixed versioned DXF/HPGL/FXG/SIF/GPL adapter from a validated ExportSpec through the bounded Inkscape pipeline. Legacy vector formats require explicit acknowledgement of fidelity limits. |
| export_pngC | Exports an SVG document to PNG through Inkscape using only bounded, allowlisted options. |
| export_pdfC | Exports an SVG document to a validated PDF through Inkscape using bounded, allowlisted options. |
| export_pdf_pagesB | Exports explicit Inkscape pages as individually validated PDFs with stable page-NNN.pdf names. |
| export_svgC | Exports an SVG as Inkscape SVG or plain SVG through the bounded Inkscape pipeline. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| audit_document | Visible read-only recipe for inspecting and preflighting a selected document. |
| prepare_web_export | Visible no-side-effect checklist for a workspace-local web export. |
| prepare_print_pdf | Visible no-side-effect checklist for a print PDF export. |
| create_asset_pack | Visible no-side-effect checklist for packaging approved local assets. |
| optimize_svg | Visible no-side-effect checklist for safe SVG optimization review. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| server_capabilities | Redacted local Inkscape capability summary for planning a supported workflow. |
| page_size_presets | Fixed physical page-size presets supported by document_create. |
| export_presets | Named export preset definitions; source, output directory and revisions stay explicit tool arguments. |
TDQS
Scored across 90 tools
Many tools target distinct SVG/Inkscape operations, but there are several overlapping clusters: document_import_svg vs document_import vs format-specific imports, document_export vs export_png/pdf/svg, and numerous *_manage / *_inspect pairs. Descriptions add detail, but an agent still faces dozens of similarly named tools and must carefully disambiguate them.
Mostly snake_case, but the ordering convention is mixed: many tools use resource_action (elements_create, document_import), while others use verb_noun (export_png, path_modify, text_to_paths), and some lack a resource prefix (inkscape_status, job_get). This inconsistent verb and prefix style makes the large set harder to scan.
90 tools is an extreme mismatch for a typical MCP server, far exceeding the 3-15 range. Many tools are narrow variants or overlapping capabilities, creating severe surface bloat and high cognitive load.
The surface appears exceptionally comprehensive for SVG/Inkscape editing: it covers document lifecycle, elements, paths, text, effects, import/export, jobs, accessibility, metadata, and more. Core CRUD and advanced operations are broadly represented with few obvious dead ends.