LibreModular-MCP
MCP universel écrit en Rust, avec un Hub qui n’expose que deux outils
Quand un modèle pilote une application de bureau avec un outil par geste, chaque geste coûte un aller-retour. Le Hub expose deux outils : un script fait tout le travail en un appel. GIMP, Krita, Blender, Inkscape et LibreOffice fonctionnent aujourd’hui, chacune par un module et un pont ; le Hub est conçu pour en accueillir un maximum dans un seul serveur.

Un script envoyé, la réponse du Hub
Ce script dessine un histogramme de trois barres dans un document Inkscape. Un client l’a envoyé en un seul appel execute_script, et le bloc qui suit est la réponse du Hub. La démonstration donne un client de 25 lignes et chaque étape pour rejouer une exécution comme celle-ci.
import json
import os
import inkex
document = inkex.load_svg(os.environ["LMM_DOCUMENT"])
layer = document.getroot().add(inkex.Layer.new("Chart"))
for index, value in enumerate([3, 7, 5]):
layer.add(inkex.Rectangle.new(20 + index * 30, 100 - value * 10, 20, value * 10))
document.write(os.environ["LMM_DOCUMENT"])
print("LMM_RESULT: " + json.dumps({"bars": len(layer)})){
"app": "inkscape",
"duration_ms": 151,
"error": null,
"result": {
"bars": 3
},
"status": "ok",
"stderr": "",
"stdout": "",
"truncated": false
}Inkscape 1.4 l’a exécuté en mode cli, sans fenêtre : le Hub a lancé un processus Python pour le script et a renvoyé, comme result, la valeur que le script avait imprimée après LMM_RESULT: .
Deux outils, un module par application
Voici LibreModular-MCP. Le Hub est un unique binaire Rust qui donne au modèle exactement deux outils. execute_script exécute un script Python complet dans une application et renvoie ce que le script a imprimé, son result, ou la trace d’erreur propre à l’application. get_state renvoie ce qui est ouvert dans l’application. Un module côté Hub et un pont côté application atteignent GIMP, Krita, Blender, Inkscape et LibreOffice ; le Hub lui-même ne connaît aucune de leurs interfaces.
Ces cinq applications sont celles qui ont été essayées, pas le périmètre du Hub : une autre application s’ajoute par un module, un pont et son guide, comme le décrit CONTRIBUTING.md, et le code est sous licence MIT.
Le démarrage rapide crée la configuration du Hub, Brancher votre modèle le déclare dans Claude Code ou dans opencode, et l’installation donne le paquet de chaque famille Linux.
Où aller ensuite
- Démonstration
Un client de 25 lignes lance le Hub, envoie un script à Inkscape et affiche chaque réponse, sans client MCP et sans fenêtre.
- Installation
Une commande par famille Linux pour installer le Hub depuis son paquet, l'installeur Windows, le niveau atteint par chacun, sa somme de contrôle, et la compilation depuis les sources.
- Architecture
Le Hub, ses deux outils, un module et un pont par application, les trois modes, et un script mesuré contre des appels séparés.
- Sécurité
Ce que le Hub borne, les risques qui restent, ce qui quitte la machine, et les mesures rejouées pour cette page.
- Compatibilité
Pour chaque application, la version essayée, la commande qui l'a lancée et ce qui n'a pas été essayé.
- Applications
Une recette réelle par application : le texte donné au modèle, son script, les réponses du Hub et le fichier produit.