InkscapeBLOCK
Headless Inkscape SVG automation via FastMCP — 60+ ops: create, boolean, LPE, export, text, fleet pipeline. Batch without GUI tour. For Cursor / Claude Desktop. Webapp + Tauri.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
AI agents create, edit, layer, animate, and export SVG files using Inkscape. Works as an MCP server (stdio/HTTP), Claude Desktop .mcpb bundle, webapp dashboard, or Windows desktop app.
Preview
Animated SVG presets render live in the browser — no Inkscape CLI needed.
How it runs
Headless by default — no GUI needed for most operations.
Features
- Create and edit SVG files (shapes, text, paths, booleans)
- Layer management — list, create, rename, hide, lock, reorder
- SMIL animation — bounce, fade, slide, rotate, pulse, shake presets
- Live Path Effects — bend, roughen, envelope, spiro, power stroke
- Export to PNG, PDF, EPS, DXF
- Fleet pipeline — hand off to GIMP, Blender, Unity, Resonite
- LPEs, text operations, object inspection, hands-in control
Install
Let your AI set it up
Do you use an AI coding assistant (Claude Code, Cursor, Codex, GitHub Copilot, ...)? Paste this into it:
Set up inkscape-mcp on this PC for me: https://github.com/sandraschi/inkscape-mcp - follow docs/AI_SETUP.md in that repository.
It checks your PC first (Inkscape, ports, disk) and installs nothing until that passes. It asks before installing Inkscape, then sets up the server and connects it to your AI app.
Or do it yourself
Claude Desktop only: download the .mcpb from Releases and drag it o
30ff0c632ec3OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add inkscape-mcp-sota -- npx -y [email protected]
{
"mcpServers": {
"inkscape-mcp-sota": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Trust audit
BLOCKgrade D · trust 66/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (8 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
os.environ.copy() ... urllib.request
scripts/backup-repo.ps1
mod = __import__(module_name, fromlist=[attr_name])
mod = importlib.import_module(entry_module_or_file)
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:10900/api/health', timeout=5)"# FleetStartMode.ps1 - vendored per-repo copy (no mcp-central-docs required at runtime)
# Fleet unified launcher - do not edit logic here.
.assess-fix-timestamp
.gitleaks.toml
.gitmessage
.markdownlint.json
.mcpbignore
digest = hashlib.md5(img.tobytes(), usedforsecurity=False).hexdigest()
svg_hash = hashlib.md5(description.encode()).hexdigest()[:8]
svg_hash = hashlib.md5(svg_content.encode()).hexdigest()[:8]
zf.writestr("../../evil.py", "print('pwned')")const SCREENSHOTS_DIR = path.resolve(__dirname, "../../docs/screenshots");
const VIDEO_DIR = path.resolve(__dirname, "../../docs/screenshots");
2. In Claude Desktop: `/mcp servers add hello-mcp --url http://127.0.0.1:8000`.
By default, FastMCP binds to `localhost:3333`. Configure your client (e.g., Claude Desktop, Cursor, Windsurf) to use `http://127.0.0.1:3333`.
uv run fastmcp inspect http://127.0.0.1:3333
curl -X POST http://127.0.0.1:3333/mcp \
@radix-ui/react-dialog, @radix-ui/react-dropdown-menu, @radix-ui/react-label, @radix-ui/react-progress, @radix-ui/react-scroll-area, @radix-ui/react-select, @radix-ui/react-slot, @radix-ui/react-tabs
- Consider running with elevated privileges if necessary
- Authorization: Role-based access control, API key management
Gates applied: no_behavioural_pass.
30ff0c632ec3full audit observations/trust-audit/mcp-server/sandraschi__inkscape.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 30ff0c632ec3 | BLOCK | D | 66 | first audit |
Questions
What is the Inkscape MCP server?
Headless Inkscape SVG automation via FastMCP — 60+ ops: create, boolean, LPE, export, text, fleet pipeline. Batch without GUI tour. For Cursor / Claude Desktop. Webapp + Tauri.
Is Inkscape safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (66/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.
What credentials does Inkscape need?
No credential environment variables were found in its source, so it appears to need none.
How does Inkscape run?
It speaks sse and stdio, so it runs as a local process your client starts. It is published on npm as inkscape-mcp-sota at 0.0.0.
How current is this page?
The grade is for one exact copy of the source (30ff0c632ec3), read on 2026-10-08. The repository is watched and re-audited when it changes.