# 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](https://libremodular.davalan.fr/fr/demonstration/index.md) donne un client de 25 lignes et chaque étape pour rejouer une exécution comme celle-ci.

**Script écrit**

```python
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)}))
```

**Réponse du Hub**

```json
{
  "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](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/CONTRIBUTING.md), et le code est sous licence MIT.

Le [démarrage rapide](https://libremodular.davalan.fr/fr/quickstart/index.md) crée la configuration du Hub, [Brancher votre modèle](https://libremodular.davalan.fr/fr/clients/index.md) le déclare dans Claude Code ou dans opencode, et l'[installation](https://libremodular.davalan.fr/fr/installation/index.md) donne le paquet de chaque famille Linux.

