# Inicio rápido

Cinco pasos llevan un Hub instalado hasta su primer script respondido: crear la configuración y el token, activar Inkscape, declarar el Hub en su cliente MCP, comprobar lo que ve el Hub y enviar un script. Es para ingenieros que ya tienen el paquete; Inkscape no necesita puente. Si no es el caso, empiece por la [instalación](https://libremodular.davalan.fr/es/installation/index.md).

## Crear la configuración y el token

Ejecute esto una sola vez, con su propio usuario:

```sh
libremodular-mcp init
```

Imprime una línea por cada directorio y por cada archivo que crea; esta página escribe `$HOME` para el comienzo de cada ruta:

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

Ambos archivos tienen el modo 600. Si se ejecuta una segunda vez, `init` los deja como están y dice `configuration exists, unchanged` y `token exists, unchanged`.

## Activar Inkscape

Tras `init`, todas las aplicaciones están desactivadas. Este comando activa Inkscape:

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

La entrada de `config.toml` queda entonces así:

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

Inkscape 1.4 es la versión con la que se ejecutó esta página. En el modo `cli`, el Hub inicia un proceso de Python por script, así que no hay ningún puente que iniciar. A GIMP, Krita, Blender y LibreOffice se llega por un puente que usted inicia a mano; cada guía da los comandos: [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) y [LibreOffice](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/modules/libreoffice.md).

## Declarar el Hub en su cliente MCP

El cliente ejecuta el Hub como un comando con el argumento `serve`. Con el paquete, el comando es `/usr/bin/libremodular-mcp`; si se construyó desde el código fuente, es la ruta absoluta de `target/release/libremodular-mcp` en su clon.

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

El Hub necesita la variable `XDG_RUNTIME_DIR`, que establece una sesión de escritorio. Sin ella, `libremodular-mcp serve` se detiene al instante con `error: XDG_RUNTIME_DIR is not set; refusing to write volatile files elsewhere`.

[Conectar su modelo](https://libremodular.davalan.fr/es/clients/index.md) da esta entrada para Claude Code y para opencode, cada una probada en el cliente, con la respuesta a `get_state` que recibió el cliente.

> **Límite**
>
> No se probó ningún otro cliente MCP. En qué archivo va la entrada y cómo se llaman sus claves depende de su cliente.


## Hacer la primera llamada

La guía para el modelo hace de `get_state` sobre `hub` la primera llamada: enumera las aplicaciones a las que el Hub puede llegar. Pídale a su modelo que la haga, o ejecute el cliente de la demostración, cuya primera respuesta es esta:

**Respuesta del 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á conectado, en el modo `cli`, y su `app_version` es `1.4`. El Hub expone dos herramientas y ninguna más: un cliente que pide la lista de herramientas recibe `["execute_script", "get_state"]`.

## Enviar el primer script

Un modelo envía un script como este mediante `execute_script`. Para enviarlo usted mismo, guárdelo como `first.py`, guarde el cliente de la [demostración](https://libremodular.davalan.fr/es/demonstration/index.md) como `client.py` y ejecute `python3 client.py first.py`.

**Script escrito**

```python
import json

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


La tercera respuesta del cliente es la respuesta del Hub al script:

**Respuesta del 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` es lo que el script imprimió, `result` es el valor tras `LMM_RESULT: ` y `status` es `ok`. La guía para el modelo enumera los demás estados (`error`, `refused`, `timeout`, `busy` y `unavailable`) y qué hacer con cada uno: [guía para el modelo](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/GUIDE_LLM.md). Un script que dibuja, y la imagen que produjo, están en la página de la [demostración](https://libremodular.davalan.fr/es/demonstration/index.md).

