Saltar al contenido principal

Servidor MCP

El servidor MCP de Frihet implementa el Model Context Protocol para que asistentes de IA puedan interactuar directamente con tu ERP. Crear facturas, registrar gastos, consultar clientes o gestionar presupuestos — todo desde tu IDE o terminal, en lenguaje natural.

31 herramientas. 6 recursos. Compatible con los principales clientes MCP.

Tu:      "Crea una factura para TechStart SL, 40 horas de consultoria a 75 EUR/hora, vencimiento 1 marzo"
Claude: Hecho. Factura INV-2026-089 creada. Total: 3.000,00 EUR + 21% IVA = 3.630,00 EUR.

Requisitos

  • Cuenta de Frihet con acceso a la API (planes de pago)
  • API key generada desde el panel

Obtener la API key

  1. Inicia sesion en app.frihet.io
  2. Ve a Configuracion > API
  3. Pulsa Crear clave de API
  4. Copia la clave (empieza por fri_) — solo se muestra una vez

Instalacion

Hay dos modos de conexion: local (el servidor se ejecuta en tu maquina via npx) y remoto (conexion directa a mcp.frihet.io, sin instalar nada).

Local (stdio)

{
"mcpServers": {
"frihet": {
"command": "npx",
"args": ["-y", "@frihet/mcp-server"],
"env": {
"FRIHET_API_KEY": "fri_tu_clave_aqui"
}
}
}
}

Remoto (streamable-http)

{
"mcpServers": {
"frihet": {
"type": "streamable-http",
"url": "https://mcp.frihet.io/mcp",
"headers": {
"Authorization": "Bearer fri_tu_clave_aqui"
}
}
}
}

Configuracion por cliente

La estructura JSON es identica en todos los clientes. Solo cambia la ubicacion del fichero de configuracion.

ClienteFichero de configuracion
Claude Code~/.claude/mcp.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor.cursor/mcp.json o ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineConfiguracion de VS Code o .cline/mcp.json
Codex CLI~/.codex/config.toml (seccion MCP)
tip

Si usas Claude Code, puedes anadir el servidor con un solo comando:

claude mcp add frihet -- npx -y @frihet/mcp-server

Despues configura la variable FRIHET_API_KEY en el fichero ~/.claude/mcp.json resultante.

Variables de entorno

VariableRequeridaValor por defecto
FRIHET_API_KEYSi--
FRIHET_API_URLNohttps://api.frihet.io/v1

FRIHET_API_URL es util si apuntas a un entorno de staging o una instancia personalizada.


Herramientas disponibles (31)

El servidor expone 31 herramientas organizadas en 6 recursos. Cada herramienta es bilingue (EN/ES) para que funcione con asistentes en cualquier idioma.

Facturas (6 herramientas)

HerramientaDescripcionParametros clave
list_invoicesLista facturas con paginacionlimit, offset
get_invoiceObtiene una factura por IDid
create_invoiceCrea una factura con lineas de detalleclientName, items[] (description, quantity, unitPrice), status, dueDate, notes, taxRate
update_invoiceActualiza campos de una facturaid, y cualquier campo a modificar
delete_invoiceElimina una factura permanentementeid
search_invoicesBusca facturas por nombre de clienteclientName, limit, offset

Estados posibles de factura: draft, sent, paid, overdue, cancelled

Gastos (5 herramientas)

HerramientaDescripcionParametros clave
list_expensesLista gastos con paginacionlimit, offset
get_expenseObtiene un gasto por IDid
create_expenseRegistra un nuevo gastodescription, amount, category, date, vendor, taxDeductible
update_expenseModifica un gasto existenteid, y cualquier campo a modificar
delete_expenseElimina un gasto permanentementeid

Clientes (5 herramientas)

HerramientaDescripcionParametros clave
list_clientsLista todos los clienteslimit, offset
get_clientObtiene un cliente por IDid
create_clientRegistra un nuevo clientename, email, phone, taxId, address (street, city, postalCode, country)
update_clientActualiza datos de un clienteid, y cualquier campo a modificar
delete_clientElimina un cliente permanentementeid

Productos (5 herramientas)

HerramientaDescripcionParametros clave
list_productsLista productos y servicioslimit, offset
get_productObtiene un producto por IDid
create_productCrea un producto o servicioname, unitPrice, description, unit, taxRate, sku
update_productModifica un producto existenteid, y cualquier campo a modificar
delete_productElimina un producto permanentementeid

Presupuestos (5 herramientas)

HerramientaDescripcionParametros clave
list_quotesLista presupuestoslimit, offset
get_quoteObtiene un presupuesto por IDid
create_quoteCrea un presupuesto para un clienteclientName, items[] (description, quantity, unitPrice), validUntil, notes, status
update_quoteModifica un presupuestoid, y cualquier campo a modificar
delete_quoteElimina un presupuesto permanentementeid

Estados posibles de presupuesto: draft, sent, accepted, rejected, expired

Webhooks (5 herramientas)

HerramientaDescripcionParametros clave
list_webhooksLista webhooks configuradoslimit, offset
get_webhookObtiene configuracion de un webhookid
create_webhookRegistra un endpoint de webhookurl, events[], active, secret
update_webhookModifica un webhook existenteid, y cualquier campo a modificar
delete_webhookElimina un webhook permanentementeid

Ejemplos de uso

Estas son peticiones reales en lenguaje natural que el asistente traduce a llamadas de herramientas MCP.

Crear una factura

"Crea una factura para Acme SL con 10 horas de consultoria a 95 EUR/hora, vencimiento 15 de marzo"

El asistente llama a create_invoice con clientName: "Acme SL", una linea de detalle (10 x 95) y dueDate: "2026-03-15". Calcula el total automaticamente.

Registrar un gasto

"Registra un gasto de 59.99 EUR en Adobe Creative Cloud, categoria software, deducible"

Llama a create_expense con description, amount: 59.99, category: "software" y taxDeductible: true.

Consultar morosos

"Muestrame todas las facturas sin pagar"

Llama a list_invoices y filtra por status: "sent" o "overdue", mostrando las vencidas ordenadas por importe.

Dar de alta un cliente

"Nuevo cliente: Design Studio SL, NIF B87654321, email hola@designstudio.es, Madrid 28001"

Llama a create_client con nombre, NIF, email y direccion.

Configurar automatizacion

"Crea un webhook para notificar a https://mi-app.com/hook cuando se pague una factura"

Llama a create_webhook con url y events: ["invoice.paid"].


Transporte

El servidor MCP de Frihet soporta dos modos de transporte. Ambos exponen las mismas 31 herramientas.

Local (stdio)

El servidor se ejecuta como proceso local en tu maquina. La comunicacion entre el cliente MCP y el servidor usa entrada/salida estandar (stdin/stdout).

  • Requiere: Node.js instalado (se descarga automaticamente via npx)
  • Ventaja: Menor latencia, funciona sin conexion a internet (excepto para las llamadas a la API)
  • Caso de uso: Desarrollo diario, uso intensivo, entornos corporativos con restricciones de red

Remoto (streamable-http)

El servidor se ejecuta en Cloudflare Workers. Tu cliente MCP se conecta directamente a https://mcp.frihet.io/mcp via HTTP.

  • Requiere: Solo conexion a internet
  • Ventaja: Sin instalacion local, sin dependencias, funciona en cualquier dispositivo
  • Caso de uso: Configuracion rapida, equipos que prefieren no instalar paquetes, clientes que solo soportan transporte HTTP
info

Si tu cliente MCP no soporta streamable-http (algunos clientes antiguos solo soportan stdio), usa el modo local.


Manejo de errores

Rate limiting

La API permite 100 peticiones por minuto por clave. Si se excede el limite, el servidor devuelve un error 429 con el tiempo de espera en retryAfter.

El servidor MCP gestiona automaticamente el rate limiting con backoff exponencial: reintenta la peticion despues de esperar el tiempo indicado, sin intervencion del usuario.

Errores de autenticacion

CodigoCausaSolucion
401API key invalida, expirada o no proporcionadaVerifica que la clave en tu configuracion empieza por fri_ y no ha expirado
403La clave no tiene permisos para este recursoGenera una nueva clave con los permisos necesarios

Otros errores

CodigoDescripcion
400Parametros incorrectos o campos requeridos faltantes
404El recurso solicitado no existe
413El cuerpo de la peticion excede 1 MB
429Limite de peticiones excedido (se reintenta automaticamente)
500Error interno del servidor

Todos los errores devuelven un mensaje descriptivo bilingue (EN/ES) para que el asistente pueda comunicar el problema al usuario de forma clara.


Limites

ConceptoValor
Peticiones por minuto100 por API key
Resultados por pagina100 maximo (50 por defecto)
Cuerpo de peticion1 MB maximo
Payload de webhook100 KB maximo
Webhooks por cuenta20 maximo

Diferencia con la API REST

Servidor MCPAPI REST
Dirigido aAsistentes de IA (Claude, Cursor, Windsurf)Aplicaciones, scripts, integraciones
ComunicacionLenguaje natural a traves del cliente MCPHTTP/JSON directo
AutenticacionVariable de entorno en la config del clienteCabecera X-API-Key o Authorization: Bearer
FormatoTexto formateado para el asistenteJSON crudo
Rate limitingGestionado automaticamente (backoff exponencial)Manual (el consumidor debe implementar reintentos)
Caso de usoHablar con tu ERP desde el IDEConstruir integraciones programaticas

Internamente, el servidor MCP traduce cada llamada de herramienta en una peticion a la API REST. No duplica logica — es un puente stateless.


Desarrollo

Para contribuir o ejecutar el servidor en modo desarrollo:

git clone https://github.com/berthelius/frihet-mcp.git
cd frihet-mcp
npm install
npm run build

Ejecutar localmente:

FRIHET_API_KEY=fri_tu_clave node dist/index.js

Probar con el MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Recursos relacionados


Anterior: Webhooks | Siguiente: Skill para Claude Code