Frihet MCP Server

El primer servidor MCP nativo de IA para un ERP español. Crea facturas, gestiona gastos, rastrea clientes, maneja productos, presupuestos y webhooks, todo mediante lenguaje natural con cualquier asistente de IA. 31 herramientas, bilingüe ES/EN.

Documentación

frihet-mcp

Servidor MCP nativo con IA para gestión empresarial.
Servidor MCP nativo con IA para gestión empresarial.

Funciona con Claude · ChatGPT · Cursor · Windsurf · Cline · Antigravity · Codex · Copilot · Gemini CLI — y cualquier cliente compatible con MCP.

npm version npm downloads Smithery installs MCP Registry Listed in GitHub MCP Registry license 156 canonical catalogue operations node >=20 TypeScript

Frihet MCP — talk to your ERP in natural language


Distribución

CanalEstadoInstalación
npmActivonpx @frihet/mcp-server
Endpoint remotoActivohttps://mcp.frihet.io/mcp (sin instalación, OAuth o clave API)
SmitheryActivosmithery.ai/servers/frihet/frihet-mcp
Registro MCPActivoregistry.modelcontextprotocol.io
Registro MCP de GitHubActivogithub.com/mcp/io.frihet/erp
GlamaActivoglama.ai/mcp/servers/Frihet-io/frihet-mcp
mcp.soAuto-indexado (sin verificar)mcp.so — indexa desde npm + GitHub
PulseMCPAuto-indexado (sin verificar)pulsemcp.com — indexa desde npm + GitHub
Cursor MarketplacePróximamentecursor.com/marketplace
ChatGPT AppsPróximamentechatgpt.com
Directorio de Anthropic ClaudePróximamenteclaude.ai/settings/connectors

Fuente de verdad: el catálogo contiene 156 operaciones canónicas. El perfil completo local sirve 161 nombres de herramientas, 11 recursos y 10 prompts (156 operaciones canónicas más 5 alias fiscales). El perfil agrupado alojado sirve 164 nombres de herramientas, 7 recursos y 10 prompts (los mismos nombres más 3 herramientas de descubrimiento, con recursos respaldados por API mantenidos solo en local). El perfil de OpenAI revisado por separado sirve 33 nombres de herramientas, 0 recursos y 0 prompts. La pertenencia al catálogo no es una garantía de que una API de respaldo esté habilitada para cada espacio de trabajo.


Qué es esto

Un servidor MCP que conecta tu asistente de IA a Frihet. Crea facturas hablando. Consulta gastos en lenguaje natural. Gestiona todo tu negocio desde tu IDE.

You:     "Create an invoice for TechStart SL, 40 hours of consulting at 75 EUR/hour, due March 1st"
Claude:  Done. Invoice INV-2026-089 created. Total: 3,000.00 EUR + 21% IVA = 3,630.00 EUR.

156 operaciones canónicas. Cinco alias fiscales. Diez prompts. El paquete local sirve 11 recursos; el Worker alojado sirve deliberadamente los 7 recursos estáticos, mientras que los recursos de espacio de trabajo respaldados por API permanecen solo en el perfil local.


Pruébalo al instante (sin registro)

Ponlo a prueba sin configuración — sin cuenta, sin clave API:

FRIHET_DEMO=1 npx -y @frihet/mcp-server

En modo demo, el servidor responde con ejemplos ficticios realistas (facturas españolas con IVA/IGIC, gastos, clientes, productos, una cuenta bancaria y más) — cada registro usa IDs con prefijo demo_ y el servidor imprime un banner de DEMO MODE al iniciar. No se persiste nada y nunca se realiza ninguna llamada de red. Las escrituras se simulan y las acciones fiscales (factura electrónica, VeriFactu, TicketBAI, FACe, nóminas) devuelven una simulación claramente etiquetada — nunca un envío real a ninguna autoridad tributaria.

Cuando estés listo para tus datos reales, elimina la bandera y añade tu clave (app.frihet.io → Configuración → Claves API). Consulta Instalación a continuación.


Para agentes de IA

Si eres un agente leyendo este repositorio en lugar de una persona leyendo una página, todo lo que necesitas es legible por máquina y se genera desde el servidor en ejecución — no tienes que analizar este README.

QuéDónde
Contrato de incorporación: guía rápida por cliente, autenticación, flujo de trabajo seguro, listas de herramientas con autoridad humana, recuperación de erroresdocs/agent-onboarding.json — también incluido dentro del paquete npm
Verdad de capacidad por herramienta: callability, writesFrihet, externalInteraction, externalSideEffects_meta["io.frihet/capability"] en cada entrada de tools/list
Cómo comportarse una vez conectadola cadena instructions devuelta por initialize — tu cliente te la entrega automáticamente

Tres reglas que el contrato codifica, en resumen:

  1. Orientarse antes de actuar. get_business_context y el recurso frihet://tax/rates deciden el tratamiento fiscal correcto. No recuerdes una tasa impositiva española de memoria.
  2. Redactar, mostrar, detenerse. create_invoice, create_quote y create_credit_note tienen como valor predeterminado status=draft — sin número fiscal, sin hash, nada enviado a una autoridad tributaria. Presenta el borrador y devuelve el control.
  3. La autoridad humana no es tuya para asumir. Cualquier herramienta con un externalSideEffects no vacío llega a la bandeja de entrada de un cliente, un webhook, dinero o AEAT / VeriFactu / TicketBAI / FACe. Varias también aceptan confirm=true; esa bandera registra una decisión humana — nunca la establezcas para satisfacer tu propio plan.

docs/agent-onboarding.json se regenera desde la superficie en vivo mediante npm run generate:agent-onboarding y se controla en CI mediante npm run gate:agent-onboarding, por lo que sus listas de herramientas y recuentos no pueden desviarse del servidor.


Instalación

Una línea (Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI y más)

npx skills add Frihet-io/frihet-mcp

Plugin de Claude Code (skill + servidor MCP en una sola instalación)

Este repositorio también es un plugin de Claude Code (frihet-erp): instalarlo conecta tanto la skill de gestión empresarial como el servidor MCP.

# Try it locally
claude --plugin-dir /path/to/frihet-mcp

La disponibilidad en el marketplace está pendiente. Usa el comando de plugin local anterior o el comando MCP de Claude Code a continuación para conectarte hoy.

Invocación de la skill: /frihet-erp:frihet-mcp. El .mcp.json incluido lanza @frihet/mcp-server mediante npx — establece FRIHET_API_KEY en tu entorno (consíguela en app.frihet.io → Configuración → Claves API).

La vista previa del plugin portable de Claude incluye skills reales de cuentas por cobrar, redacción de documentos y revisión mensual con el MCP remoto público existente. Carga plugins/claude/frihet-erp en Claude Code o sube un ZIP de esa carpeta en el chat/Cowork. Sus skills guían el comportamiento; no filtran el catálogo alojado ni establecen la aprobación del Directorio. La configuración MCP local raíz anterior mantiene su configuración de clave API existente.

Claude Code — un comando

claude mcp add frihet -s user -e FRIHET_API_KEY=fri_your_key_here -- npx -y @frihet/mcp-server
claude mcp list          # verify: frihet ✓ Connected

La CLI es dueña del archivo de configuración, por lo que no hay nada que editar manualmente ni rutas que puedan fallar. (El ámbito de usuario escribe ~/.claude.json, no ~/.claude/mcp.json).

Codex CLI — un comando

codex mcp add frihet --env FRIHET_API_KEY=fri_your_key_here -- npx -y @frihet/mcp-server
codex mcp list           # verify

La configuración de Codex es TOML, no JSON. codex mcp add escribe:

[mcp_servers.frihet]
command = "npx"
args = ["-y", "@frihet/mcp-server"]

[mcp_servers.frihet.env]
FRIHET_API_KEY = "fri_your_key_here"

Pegar un bloque JSON mcpServers en ~/.codex/config.toml es un error de análisis TOML que derriba toda tu configuración de Codex, no solo este servidor. Usa el comando anterior.

Claude Desktop, Cursor, Windsurf, Cline — configuración JSON

{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["-y", "@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_your_key_here"
      }
    }
  }
}
HerramientaArchivo de configuración
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Cursor.cursor/mcp.json o ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineConfiguración de VS Code o .cline/mcp.json

El JSON anterior es idéntico para estos cuatro clientes; solo cambia la ruta del archivo. Claude Code y Codex no están en esta tabla — gestionan su propia configuración mediante los comandos CLI mostrados anteriormente.

Remoto (sin instalación)

Usa el endpoint alojado en mcp.frihet.io — cero dependencias locales, se ejecuta en Cloudflare Workers.

Con clave API:

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

Con OAuth 2.0 + PKCE (inicio de sesión basado en navegador, sin necesidad de clave API):

Los clientes que admiten OAuth (Claude Desktop, Smithery, etc.) pueden conectarse directamente a https://mcp.frihet.io/mcp y autenticarse mediante el navegador. El servidor implementa el flujo completo de código de autorización OAuth 2.1 con PKCE.

Obtén tu clave API

  1. Inicia sesión en app.frihet.io
  2. Ve a Configuración > API
  3. Haz clic en Crear clave API
  4. Copia la clave (empieza con fri_) — solo se muestra una vez

Lo que puedes hacer

Habla con tu ERP. Estos son prompts reales, no texto de marketing.

Facturación

"Show me all unpaid invoices"
"Create an invoice for Acme SL with 10h of consulting at 95/hour"
"Mark invoice abc123 as paid"
"How much has ClientName been invoiced this year?"

Gastos

"Log a 59.99 EUR expense for Adobe Creative Cloud, category: software, tax-deductible"
"List all expenses from January"
"What did I spend on travel last quarter?"

Clientes

"Add a new client: TechStart SL, NIF B12345678, email admin@techstart.es"
"Show me all my clients"
"Update ClientName's address to Calle Mayor 1, Madrid 28001"

CRM

"Add a contact to Acme SL: Ana Garcia, CTO, ana@acme.es"
"Log a call with TechStart: discussed Q2 proposal, they're interested in upgrade"
"Add a note to ClientName: prefers invoices in English, payment NET 30"
"Show me all activities for Acme SL"

Presupuestos

"Create a quote for Design Studio: logo design (2000 EUR) + brand guidelines (3500 EUR)"
"Show me all pending quotes"

Webhooks

"Set up a webhook to notify https://my-app.com/hook when invoices are paid"
"List all my active webhooks"

Qué esperar

Este MCP es una interfaz de datos estructurada — describes lo que quieres en lenguaje natural y la IA crea, consulta o modifica registros comerciales en Frihet. La mayoría de las 156 operaciones canónicas son operaciones CRUD sobre la API REST; el resto son resúmenes de solo lectura y acciones fiscales/de factura electrónica. Los nombres de alias y descubrimiento se cuentan por separado.

Funciona muy bien:

"Create an invoice for TechStart SL, 40h consulting at 75 EUR/h"   --> creates the invoice
"Show unpaid invoices over 1,000 EUR"                               --> queries and filters
"Log a 120 EUR expense for the Madrid train, category: travel"      --> records the expense
"Update client Acme's email to billing@acme.es"                     --> modifies the record

No hace:

  • OCR o escaneo de PDF — no puedes subir una imagen de factura y hacer que la lea
  • Carga de archivos o gestión de adjuntos
  • Procesamiento de imágenes de ningún tipo

Si necesitas digitalizar facturas o recibos en papel, extrae los datos primero (por ejemplo, Claude Vision API, un servicio OCR dedicado o entrada manual), y luego usa el MCP para crear el registro:

1. Scan/photograph the invoice
2. Use Claude Vision: "Read this invoice image and extract the vendor, items, amounts, and dates"
3. Then: "Create an expense in Frihet for [extracted data]"

Operaciones del catálogo (156)

Facturas (12)

HerramientaQué hace
list_invoicesLista facturas con paginación
get_invoiceObtiene detalles completos de una factura por ID
create_invoiceCrea una nueva factura con líneas de detalle
update_invoiceActualiza cualquier campo de una factura
delete_invoiceElimina una factura borrador; una enviada/pagada se cancela, no se destruye (se requiere confirm=true)
search_invoicesBusca facturas por nombre de cliente, fecha o estado
send_invoiceEnvía factura por correo al cliente (adjunto PDF) — llega a un tercero, se requiere confirm=true
mark_invoice_paidMarca una factura como pagada con fecha de pago opcional
get_invoice_pdfObtiene bytes de PDF de factura limitados como base64
get_invoice_einvoiceObtiene bytes de XML o PDF Factur-X limitados para una factura
create_credit_noteCrea una nota de crédito vinculada a una factura existente
apply_late_feeAplica un recargo por mora a una factura vencida

Gastos (5)

HerramientaQué hace
list_expensesLista gastos con paginación
get_expenseObtiene detalles de un gasto
create_expenseRegistra un nuevo gasto
update_expenseModifica un gasto
delete_expenseElimina un gasto

Clientes (5)

HerramientaQué hace
list_clientsLista todos los clientes
get_clientObtiene detalles de un cliente
create_clientRegistra un nuevo cliente
update_clientActualiza información de un cliente
delete_clientElimina un cliente

CRM: Contactos (3)

HerramientaQué hace
list_client_contactsLista todos los contactos de un cliente
create_client_contactAñade una persona de contacto a un cliente
delete_client_contactElimina un contacto de un cliente

CRM: Actividades (2)

HerramientaQué hace
list_client_activitiesLista actividades de CRM (llamadas, correos, reuniones, tareas)
log_client_activityRegistra una llamada, correo, reunión o tarea contra un cliente

CRM: Notas (3)

HerramientaQué hace
list_client_notesLista todas las notas de un cliente
create_client_noteAñade una nota de formato libre a un cliente
delete_client_noteElimina una nota de un cliente

Productos (5)

HerramientaQué hace
list_productsListar productos y servicios
get_productObtener detalles de un producto
create_productAñadir un producto o servicio
update_productActualizar precios o detalles
delete_productEliminar un producto

Presupuestos (6)

HerramientaQué hace
list_quotesListar todos los presupuestos
get_quoteObtener detalles de un presupuesto
create_quoteRedactar un nuevo presupuesto
update_quoteModificar un presupuesto
delete_quoteEliminar solo un borrador limpio sin entrega, respuesta, adjunto o evidencia de conversión; rechazar borradores protegidos; cancelar no-borradores (confirm=true requerido)
send_quoteEnviar presupuesto por correo al cliente para su aceptación

Webhooks (6)

HerramientaQué hace
list_webhooksListar webhooks configurados
get_webhookObtener detalles de un webhook
create_webhookRegistrar un nuevo endpoint de webhook
update_webhookModificar eventos o URL
delete_webhookEliminar un webhook
test_webhookEnviar un payload de prueba a un endpoint de webhook configurado

Inteligencia (4)

HerramientaQué hace
get_business_contextInstantánea completa: perfil, plan, actividad reciente, principales clientes, mes actual
get_monthly_summaryP&L mensual: ingresos, gastos, beneficio, obligación fiscal, principales clientes por ingresos
get_quarterly_taxesPreparación fiscal trimestral: campos del Modelo 303/130, repercutido vs. deducible, obligación
duplicate_invoiceClonar una factura para facturación recurrente (copia elementos/cliente/impuestos, comienza como borrador)

Facturación Electrónica (10)

HerramientaQué hace
send_einvoiceEnviar una factura en 11 formatos (XRechnung, Factur-X, FatturaPA, PEPPOL, Facturae, UBL, CII) por correo / Chorus Pro / SDI / PEPPOL / descarga
get_einvoice_statusConsultar el estado de ejecución del flujo de trabajo Hatchet hasta que tenga éxito o falle — devuelve ackId, URL XML, URL PDF/A-3
validate_einvoice_xmlValidar XML sin procesar contra el esquema del formato + reglas schematron (KOSIT / Mustang / XSD / Schematron)
export_datevExportar datos contables como DATEV EXTF (Buchungsstapel / Debitoren / Kreditoren) en codificación CP1252
einvoice_exportExportar datos de factura electrónica en formatos legibles por máquina (JSON/XML) para archivo o integración
face_submitEnviar factura a FACe (plataforma española de facturación electrónica B2G)
face_statusConsultar el estado de envío en FACe para una factura enviada
ticketbai_submitEnviar registro fiscal TicketBAI a la autoridad tributaria del País Vasco (Hacienda)
ticketbai_statusConsultar el estado de envío de TicketBAI desde la autoridad tributaria vasca
ksef_submitNOT_DEPLOYED — Enviar factura a KSeF (Polonia) — stub: el transporte está listo a nivel de infraestructura en Frihet-ERP pero aún no se expone como endpoint en vivo (producción condicionada al certificado KSeF); devuelve un error etiquetado como "no disponible" hasta que se active

Seguimiento de Tiempo (6)

HerramientaQué hace
list_time_entriesListar entradas de tiempo con filtro por usuario, proyecto, rango de fechas, estado facturable
get_time_entryObtener detalles completos de una entrada de tiempo por ID
create_time_entryRegistrar horas para un proyecto (marca facturable, descripción, fecha)
update_time_entryActualizar cualquier campo en una entrada de tiempo existente (semántica PATCH)
delete_time_entryEliminación suave de una entrada de tiempo (confirm=true requerido)
get_time_summaryAgregar total de horas facturables/no facturables para un período, con groupBy opcional (usuario/proyecto/día)

Facturas Recurrentes (8)

HerramientaQué hace
list_recurring_invoicesListar todas las plantillas de facturas recurrentes (filtrar por activas/pausadas)
get_recurring_invoiceObtener detalles completos de una plantilla recurrente por ID
create_recurring_invoiceCrear una nueva plantilla de factura recurrente (diaria/semanal/mensual/trimestral/anual)
update_recurring_invoiceActualizar campos de la plantilla — solo afecta a futuras facturas generadas
pause_recurring_invoicePausar una plantilla activa — no se generan facturas mientras esté pausada
resume_recurring_invoiceReanudar una plantilla pausada — siguiente factura en el próximo ciclo programado
delete_recurring_invoiceEliminar permanentemente una plantilla (confirm=true requerido)
run_recurring_nowGenerar la siguiente factura recurrente con confirm=true explícito en modos completo y agrupado; la configuración del espacio de trabajo puede activar emisión fiscal, envío y webhooks

Gestión de Equipo (4)

HerramientaQué hace
list_team_membersListar miembros activos + invitaciones pendientes (propietario excluido)
invite_team_memberInvitar a un nuevo miembro por correo con rol (admin/editor/contable/visor)
update_team_member_roleCambiar el rol de un miembro existente (admin/editor/contable/visor)
remove_team_memberEliminar un miembro del espacio de trabajo (confirm=true requerido)

Gestoría — Contables (5)

HerramientaQué hace
gestoria_message_sendEnviar un mensaje en un hilo contextual (documentRequest / filingItem / obligation)
gestoria_messages_listListar mensajes en un hilo, más recientes primero; paginar hacia atrás con before
gestoria_template_createCrear una plantilla de solicitud de documento reutilizable con variables + desplazamiento de fecha de vencimiento
gestoria_template_bulk_sendEnvío masivo de una plantilla a hasta 500 espacios de trabajo de clientes en una sola llamada
gestoria_aging_consolidatedInforme de antigüedad de cuentas por cobrar entre clientes (tramos, desglose por espacio de trabajo, principales vencidos)

Auditoría de Libro Mayor (3)

HerramientaQué hace
frihet_gl_entry_approveAprobar un asiento de diario del libro mayor (solo gestor/admin — ÁREA DE CONFIANZA)
frihet_gl_entry_rejectRechazar un asiento del libro mayor con motivo obligatorio (ÁREA DE CONFIANZA)
frihet_gl_entry_audit_logRecuperar el historial de auditoría completo de un asiento del libro mayor

Dominio del Portal de Marca Blanca (3)

HerramientaQué hace
frihet_portal_domain_addAñadir un dominio personalizado al portal del cliente (devuelve registros DNS CNAME)
frihet_portal_domain_verifyVerificar la propagación DNS para un dominio de portal personalizado
frihet_portal_domain_removeEliminar un dominio de portal personalizado (revierte al subdominio Frihet predeterminado)

Autoincorporación y VIES (2)

HerramientaQué hace
frihet_portal_onboard_link_generateGenerar un enlace de autoincorporación con límite de tiempo para un cliente potencial
frihet_tax_id_vies_lookupValidar un número de IVA de la UE (CIF intracomunitario) a través de VIES

IGIC — Impuesto Indirecto de Canarias (4)

HerramientaQué hace
frihet_modelo_415_summaryM415 operaciones anuales >3.005 € (equivalente canario del M347) — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_425_summaryM425 resumen anual de IGIC para empresas canarias — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_418_summaryM418 declaración mensual individual de IGIC, régimen especial del grupo de entidades — no desplegado, devuelve NOT_DEPLOYED
frihet_aiem_calculateCálculo de AIEM (Arbitrio sobre Importaciones) para Canarias — no desplegado, devuelve NOT_DEPLOYED

Impuesto sobre Sociedades (2)

HerramientaQué hace
frihet_modelo_200_summaryModelo 200 declaración anual del IS — no desplegado, devuelve NOT_DEPLOYED
frihet_modelo_202_summaryModelo 202 pagos fraccionados (1P/2P/3P) — no desplegado, devuelve NOT_DEPLOYED

Reglas de Categorización Bancaria (2)

HerramientaQué hace
frihet_bank_rules_listListar todas las reglas de categorización automática bancaria (condiciones + acciones + estado)
frihet_bank_rule_createCrear una nueva regla para categorizar automáticamente transacciones por descripción, importe, contraparte

Depósitos (7)

HerramientaQué hace
list_depositsListar depósitos con paginación
get_depositObtener detalles de un depósito por ID
create_depositRegistrar un nuevo depósito de cliente
update_depositActualizar campos de un depósito
delete_depositEliminar un depósito (confirm=true requerido)
apply_depositAplicar un saldo de depósito contra una factura
refund_depositRegistrar un reembolso de depósito en la contabilidad de Frihet con confirm=true; amount opcional registra esa parte, la omisión registra el saldo reembolsable restante. No transfiere dinero

Proveedores (5)

HerramientaQué hace
list_vendorsListar todos los proveedores
get_vendorObtener detalles de un proveedor
create_vendorAñadir un nuevo proveedor
update_vendorActualizar información de un proveedor
delete_vendorEliminar un proveedor

Banca (5)

HerramientaQué hace
list_bank_accountsListar cuentas bancarias conectadas
get_bank_accountObtener detalles de una cuenta bancaria
list_transactionsListar transacciones bancarias con filtros
categorize_transactionAsignar una categoría y tipo de gasto/ingreso a una transacción
match_transaction_to_invoiceVincular una transacción bancaria a una factura existente

Fiscal — Modelos Tributarios Españoles (7)

HerramientaQué hace
get_modelo_303_summaryDeclaración trimestral de IVA (Modelo 303) — repercutido vs. deducible, neto a pagar
get_modelo_130_summaryPago fraccionado trimestral de IRPF para autónomos (Modelo 130)
get_modelo_390_summaryResumen anual de IVA (Modelo 390)
get_modelo_180_summaryResumen anual de retenciones de alquileres (Modelo 180) — no desplegado, devuelve NOT_DEPLOYED
get_modelo_347_summaryTransacciones anuales con terceros >3.005 € (Modelo 347)
verifactu_statusObtener estado de envío de VeriFactu para un registro fiscal
verifactu_resubmitReenviar un registro fiscal VeriFactu rechazado
ticketbai_statusConsultar estado de envío de TicketBAI — referencia cruzada de Facturación Electrónica (10); NO se cuenta en los 7 de esta sección

Alquileres Vacacionales / Estancias (5)

HerramientaQué hace
list_reservationsListar reservas de alquiler con filtros
get_reservationObtener detalles de una reserva
create_reservationCrear una nueva reserva
list_propertiesListar todas las propiedades de alquiler
sync_channelActivar sincronización de canal OTA (Airbnb, Booking.com, etc.)

TPV — Punto de Venta (4)

HerramientaQué hace
list_terminalsListar terminales TPV registrados
get_saleObtener detalles de una transacción de venta TPV
list_salesListar ventas TPV con paginación
refund_saleEmitir un reembolso para una venta TPV

Cocina / Restaurante (6)

HerramientaQué hace
list_kitchen_ticketsListar tickets de pedido de cocina para el panel en vivo, filtrados por estado o estación
get_kitchen_ticketObtener un ticket de cocina por ID con todos sus elementos y sus estados individuales
update_kitchen_ticketAvanzar el estado de un ticket (en cola → preparando → listo → servido) o reasignarlo a otra estación
list_kitchen_stationsListar todas las estaciones de cocina con id, nombre y estado activo
list_menu_itemsListar el catálogo del menú de cocina con búsqueda de texto libre y filtro activo/inactivo
kitchen_flow_summaryDetección de estación lenta: agregar tickets abiertos por estación y marcar el cuello de botella

RRHH — Recursos Humanos (9)

HerramientaQué hace
leave_request_createCrear una solicitud de ausencia (vacaciones, enfermedad, personal)
leave_approveAprobar una solicitud de ausencia pendiente
leave_rejectRechazar una solicitud de ausencia con un motivo
leave_cancelCancelar una solicitud de ausencia aprobada o pendiente
leave_listListar solicitudes de ausencia con filtros (usuario, estado, rango de fechas)
attendance_clock_inRegistrar entrada (fichaje) de un empleado
attendance_clock_outRegistrar salida (fichaje) de un empleado
overtime_reportLeer horas extra diarias/semanales, agregar minutos/horas y alertas de cumplimiento calculadas sobre los registros YYYY o YYYY-MM seleccionados
anomaly_listListar anomalías de asistencia (fichajes faltantes, horas extra excesivas)

Nóminas (2)

HerramientaQué hace
payroll_exportLee datos de empleados normalizados listos para nómina; el valor de formato es una etiqueta de destino reflejada, no un archivo generado
payroll_checklistLista empleados pagables con estado de preparación para nómina, campos faltantes y estado de revisión mensual

Incorporación — retirada mediante #124

Las herramientas onboarding_status y onboarding_persona_set fueron retiradas porque la familia /v1/onboarding/* de Frihet-ERP no existe en esta versión. Consulta el issue #124 para la auditoría y el precedente (src/tools/igic.ts muestra el patrón de stub en línea NOT_DEPLOYED utilizado para familias cuya API subyacente aún no se ha publicado; la incorporación optó por la retirada completa, porque el catálogo no debería prometer herramientas que no tienen un controlador activo).

Si una futura versión de Frihet-ERP publica la familia, restaura src/tools/onboarding.ts, los esquemas onboardingStatusOutput / onboardingPersonaResultOutput en src/tools/shared.ts, los métodos getOnboardingStatus / setOnboardingPersona en IFrihetClient y el registro en src/tools/register-all.ts (la prueba Onboarding tools — withdrawn via #124 en src/__tests__/d4b-hr-payroll-onboarding-tools.test.ts es la puerta que fallará y recordará al próximo mantenedor qué había aquí).

Permisos (2)

HerramientaQué hace
permissions_matrixObtiene la instantánea documentada del modelo RBAC (no es una garantía de autorización en tiempo de ejecución)
permissions_meCompara los campos del modelo RBAC con los alcances reales de las claves API y denegaciones de alcance conocidas (no exhaustivo)

Cierre de período (3)

HerramientaQué hace
period_close_statusObtiene el rango del año fiscal YYYY actual o seleccionado, estado abierto/cerrado y detalles de cierre anulables
period_closeCierra un período contable (solo gestor/admin — ÁREA DE CONFIANZA)
period_reopenReabre un período cerrado con un motivo obligatorio (ÁREA DE CONFIANZA)

Todas las operaciones canónicas (y sus alias) devuelven salida estructurada mediante outputSchema — JSON tipado, no texto sin formato. Las formas de respuesta de listas siguen su familia de API; no todos los endpoints de listas están paginados.

Verdad de capacidad y efectos secundarios

En todas las superficies MCP, cada entrada de tools/list incluye _meta["io.frihet/capability"]:

  • registered significa que el nombre y el controlador existen en esta compilación del servidor;
  • callability es api_dependent (el controlador llama a la API; el despliegue, la habilitación del espacio de trabajo y la autorización aún deciden), runtime_checked (el controlador distingue explícitamente un backend ausente de datos vacíos), deferred, unavailable o local — nunca una afirmación incondicional de "disponible";
  • writesFrihet, externalInteraction y externalSideEffects distinguen cambios de estado y llamadas a entidades/proveedores externos;
  • Las anotaciones de acción MCP siguen siendo la fuente estándar para sugerencias de solo lectura, destructivas, idempotentes y de mundo abierto.

El host de ChatGPT/OpenAI es una superficie revisada por separado: exactamente 33 operaciones de negocio con descripciones completas, 0 herramientas de meta-descubrimiento, 0 prompts y 0 recursos. Sus 17 lecturas y 16 escrituras son deliberadamente limitadas, y todas las escrituras requieren confirm=true literal. Diez escrituras pueden entregar eventos comerciales completos a endpoints activos previamente configurados por el propietario del espacio de trabajo; la administración de webhooks en sí permanece excluida. La entrega directa de correo electrónico, el resumen mensual heredado, los PDF de facturas sin procesar, las transiciones del ciclo de vida de facturas, la actualización de una cotización existente, la presentación regulada, la eliminación de registros de clientes principales, la eliminación de gastos con sus archivos vinculados, la eliminación de productos y la eliminación de proveedores también están excluidas. Esta superficie no debe inferirse del catálogo completo.


Recursos

Contexto que la IA puede leer para tomar decisiones más inteligentes.

El paquete local sirve 11 recursos: 7 referencias estáticas más 4 recursos de espacio de trabajo respaldados por API. El Worker alojado sirve los 7 recursos estáticos. El host revisado por OpenAI sirve 0 recursos.

Estáticos (datos de referencia, sin llamadas API):

RecursoURIQué proporciona
Esquema APIfrihet://api/schemaResumen OpenAPI: endpoints, autenticación, límites de velocidad, paginación, códigos de error
Tipos impositivosfrihet://tax/ratesTipos impositivos por zona fiscal española: IVA, IGIC, IPSI, inversión del sujeto pasivo UE, IRPF
Calendario fiscalfrihet://tax/calendarPlazos de presentación trimestrales y anuales para los modelos fiscales españoles enumerados
Categorías de gastosfrihet://config/expense-categories8 categorías con reglas de deducibilidad, tratamiento de IVA, amortización
Estados de facturasfrihet://config/invoice-statusesFlujo de estados (borrador > enviada > pagada/vencida > cancelada), reglas de transición, eventos de webhook
Monedasfrihet://config/currencies40 monedas compatibles con códigos ISO, símbolos, decimales, formato de configuración regional
Paísesfrihet://config/countries61 países compatibles con zonas fiscales, tipos impositivos predeterminados, monedas, prefijos de factura

Dinámicos (datos en vivo de tu cuenta):

RecursoURIQué proporciona
Perfil de negociofrihet://business-profileTu información de negocio, plan, valores predeterminados, actividad reciente, clientes principales
Instantánea mensualfrihet://monthly-snapshotP&L del mes actual, ingresos, gastos, obligación tributaria
Facturas vencidasfrihet://overdue-invoicesTodas las facturas con fecha de vencimiento pasada (hasta 100)
Límites del planfrihet://status/plan-limitsNivel de plan en vivo, contadores de uso, facturas/mes, límites de velocidad de API

Prompts (10)

Flujos de trabajo preconstruidos que la IA puede ejecutar como operaciones guiadas de varios pasos.

PromptQué haceArgumentos
monthly-closeCerrar el mes: revisar facturas impagadas, categorizar gastos, verificar obligaciones fiscales, generar resumenmonth? (AAAA-MM)
onboard-clientConfigurar un nuevo cliente con tipos impositivos correctos según ubicación, opcionalmente crear una cotización de bienvenidaclientName, country?, region?
quarterly-tax-prepPreparar la presentación fiscal trimestral: calcular IVA/IGIC, identificar deducibles, previsualizar Modelo 303/130/420quarter?, fiscalZone?
overdue-followupEncontrar facturas vencidas, redactar mensajes de seguimiento, sugerir recordatorios de pago--
new-client-invoiceCrear un cliente + primera factura en un solo flujo de trabajo con búsqueda de tipo impositivoclientName, country?
expense-reportGenerar informe de gastos agrupado por categoría con totales deduciblesmonth? (AAAA-MM)
year-end-closeCierre anual completo: revisión trimestral, facturas pendientes, gastos sin categorizar, lista de verificación de fin de añoyear (AAAA)
cash-flow-forecastProyectar flujo de caja para los próximos meses: ingresos recurrentes, gastos, cuentas por cobrar vencidas, plazos fiscalesmonths? (predeterminado: 3)
invoice-aging-reviewAnálisis de antigüedad de cuentas por cobrar: agrupar facturas impagadas por tramo (0-30/31-60/61-90/90+ días), principales deudores, acciones de cobro--
expense-batchProcesar gastos en lote: categorizar, aplicar tipos impositivos, marcar recibos faltantesfiscalZone?

Cómo funciona

graph LR
    AI["Your AI assistant"]
    MCP["frihet-mcp"]
    API["api.frihet.io"]
    DB["Frihet ERP"]

    AI -- "create_invoice()" --> MCP
    MCP -- "POST /v1/invoices" --> API
    API --> DB
    DB -- "201 + invoice data" --> API
    API -- "structured JSON" --> MCP
    MCP -- "typed response + suggestions" --> AI

    style AI fill:#09090b,stroke:#4ade80,color:#fafafa
    style MCP fill:#09090b,stroke:#fafafa,color:#fafafa
    style API fill:#09090b,stroke:#3f3f46,color:#a1a1aa
    style DB fill:#09090b,stroke:#3f3f46,color:#a1a1aa

El servidor traduce las llamadas de herramientas en solicitudes REST API. Maneja autenticación, límites de velocidad (reintento automático con retroceso en 429), paginación y mapeo de errores.

Dos transportes:

  • stdio (local) -- npx @frihet/mcp-server con FRIHET_API_KEY
  • HTTP Streamable (remoto) -- https://mcp.frihet.io/mcp con token Bearer u OAuth 2.0+PKCE

Variables de entorno

VariableRequeridaPredeterminado
FRIHET_API_KEYSí (stdio)--
FRIHET_API_URLNohttps://api.frihet.io/v1
FRIHET_TOOL_MODENofull
FRIHET_CLAUDE_MODENo (candidato local no publicado)false

El candidato Claude solo de código fuente requiere compilar este checkout y ejecutar dist/index.js; no se afirma que las versiones npm existentes admitan la bandera. Consulta alcance del candidato, exclusiones y verificaciones. No se puede combinar con FRIHET_OPENAI_MODE=true y no está habilitado en el Worker desplegado.


Exposición de herramientas: profundidad servida bajo demanda

El diferenciador de Frihet es la profundidad — cobertura fiscal completa ES/UE más cumplimiento nativo (VeriFactu, TicketBAI, Facturae/FACe; infraestructura KSeF Polonia lista, activación pendiente), banca, CRM, RRHH/nómina, estancia/PMS y POS. Pero una lista plana de cada herramienta, cargada en el contexto de un agente de antemano, es el problema de pudrición de contexto de 2026: desplaza la tarea y degrada la selección de herramientas antes de que comience cualquier trabajo.

FRIHET_TOOL_MODE te permite elegir cómo se expone esa profundidad.

ModoComportamiento
full (predeterminado)Las herramientas canónicas y los alias fiscales se exponen con descripciones y esquemas completos. Los descriptores públicos añaden verdad conservadora de capacidad y efectos secundarios; los nombres de operación, esquemas y controladores no cambian.
groupedDivulgación progresiva. La descripción de cada herramienta se reduce a un [group] summary — full schema via describe_tool('name') de una línea, y se añaden tres herramientas de descubrimiento ligeras. El agente carga profundidad solo para las herramientas que realmente necesita.

En el modo grouped, los nombres de operación, esquemas de entrada y controladores no cambian. Los descriptores también exponen la misma verdad conservadora de capacidad y acción que el perfil completo. El descubrimiento fluye a través de tres meta-herramientas:

  • list_tool_groups() — el mapa de dominio (facturación, gastos, fiscal/cumplimiento, banca, CRM, RRHH/nómina, estancia/PMS, POS, inteligencia, productos, plataforma) con una descripción de una línea y recuento de herramientas para cada uno.
  • search_tools(query) — búsqueda de texto libre en nombre de herramienta, título, resumen y grupo; devuelve herramientas coincidentes con su grupo, resumen, bandera de solo lectura y campos de entrada. Filtro opcional group y limit.
  • describe_tool(name) — la descripción original completa y los campos de entrada para una herramienta, bajo demanda, antes de llamarla.
// claude_desktop_config.json — opt in to grouped mode
{
  "mcpServers": {
    "frihet": {
      "command": "npx",
      "args": ["@frihet/mcp-server"],
      "env": {
        "FRIHET_API_KEY": "fri_...",
        "FRIHET_TOOL_MODE": "grouped"
      }
    }
  }
}

La exposición agrupada cambia la densidad de descripción, no el comportamiento de la operación. El perfil versionado revisado por OpenAI se compone por separado y permanece con acceso independiente.


Límites de API

LímiteValor
Solicitudes por minuto100 por clave API
Resultados por página100 máx. (50 predeterminado)
Cuerpo de solicitud1 MB máx.
Carga útil de webhook100 KB máx.
Webhooks por cuenta20 máx.

El límite de velocidad se maneja automáticamente con retroceso exponencial.


Habilidad de Claude Code

Más allá de las herramientas MCP sin procesar, este repositorio incluye una habilidad de Claude Code que añade contexto de negocio: reglas fiscales españolas, recetas de flujo de trabajo, informes financieros y comandos en lenguaje natural.

Instalar la habilidad

git clone https://github.com/Frihet-io/frihet-mcp.git
ln -s "$(pwd)/frihet-mcp/skills/frihet-mcp" ~/.claude/skills/frihet-mcp

O con el instalador universal:

npx skills add Frihet-io/frihet-mcp

La habilidad enruta solicitudes a las herramientas MCP de Frihet (facturas, cotizaciones, gastos, clientes, revisión mensual) y le dice al agente cuándo pedir confirmación antes de escrituras. No añade subcomandos /frihet independientes, y no incluye tipos de IVA ni reglas de deducibilidad: las cifras fiscales provienen de tus datos de Frihet, no de la habilidad.

Documentación completa: docs.frihet.io/desarrolladores/skill-claude-code


Desarrollo

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

Ejecutar localmente:

FRIHET_API_KEY=fri_xxx node dist/index.js

Probar con el MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir lo que te gustaría cambiar.

git clone https://github.com/Frihet-io/frihet-mcp.git
cd frihet-mcp
npm install
npm run build   # must pass before submitting

Limitaciones actuales

  • Sin OCR ni carga de archivos -- el MCP funciona con datos estructurados, no con imágenes o PDFs.
  • Empresa única -- una clave API se asigna a un espacio de trabajo de Frihet.
  • Se requiere cuenta de Frihet -- necesitas una cuenta activa en app.frihet.io y una clave API (comienza con fri_).

Ecosistema

PaqueteQué es
@frihet/mcp-serverEste servidor MCP (156 operaciones canónicas + 5 nombres de alias; 11 recursos locales; 10 prompts)
@frihet/sdkSDK de TypeScript (frihet.invoices.create())
frihetCLI (frihet invoices list --status overdue)
n8n-nodes-frihetNodo comunitario de n8n para automatización de flujos de trabajo
API RESTOpenAPI 3.1 en api.frihet.io/v1
MCP remotoEndpoint alojado en Cloudflare Workers (sin instalación)
WebhooksEventos en tiempo real con HMAC-SHA256

Enlaces


Licencia

MIT. Ver LICENSE.

Creado por Frihet.