Hermes Agent con Frihet
El trabajo: operar tu ERP desde Hermes Agent, el agente de código abierto de Nous Research, con una barrera de confirmación humana antes de las acciones que no se pueden deshacer.
El plugin de Frihet está en el catálogo de plugins de Hermes. No duplica herramientas: las operaciones de datos pasan por el servidor MCP de Frihet (@frihet/mcp-server en local, o el endpoint remoto https://mcp.frihet.io/mcp). El plugin añade tres cosas:
- El comando
/frihetcon tres acciones:status,setupydoctor. - Un filtro
pre_tool_callque detecta las escrituras de Frihet que no se pueden deshacer y pide tu confirmación antes de ejecutarlas. - Una skill que enseña a Hermes cómo trabajar con Frihet: leer antes de escribir, crear en borrador y reutilizar la
Idempotency-Keyal reintentar.
1. Instala el plugin
hermes plugins search frihet
hermes plugins install frihet --enable
Hermes instala los plugins desactivados por defecto: --enable los activa en el mismo paso. Si ya lo instalaste sin esa opción, ejecuta hermes plugins enable frihet. Después reinicia Hermes o empieza un chat nuevo (/reset) para que cargue el plugin. El código es público: github.com/Frihet-io/hermes-frihet.
2. Conecta el servidor MCP
Genera una API key en app.frihet.io → Integraciones → pestaña API Keys (empieza por fri_) y añade el servidor en ~/.hermes/config.yaml.
Endpoint remoto con OAuth (inicio de sesión en el navegador):
mcp_servers:
frihet:
url: https://mcp.frihet.io/mcp
auth: oauth
oauth:
flow: browser
trust: untrusted
Endpoint remoto con API key (cabecera Authorization):
mcp_servers:
frihet:
url: https://mcp.frihet.io/mcp
headers:
Authorization: "Bearer ${FRIHET_API_KEY}"
trust: untrusted
Guarda FRIHET_API_KEY en ~/.hermes/.env. En un servidor remoto, auth solo admite el texto oauth (no un bloque anidado) y env solo vale para servidores locales: la clave va en headers. Si la conexión se queda en «Connecting…», Hermes no está enviando credenciales.
El bloque debe llamarse frihet: con otro nombre, el filtro de confirmación no se activa.
Servidor local con el paquete npm @frihet/mcp-server:
mcp_servers:
frihet:
command: npx
args: ["-y", "@frihet/mcp-server"]
env:
FRIHET_API_KEY: "${FRIHET_API_KEY}"
Para iniciar sesión con OAuth usa hermes mcp login frihet. /frihet setup no acepta claves, para que no queden en la transcripción del chat. Más detalles del servidor en la página del servidor MCP.
3. Comprueba la conexión
En cualquier chat de Hermes:
/frihet status # estado local, sin red
/frihet setup # guía de autenticación; no acepta credenciales
/frihet doctor # prueba en vivo del servidor MCP
Después pregúntale algo real:
Muéstrame mis facturas vencidas de los últimos 30 días
Confirmación antes de escrituras irreversibles
El filtro pre_tool_call revisa cada llamada a las operaciones de Frihet:
- Las lecturas pasan sin preguntar.
- Crear facturas, presupuestos, clientes, gastos o productos, y las operaciones irreversibles (enviar, marcar como pagada, registrar en VeriFactu, borrar, crear un cobro) piden tu aprobación antes de ejecutarse. Algunas consultas que contactan con servicios externos también la piden.
- Si el plugin no reconoce una operación, también pide confirmación.
Sin una persona que apruebe, esas operaciones no se ejecutan.
Con trust: untrusted en el bloque del servidor, como en los ejemplos, Hermes pide además aprobación para toda operación que no esté marcada como solo lectura. Las lecturas siguen sin preguntar.
Solución de problemas
/frihet doctor informa de cuatro estados por separado:
| Estado | Qué significa | Si falla |
|---|---|---|
endpoint_reachable | El servidor responde. | Revisa tu conexión y que el endpoint remoto sea accesible desde tu red. |
mcp_configured_in_hermes | Existe el bloque mcp_servers.frihet en ~/.hermes/config.yaml. | Añade el bloque del paso 2, con el nombre frihet. |
authenticated | El servidor aceptó tu credencial. Una respuesta anónima cuenta como alcanzable, no como autenticada. | Ejecuta hermes mcp login frihet, o comprueba la cabecera Authorization si usas API key. |
tools_available | La respuesta de inicialización es válida. | Vuelve a ejecutar /frihet doctor y revisa el endpoint. |
/frihet doctor envía una inicialización MCP sin credenciales a mcp.frihet.io y hace una lectura de facturas a través del cliente MCP de Hermes cuando concedes el permiso plugins.entries.frihet.mcp_allowlist. No contacta con ningún otro servicio.