# LibreModular-MCP

## Universeller, in Rust geschriebener MCP-Server mit einem Hub, der nur zwei Werkzeuge bereitstellt

Steuert ein Modell eine Desktop-Anwendung mit einem Werkzeug pro Arbeitsschritt, kostet jeder Schritt einen Hin- und Rückweg. Der Hub stellt zwei Werkzeuge bereit: Ein Skript erledigt die ganze Arbeit in einem Aufruf. GIMP, Krita, Blender, Inkscape und LibreOffice funktionieren heute, jede über ein Modul und eine Brücke; der Hub ist darauf ausgelegt, möglichst viele Anwendungen in einem Server zu verbinden.

## Ein Skript gesendet, die Antwort des Hubs

Dieses Skript zeichnet in einem Inkscape-Dokument ein Diagramm mit drei Balken. Ein Client hat es mit einem einzigen Aufruf von `execute_script` gesendet, und der Block darunter ist die Antwort des Hubs. Die [Demonstration](https://libremodular.davalan.fr/de/demonstration/index.md) enthält einen Client mit 25 Zeilen und jeden Schritt, um einen solchen Lauf nachzuspielen.

**Geschriebenes Skript**

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

**Antwort des Hubs**

```json
{
  "app": "inkscape",
  "duration_ms": 151,
  "error": null,
  "result": {
    "bars": 3
  },
  "status": "ok",
  "stderr": "",
  "stdout": "",
  "truncated": false
}
```


Inkscape 1.4 hat es im Modus `cli` ausgeführt, ohne Fenster: Der Hub hat für das Skript einen Python-Prozess gestartet und den Wert, den das Skript nach `LMM_RESULT: ` ausgegeben hat, als `result` zurückgegeben.

## Zwei Werkzeuge, ein Modul pro Anwendung

Das ist LibreModular-MCP. Der Hub ist eine einzige Rust-Binärdatei, die dem Modell genau zwei Werkzeuge bietet. `execute_script` führt in einer Anwendung ein vollständiges Python-Skript aus und liefert zurück, was das Skript ausgegeben hat (sein `result`), oder die anwendungseigene Fehlerspur. `get_state` liefert, was in der Anwendung geöffnet ist. Ein Modul auf der Seite des Hubs und eine Brücke auf der Seite der Anwendung erreichen GIMP, Krita, Blender, Inkscape und LibreOffice; der Hub selbst kennt keine ihrer Schnittstellen.

Diese fünf Anwendungen sind die erprobten, nicht der Umfang des Hubs: Eine weitere Anwendung kommt über ein Modul, eine Brücke und ihren Leitfaden hinzu, wie [CONTRIBUTING.md](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/CONTRIBUTING.md) es beschreibt, und der Code steht unter der MIT-Lizenz.

Der [Schnellstart](https://libremodular.davalan.fr/de/quickstart/index.md) legt die Konfiguration des Hubs an, [Ihr Modell anbinden](https://libremodular.davalan.fr/de/clients/index.md) trägt ihn in Claude Code oder in opencode ein, und die [Installation](https://libremodular.davalan.fr/de/installation/index.md) nennt das Paket für jede Linux-Familie.

