Inkscape MCP
Vue d'ensemble
Inkscape est un éditeur de graphisme vectoriel open source basé sur le format SVG. À la différence de QGIS, il n'existe pas de plugin MCP officiel pour Inkscape en juin 2026 — mais plusieurs approches sont réalistes, avec des niveaux d'effort et de puissance différents.
Approches possibles
| Approche | Effort | Puissance | Statut |
|---|---|---|---|
| 1. Manipulation SVG directe | Aucun | Élevée (structure du fichier) | Fonctionne déjà |
| 2. MCP wrapper CLI Inkscape | Moyen (écrire un serveur MCP) | Moyenne (opérations CLI) | À construire |
| 3. Extension Inkscape + serveur TCP | Élevé (plugin Python Inkscape) | Maximale (GUI + rendu live) | À construire |
Approche 1 — Manipulation SVG directe (disponible maintenant)
SVG est du XML texte. Claude peut lire, écrire et modifier des fichiers .svg directement avec ses outils natifs, sans aucune intégration supplémentaire.
Ce que Claude peut déjà faire
- Lire la structure d'un SVG (éléments, attributs, groupes, calques Inkscape)
- Créer un SVG complet de zéro (formes, textes, chemins, dégradés)
- Modifier des propriétés : couleur, opacité, stroke, transform, viewBox
- Réorganiser les éléments dans l'arbre XML
- Ajouter/supprimer des calques (
<g inkscape:label="..." inkscape:groupmode="layer">) - Générer des motifs répétitifs, des grilles, des mises en page structurées
Limites de cette approche
- Pas de rendu live dans Inkscape — il faut rouvrir ou recharger le fichier
- Les opérations complexes (nœuds de chemin, boolean ops) sont difficiles à écrire à la main en SVG
- Pas d'accès aux filtres Inkscape (flou, ombres) via simple édition XML
Flux de travail type
Claude génère/modifie le .svg → tu recharges dans Inkscape (Ctrl+Z+rechargement) → ajustements manuels → boucle
Approche 2 — MCP wrapper CLI Inkscape
Inkscape expose une interface en ligne de commande (--actions) qui permet d'automatiser des opérations sans ouvrir l'interface graphique.
Commandes CLI Inkscape utiles
# Export PNG depuis SVG
inkscape --export-type=png --export-filename=sortie.png source.svg
# Export PDF
inkscape --export-type=pdf --export-filename=sortie.pdf source.svg
# Appliquer une transformation et exporter
inkscape --actions="select-all;object-set-attribute:transform,scale(2)" source.svg --export-type=svg --export-filename=sortie.svg
# Convertir texte en chemins
inkscape --actions="select-all;object-to-path" source.svg --export-type=svg --export-filename=sortie.svg
# Obtenir les dimensions du document
inkscape --query-all source.svg
Architecture d'un serveur MCP CLI
Claude Code ↔ Serveur MCP Python (stdio) ↔ subprocess inkscape CLI ↔ fichiers SVG/PNG/PDF
Un serveur MCP Python minimal exposerait des outils comme :
export_png(svg_path, output_path, dpi=96)export_pdf(svg_path, output_path)convert_text_to_paths(svg_path, output_path)get_document_dimensions(svg_path)apply_inkscape_action(svg_path, actions, output_path)
Prérequis
# Inkscape doit être dans le PATH
inkscape --version
# Inkscape 1.x.x (...)
Sur Windows, ajouter le dossier Inkscape au PATH système ou utiliser le chemin complet :
C:\Program Files\Inkscape\bin\inkscape.exe
Approche 3 — Extension Inkscape + serveur TCP (pattern QGIS)
La plus puissante mais la plus complexe à mettre en place. Inkscape supporte les extensions Python via le module inkex. Une extension pourrait ouvrir un socket TCP local et exposer des outils MCP (similaire au plugin QGIS MCP).
Architecture
Claude Code ↔ Serveur MCP Python (uvx) ↔ socket TCP local ↔ Extension Python Inkscape
Ce que ça permettrait
- Accéder aux éléments sélectionnés dans l'interface
- Appliquer des opérations live (boolean, nœuds, effets)
- Lire la position exacte des objets
- Déclencher des menus et actions Inkscape programmatiquement
Obstacles techniques
- Les extensions Inkscape s'exécutent en mode one-shot (lancées, exécutent, se ferment) — un serveur TCP persistant nécessite un thread daemon ou une extension de type "Effect" avec boucle
- L'API
inkexest bien documentée mais moins riche que PyQGIS - Aucun projet open source mature n'existe encore pour ce pattern (juin 2026)
Capacités envisageables selon l'approche
| Capacité | Approche 1 (SVG direct) | Approche 2 (CLI) | Approche 3 (Extension) |
|---|---|---|---|
| Créer des formes géométriques | ✓ | ✓ | ✓ |
| Modifier couleurs / styles | ✓ | ✓ | ✓ |
| Gérer les calques | ✓ | — | ✓ |
| Exporter PNG/PDF | — | ✓ | ✓ |
| Convertir texte en chemins | — | ✓ | ✓ |
| Boolean operations | — | ✓ (CLI) | ✓ |
| Lire sélection courante | — | — | ✓ |
| Appliquer filtres Inkscape | — | ✓ (partiel) | ✓ |
| Batch processing de fichiers | ✓ | ✓ | — |
| Rendu live dans l'UI | — | — | ✓ |
Cas d'usage concrets avec Inkscape
Avec l'approche 1 (maintenant)
- Générer des pictogrammes SVG (icônes, logos simples) à partir d'une description
- Créer des gabarits de mise en page (grilles, marges, zones de texte)
- Modifier en batch les couleurs d'une charte graphique sur plusieurs fichiers SVG
- Produire des cartes thématiques simplifiées à partir de données (ex : export QGIS → SVG → habillage Claude)
- Générer des diagrammes (organigrammes, schémas techniques) en SVG structuré
Avec l'approche 2 (à construire, effort ~2h)
- Pipeline : Claude génère SVG → CLI Inkscape exporte PDF → livraison automatique
- Batch conversion de SVG en PNG à différentes résolutions
- Optimisation SVG (texte en chemins avant impression)
Lien avec le workflow cartographique
Inkscape est souvent utilisé en aval de QGIS pour l'habillage cartographique (polices, mise en page avancée, symboles non gérés par QGIS). Le flux naturel serait :
QGIS MCP → export SVG → Claude (habillage Inkscape SVG direct) → Inkscape (retouches manuelles) → export PDF final
QGIS peut exporter une mise en page en SVG via Projet > Imprimer la mise en page > Exporter en SVG. Claude peut ensuite enrichir ce SVG (légendes, encadrés, pictogrammes) avant ouverture dans Inkscape.
Prochaine étape proposée
Trois options pour explorer concrètement :
- Test SVG direct — Claude génère un SVG d'exemple (carte, diagramme, gabarit) et tu l'ouvres dans Inkscape pour voir le résultat
- Prototype CLI MCP — écrire un serveur MCP Python minimal (~50 lignes) wrappant les exports Inkscape CLI, l'enregistrer dans Claude Code
- Exploration API inkex — ouvrir la console Python d'Inkscape et tester quelques commandes
inkexpour évaluer la faisabilité de l'approche 3
Mise en place réalisée (2026-07-21)
L'approche 2 (MCP wrapper CLI Inkscape) a été implémentée sur le PC Windows eliob.
Obstacle rencontré : version Microsoft Store (MSIX)
Le PC avait initialement Inkscape installé via le Microsoft Store, packagé en MSIX. Ce type de paquet s'est révélé inutilisable pour un pilotage CLI :
C:\Program Files\WindowsApps\...\inkscape.exe refuse l'exécution directe (Accès refusé) — ACL verrouillées par le sandboxing du paquet.
Aucun alias d'exécution (AppExecutionAlias) n'est déclaré dans le manifest (AppxManifest.xml) — impossible d'appeler inkscape depuis le PATH.
Invoke-CommandInDesktopPackage (la seule méthode de lancement programmatique disponible) ouvre l'app en mode GUI sans retourner la main ni capturer stdout — inexploitable pour de l'automatisation headless (export, --actions, etc.).
Conclusion : les versions Inkscape installées via le Microsoft Store ne conviennent pas à un usage MCP/CLI. Il faut la version standalone.
Fix — installation de la version standalone
winget install --id Inkscape.Inkscape --source winget --accept-package-agreements --accept-source-agreements
Inkscape.Inkscape (distinct du Store) → installe dans C:\Program Files\Inkscape\bin\inkscape.exe
Version installée : 1.4.4 (dcaf3e7, 2026-05-05)
Vérification : & "C:\Program Files\Inkscape\bin\inkscape.exe" --version répond correctement, exit code 0
Important : si une version Store est déjà présente, la désinstaller d'abord (Paramètres > Applications, ou winget uninstall) pour éviter la confusion entre les deux installations.
Serveur MCP créé
C:\Users\eliob\.claude\mcp_inkscape.py
Framework : FastMCP (même pattern que les autres MCP du projet — mcp_portainer.py, mcp_jellyfin.py, etc.)
Constante : INKSCAPE_EXE = r"C:\Program Files\Inkscape\bin\inkscape.exe" (chemin en dur — adapter si l'installation standalone se fait ailleurs)
Outils exposés :
get_version()
Vérifie qu'Inkscape répond (smoke test)
get_document_dimensions(svg_path)
Dimensions et bounding boxes de tous les objets (--query-all)
export_png(svg_path, output_path="", dpi=96)
Export PNG
export_pdf(svg_path, output_path="")
Export PDF
convert_text_to_paths(svg_path, output_path="")
Convertit les textes en chemins vectoriels
apply_inkscape_action(svg_path, actions, output_path="")
Échappatoire générique — chaîne d'actions Inkscape libre (; séparées)
Toutes les fonctions retournent {ok, returncode, stdout, stderr} (+ output_path pour les exports) — pas d'exception levée sur échec CLI, le code retour renseigne l'appelant.
Enregistrement MCP
Ajouté dans C:\Users\eliob\.mcp.json :
"inkscape": {
"type": "stdio",
"command": "python",
"args": ["C:\\Users\\eliob\\.claude\\mcp_inkscape.py"],
"env": {}
}
Nécessite un rechargement de session Claude Code pour que le nouveau serveur MCP soit détecté et ses outils exposés.
Test réalisé
SVG de test (rectangle bleu + texte) → export_png → PNG de 1974 octets généré avec succès. get_document_dimensions retourne correctement les bounding box (svg1,10,10,180,80 etc.) via --query-all.
À reproduire demain sur le PC Windows Alteris
Get-AppxPackage -Name "*Inkscape*") — si oui, désinstaller
winget install --id Inkscape.Inkscape --source winget --accept-package-agreements --accept-source-agreements
Vérifier C:\Program Files\Inkscape\bin\inkscape.exe --version
Copier mcp_inkscape.py (script identique, chemin INKSCAPE_EXE à adapter si besoin)
Ajouter l'entrée inkscape dans le .mcp.json de la machine Alteris
Recharger la session Claude Code et tester get_version() + export_png() sur un SVG de test