About Inkmcp
Inkmcp is an MCP server published by Shriinivas in the AI category: inkscape MCP Server - Control Inkscape through AI assistants via Model Context Protocol.
The repository has 75 stars and 10 forks, with the last commit 9 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/Shriinivas/inkmcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Inkmcp
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- !Dependencies pinnedNo lockfile. Installs can pull different code over time.
- !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
Inkscape MCP Server
A Model Context Protocol (MCP) server that enables live control of Inkscape through natural language instructions. This allows AI assistants like Claude to directly manipulate vector graphics in real-time.
Features
- 🎯 Live Instance Control - Direct manipulation of running Inkscape documents
- ⚡ D-Bus Integration - Real-time communication
- 🚀 Universal Element Creation - Create any SVG element with unified syntax
- 🏗️ Hierarchical Scene Management - Semantic organization with automatic ID collision handling
- 📐 Python Code Execution - Run arbitrary inkex code in live context
- 🖼️ Screenshot Support - Visual feedback with viewport capture
Platform Support
- ⚠️ Currently Linux Only - Uses D-Bus which is Linux-specific
- 🔮 Future: Cross-platform support possible via TCP sockets/named pipes
Quick Start
1. Installation (Linux Only)
- Go to the Releases page
- Download
inkmcp-extension.zipfrom the latest release - Extract it to your Inkscape extensions directory:
cd ~/.config/inkscape/extensions/ unzip ~/Downloads/inkmcp-extension.zip
2. Make Scripts Executable
cd ~/.config/inkscape/extensions/inkmcp
chmod +x run_inkscape_mcp.sh inkmcpcli.py inkscape_mcp_server.py main.py
3. Start Inkscape
Launch Inkscape normally - the extension is hidden from the menu and only accessible via D-Bus.
4. Connect with AI Tools
Auto-Setup: The first time an AI client connects, it will automatically:
- Create Python virtual environment in
~/.config/inkscape/extensions/inkmcp/venv/ - Install all required dependencies from
requirements.txt - Start the MCP server
No manual setup required!
Claude Code
Edit your Claude configuration file:
# ~/.claude/claude-config.json
{
"mcpServers": {
"inkscape": {
"command": "/home/USERNAME/.config/inkscape/extensions/inkmcp/run_inkscape_mcp.sh"
}
}
}
Anthropic Claude Desktop
Update Claude desktop app settings:
{
"mcpServers": {
"inkscape": {
"command": "/home/USERNAME/.config/inkscape/extensions/inkmcp/run_inkscape_mcp.sh"
}
}
}
Google Gemini/Codex
For Gemini, edit settings file:
# ~/.gemini/settings.json
{
"mcpServers": {
"inkscape-mcp": {
"command": "/home/USERNAME/.config/inkscape/extensions/inkmcp/run_inkscape_mcp.sh"
}
}
}
For Codex, edit configuration:
# ~/.codex/config.toml
[mcp_servers.inkscape-mcp]
command = "/home/USERNAME/.config/inkscape/extensions/inkmcp/run_inkscape_mcp.sh"
Usage Examples
With AI Assistant (Claude Code/Gemini/etc) - Requires Running Inkscape
"In Inkscape, draw a smooth sine wave starting at the left edge in the middle of the document and apply power stroke path effect to it"
"In Inkscape, create a beautiful logo with a radial gradient circle and elegant typography"
"In Inkscape, draw a mathematical spiral using varying circle sizes with golden ratio"
"In Inkscape, create a house illustration with gable roof, wooden door, and flower garden"
"In Inkscape, design a data visualization chart with bars with hatch fill and labels using current document size"
"In Inkscape, export the current document as high-resolution PNG for presentation"
Available MCP Tools
inkscape_operation - Universal tool for all Inkscape operations:
- Create any SVG element (circle, rect, text, path, gradient, etc.)
- Execute Python/inkex code in live context
- Get document/selection information
- Export viewport screenshots
- Hierarchical element creation with groups
- Automatic ID collision handling
Hybrid Execution
Execute code seamlessly across multiple Python contexts with automatic variable sharing!
execute-hybrid CLI Command
Interleave local Python execution with Inkscape operations using magic comments:
# @local
import random
points = [(random.randint(10, 200), random.randint(10, 200)) for _ in range(5)]
# @inkscape
for x, y in points:
circle = Circle()
circle.set("cx", str(x))
circle.set("cy", str(y))
svg.append(circle)
Features:
- 🔄 Full bidirectional variable flow (Local ↔ Inkscape)
- 🎯
get_element_by_id()helper function for reliable element lookup - ⚠️ Full error tracebacks with fail-fast behavior
Usage:
python inkmcpcli.py execute-hybrid -f script.py
Blender-Inkscape Addon
Transfer curves and data from Blender to Inkscape in real-time!
Installation:
- Blender > Edit > Preferences > Add-ons > Install
- Select
blender_addon_inkscape_hybrid.py - Enable "Scripting: Inkscape Hybrid Execution"
- Set INKMCP_CLI_PATH to
/path/to/inkmcp/inkmcpcli.py
Usage:
# @local - Runs in Blender
import bpy
curve = bpy.context.object
segs = [list(pt.co[:2]) for spline in curve.data.splines
for pt in spline.bezier_points]
# @inkscape - Runs in Inkscape via D-Bus
for x, y in segs:
circle = Circle()
circle.set("cx", str(x * 100))
svg.append(circle)
Run with: Text > Run Hybrid Code (or Ctrl+Shift+H)
Features:
- ✨ One-click execution from Blender text editor
- 🔄 Automatic variable serialization
- ⚠️ Helpful warnings for non-serializable Blender objects
- 🎨 Real-time bezier curve transfer to Inkscape
Example: blender_paste_example.py - Complete bezier curve visualization
Note: Blender objects (Vectors, etc.) must be converted to lists for JSON serialization.
See BLENDER_HYBRID_README.md for detailed documentation.
Technical Details
Architecture
- Extension:
inkscape_mcp.py- Inkscape extension triggered via D-Bus - MCP Server:
inkscape_mcp_server.py- FastMCP server handling AI requests - CLI Client:
inkmcpcli.py- Direct command-line interface for testing - Operations:
inkmcpops/- Modular operation handlers
Communication Flow
AI Assistant → MCP Server → CLI Client → D-Bus → Inkscape Extension → Live Document
Advanced Usage
Direct CLI Usage (For Testing/Development)
# In the inkmcp directory - bypasses AI assistant for direct control
# Basic shapes
python inkmcpcli.py circle "cx=100 cy=100 r=50 fill=red"
python inkmcpcli.py rect "x=0 y=0 width=200 height=100 stroke=blue"
# Gradients
python inkmcpcli.py linearGradient "x1=0 y1=0 x2=200 y2=200 stops='[[\"0%\",\"green\"],[\"50%\",\"yellow\"],[\"100%\",\"red\"]]'"
# Code execution
python inkmcpcli.py execute-code "code='circle = inkex.Circle(); circle.set(\"cx\", \"150\"); circle.set(\"cy\", \"100\"); circle.set(\"r\", \"25\"); svg.append(circle)'"
# Document info
python inkmcpcli.py get-info
# Selection info
python inkmcpcli.py get-selection
# Export screenshot
python inkmcpcli.py export-document-image "format=png max_size=800"
Arbitrary Code Execution
Execute any Python/inkex code in the live Inkscape context:
# Create complex shapes programmatically
code = '''
rect = Rectangle()
rect.set('x', '10')
rect.set('y', '20')
rect.set('width', '100')
rect.set('height', '50')
rect.set('style', 'fill:blue;stroke:red;stroke-width:2')
svg.append(rect)
'''
Troubleshooting
Common Issues
- D-Bus not found: Ensure you're on Linux with D-Bus session running
- Extension not triggered: Check Inkscape is running and extension is installed
- Python environment: Ensure virtual environment is activated with dependencies
- Permissions: Make sure scripts are executable (
chmod +x *.sh *.py)
Debug Mode
# Check D-Bus connection
gdbus introspect --session --dest org.inkscape.Inkscape --object-path /org/inkscape/Inkscape
# Structured JSON output
python inkmcpcli.py get-info --parse-out --pretty
Development
Adding New Operations
- Create new file in
inkmcpops/ - Implement
execute(svg, params)function - Add corresponding MCP tool in
inkscape_mcp_server.py
License
README fetched from the repository 5 days ago. The original is authoritative.