LibreModular-MCP

Servidor MCP universal escrito en Rust, con un Hub que solo expone dos herramientas

Si un modelo maneja una aplicación de escritorio con una herramienta por gesto, cada gesto cuesta una ida y vuelta. El Hub expone dos herramientas: un script hace el trabajo en una llamada. GIMP, Krita, Blender, Inkscape y LibreOffice funcionan hoy, cada una mediante un módulo y un puente; el Hub busca conectar cuantas sea posible en un solo servidor.

Probar la demostración

Esquema: un cliente MCP llama al Hub, que expone dos herramientas, execute_script y get_state, y hace pasar cada script por un módulo y un puente hasta una aplicación: GIMP, Krita, Blender, Inkscape o LibreOffice. Esquema: un cliente MCP llama al Hub, que expone dos herramientas, execute_script y get_state, y hace pasar cada script por un módulo y un puente hasta una aplicación: GIMP, Krita, Blender, Inkscape o LibreOffice.
El modelo, dibujado como una chispa de luz: sus rayos son las líneas que escribió al Hub y las que leyó de él; la hierba está tejida con las frases que se le dieron y con líneas de script.
Un friso: la chispa del modelo, las dos herramientas execute_script y get_state, y cinco miniaturas en una misma línea: una escena 3D para Blender, una chispa sobre un damero para GIMP, un paisaje pintado al anochecer para Krita, un dibujo de órbitas para Inkscape y una carta para LibreOffice.
Un modelo, dos herramientas, cinco aplicaciones: cada miniatura muestra lo que el Hub hizo en su aplicación.

Un script enviado, la respuesta del Hub

Este script dibuja un gráfico de tres barras en un documento de Inkscape. Un cliente lo envió en una sola llamada a execute_script, y el bloque de debajo es la respuesta del Hub. La demostración ofrece un cliente de 25 líneas y todos los pasos para repetir una ejecución como esta.

python · Script escrito
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)}))
Respuesta del Hub
{
  "app": "inkscape",
  "duration_ms": 151,
  "error": null,
  "result": {
    "bars": 3
  },
  "status": "ok",
  "stderr": "",
  "stdout": "",
  "truncated": false
}

Inkscape 1.4 lo ejecutó en el modo cli, sin ventana: el Hub inició un proceso de Python para el script y devolvió como result el valor que el script imprimió tras LMM_RESULT: .

Dos herramientas, un módulo por aplicación

Esto es LibreModular-MCP. El Hub es un único binario de Rust que da al modelo exactamente dos herramientas. execute_script ejecuta un script de Python completo en una aplicación y devuelve lo que el script imprimió, su result, o la traza de error propia de la aplicación. get_state devuelve lo que hay abierto en la aplicación. Un módulo del lado del Hub y un puente del lado de la aplicación llegan a GIMP, Krita, Blender, Inkscape y LibreOffice; el Hub en sí no conoce ninguna de sus interfaces.

Estas cinco aplicaciones son las probadas, no el alcance del Hub: una aplicación más se añade mediante un módulo, un puente y su guía, como describe CONTRIBUTING.md, y el código tiene licencia MIT.

El inicio rápido crea la configuración del Hub, Conectar su modelo lo declara en Claude Code o en opencode, y la instalación da el paquete para cada familia de Linux.

Adónde ir después

  • Demostración

    Un cliente de 25 líneas inicia el Hub, envía un script a Inkscape e imprime cada respuesta, sin cliente MCP y sin ventana.

  • Instalación

    Un comando por familia de Linux para instalar el Hub desde su paquete, el instalador de Windows, el nivel que alcanzó cada uno, su suma de comprobación y la construcción desde el código fuente.

  • Arquitectura

    El Hub, sus dos herramientas, un módulo y un puente por aplicación, los tres modos y un script medido frente a llamadas separadas.

  • Seguridad

    Lo que el Hub limita, los riesgos que quedan, lo que sale de la máquina y las mediciones repetidas para esta página.

  • Compatibilidad

    Para cada aplicación, la versión probada, el comando que la inició y lo que no se probó.

  • Aplicaciones

    Una receta real por aplicación: el texto dado a un modelo, su script, las respuestas del Hub y el archivo producido.