# Démarrage rapide

Cinq étapes mènent d'un Hub installé à son premier script exécuté : créer la configuration et le jeton, activer Inkscape, déclarer le Hub dans votre client MCP, vérifier ce que le Hub voit, envoyer un script. Cette page s'adresse aux ingénieurs qui ont déjà le paquet ; Inkscape n'a besoin d'aucun pont. Sinon, commencez par l'[installation](https://libremodular.davalan.fr/fr/installation/index.md).

## Créer la configuration et le jeton

Lancez ceci une fois, avec votre propre utilisateur :

```sh
libremodular-mcp init
```

La commande imprime une ligne par répertoire et par fichier qu'elle crée ; cette page écrit `$HOME` pour le début de chaque chemin :

```text
directory ready: $HOME/.config/libremodular-mcp
directory ready: $HOME/.local/state/libremodular-mcp
configuration created: $HOME/.config/libremodular-mcp/config.toml
token created: $HOME/.config/libremodular-mcp/token
```

Les deux fichiers ont les droits 600. Lancé une seconde fois, `init` les laisse tels quels et dit `configuration exists, unchanged` et `token exists, unchanged`.

## Activer Inkscape

Après `init`, toutes les applications sont désactivées. Cette commande active Inkscape :

```sh
sed -i '/^\[apps.inkscape\]/,/^$/ s/enabled = false/enabled = true/' ~/.config/libremodular-mcp/config.toml
```

L'entrée de `config.toml` se lit alors ainsi :

```toml
[apps.inkscape]
enabled = true
mode = "cli"
```

Inkscape 1.4 est la version avec laquelle les commandes de cette page ont été exécutées. En mode `cli`, le Hub lance un processus Python par script : il n'y a donc aucun pont à démarrer. GIMP, Krita, Blender et LibreOffice sont atteints par un pont que vous lancez à la main ; chaque guide donne les commandes : [GIMP](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/modules/gimp.md), [Krita](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/modules/krita.md), [Blender](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/modules/blender.md) et [LibreOffice](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/modules/libreoffice.md).

## Déclarer le Hub dans votre client MCP

Le client exécute le Hub comme une commande, avec l'argument `serve`. Avec le paquet, la commande est `/usr/bin/libremodular-mcp` ; compilé depuis les sources, c'est le chemin absolu de `target/release/libremodular-mcp` dans votre clone.

```json
{
  "mcpServers": {
    "libremodular": {
      "command": "/usr/bin/libremodular-mcp",
      "args": ["serve"]
    }
  }
}
```

Le Hub a besoin de la variable `XDG_RUNTIME_DIR`, qu'une session de bureau définit. Sans elle, `libremodular-mcp serve` s'arrête aussitôt avec `error: XDG_RUNTIME_DIR is not set; refusing to write volatile files elsewhere`.

[Brancher votre modèle](https://libremodular.davalan.fr/fr/clients/index.md) donne cette entrée pour Claude Code et pour opencode, chacune essayée dans le client, avec la réponse à `get_state` que le client a reçue.

> **Limite**
>
> Aucun autre client MCP n'a été essayé. Le fichier où placer l'entrée, et le nom de ses clés, dépendent de votre client.


## Faire le premier appel

Le guide du modèle fait de `get_state` sur `hub` le premier appel : il liste les applications que le Hub peut atteindre. Demandez-le à votre modèle, ou lancez le client de la démonstration, dont la première réponse est celle-ci :

**Réponse du Hub**

```json
{
  "app": "hub",
  "app_version": "0.1.0",
  "bridge_version": null,
  "captured_at": "2026-10-21T07:57:39.858Z",
  "connected": true,
  "content_origin": "hub",
  "screenshot": null,
  "state": {
    "modules": [
      {
        "app_version": "1.4",
        "bridge_version": null,
        "connected": true,
        "mode": "cli",
        "name": "inkscape"
      }
    ]
  },
  "warnings": []
}
```


`inkscape` est connecté, en mode `cli`, et son `app_version` est `1.4`. Le Hub expose deux outils et pas un de plus : un client qui demande la liste des outils reçoit `["execute_script", "get_state"]`.

## Envoyer le premier script

Un modèle envoie un script comme celui-ci par `execute_script`. Pour l'envoyer vous-même, enregistrez-le sous le nom `first.py`, enregistrez le client de la [démonstration](https://libremodular.davalan.fr/fr/demonstration/index.md) sous le nom `client.py`, puis lancez `python3 client.py first.py`.

**Script écrit**

```python
import json

print("the script ran inside Inkscape's Python")
print("LMM_RESULT: " + json.dumps({"answer": 6 * 7}))
```


La troisième réponse du client est la réponse du Hub au script :

**Réponse du Hub**

```json
{
  "app": "inkscape",
  "duration_ms": 30,
  "error": null,
  "result": {
    "answer": 42
  },
  "status": "ok",
  "stderr": "",
  "stdout": "the script ran inside Inkscape's Python\n",
  "truncated": false
}
```


`stdout` est ce que le script a imprimé, `result` la valeur qui suit `LMM_RESULT: `, et `status` vaut `ok`. Le guide du modèle liste les autres statuts (`error`, `refused`, `timeout`, `busy` et `unavailable`) et ce qu'il faut faire de chacun : [guide du modèle](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/GUIDE_LLM.md). Un script qui dessine, et l'image qu'il a produite, sont sur la page [Démonstration](https://libremodular.davalan.fr/fr/demonstration/index.md).

