# Conectar su modelo

Un modelo llega al Hub a través de un cliente MCP. Esta página da la entrada de configuración de Claude Code y de opencode, cada una probada en el propio cliente, y la respuesta que cada cliente recibió de `get_state` sobre `hub`. Es para ingenieros que ya tienen el Hub instalado.

*Una chispa cuyos rayos son líneas de las entradas de configuración que da esta página.*


## Antes de la entrada

El Hub está instalado, `libremodular-mcp init` se ha ejecutado e Inkscape está activado, como en el [inicio rápido](https://libremodular.davalan.fr/es/quickstart/index.md). Un cliente ejecuta el Hub como un comando con el argumento `serve`, y el Hub necesita la variable `XDG_RUNTIME_DIR`, que establece una sesión de escritorio.

Las entradas de abajo nombran `/usr/bin/libremodular-mcp`, la ruta del paquete. Las pruebas ejecutaron el Hub construido desde el código fuente, así que su `command` era la ruta absoluta de `target/release/libremodular-mcp` en el clon; el resto de cada entrada es el que se escribe aquí.

## Con Claude Code

Claude Code lee los servidores de un proyecto en `.mcp.json`, en la raíz del proyecto. Ponga ahí esta entrada:

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

El comando `claude mcp add --scope project libremodular -- /usr/bin/libremodular-mcp serve` escribe la misma entrada, con `"type": "stdio"` y `"env": {}` añadidos. Claude Code lista las dos herramientas del Hub como `mcp__libremodular__get_state` y `mcp__libremodular__execute_script`.

El modelo fue Claude Haiku 5.5, iniciado con `claude -p` sobre esta entrada y esta petición:

```text
Call the get_state tool of the libremodular MCP server with target_app set to "hub", then copy its JSON answer as it is.
```


Claude Code llamó a `mcp__libremodular__get_state` con `{"target_app": "hub"}`, y la respuesta del Hub le llegó así:

**Respuesta del Hub**

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


La respuesta lista Inkscape, la única aplicación activada, como conectada en modo `cli`.

## Con opencode

opencode lee `opencode.json` en el directorio del proyecto. El comando `opencode mcp add libremodular -- /usr/bin/libremodular-mcp serve`, ejecutado en ese directorio, escribe este archivo:

```json
{
  "mcp": {
    "servers": {
      "libremodular": {
        "type": "local",
        "command": [
          "/usr/bin/libremodular-mcp",
          "serve"
        ]
      }
    }
  }
}
```

opencode no da a su modelo una herramienta por cada herramienta MCP: el modelo escribe JavaScript para su herramienta `execute`, y las herramientas del Hub se alcanzan como `tools['libremodular']`. El modelo fue Llama 3.1 8B, servido en local por Ollama e iniciado con `opencode run --standalone --auto --model ollama/llama3.1:8b-instruct-q5_K_M` con esta petición:

```text
Use your execute tool to call the get_state tool of the libremodular MCP server with target_app set to "hub", then copy its JSON answer as it is.
```


El modelo escribió esta llamada:

**Script escrito**

```javascript
tools['libremodular'].get_state({target_app: "hub"})
```


y opencode devolvió la respuesta del Hub:

**Respuesta del Hub**

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


> **Límite**
>
> Un solo modelo respondió, una vez que la petición nombró la herramienta `execute`. Una petición que no la nombraba no trajo la respuesta del Hub; `qwen2.5-coder:14b`, también local, escribió la llamada como texto y no ejecutó nada; los modelos gratuitos alojados de opencode habían alcanzado su límite de uso. `opencode mcp list` no muestra ningún servidor aunque `opencode run` llega al Hub: la respuesta de `get_state` es la comprobación.


## Dar su guía al modelo

La [guía para el modelo](https://github.com/RonanDavalan/LibreModular-MCP/blob/main/docs/GUIDE_LLM.md) tiene seis pasos. El primero es la llamada hecha arriba: `get_state` sobre `hub`, que lista las aplicaciones que el modelo puede usar e indica cuáles están conectadas. Un cliente que permite adjuntar un archivo toma la guía como adjunto.

## Otros clientes

> **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.

