Skip to main content
Glama

informer-mcp

Un servidor Model Context Protocol para la API de contabilidad Informer (v2). Ofrece a cualquier cliente MCP acceso directo a tus relaciones, facturas de venta y compra, presupuestos, pedidos, recibos, productos e informes financieros.

Cada herramienta se deriva del documento OpenAPI propio de Informer (api.informer.eu/docs/v2). El servidor incluye una copia para que funcione sin conexión, y se mantiene al día; consulta Mantenerse al día con los cambios de la API.

Proyecto no oficial. Sin afiliación ni respaldo de Informer.


Inicio rápido

Pega esto en cualquier asistente de IA que pueda instalar servidores MCP:

Install the following MCP server: https://github.com/vladxyz/informer-mcp and run the local setup screen for the API keys.

Clonará el repositorio, lo compilará, registrará el servidor en tu cliente y luego ejecutará informer-mcp setup, que abre una página en tu navegador en 127.0.0.1. Esa página es donde van tus credenciales de API; no se pide nada en el chat y ninguna clave se pega nunca en una conversación.

Qué ves en esa página

Una tarjeta por administración, más Añadir administración si gestionas más de una:

┌─ Administration ────────────────────────────── Remove ─┐
│  ALIAS                        COMPANY NAME             │
│  [ acme                ]      [ ACME BV           ]    │
│  Short handle you use         Optional, shown in       │
│  in prompts.                  tool descriptions.       │
│                                                        │
│  API KEY                      SECURITY CODE            │
│  [ •••••••••••••••••  ]      [ •••••••••••••••  ]     │
│                                                        │
│  ACCESS                                                │
│  [ Read and write   ▾ ]                                │
│  Read only hides every tool that changes this          │
│  client's books.                                       │
└────────────────────────────────────────────────────────┘

  [ Add administration ]   [ Verify & save ]   ☐ Save without verifying

Campo

Qué poner

Alias

El nombre corto que usarás en los prompts — "listar facturas abiertas de acme". Letras, dígitos, - y _.

Nombre de la empresa

Etiqueta opcional, mostrada al modelo para que sepa que acme es ACME BV.

Clave de API

Creada dentro de esa administración en app.informer.eu/settings/api.

Código de seguridad

Se muestra en la configuración de esa administración en app.informer.eu/settings/account.

Acceso

Lectura y escritura, o Solo lectura para ocultar toda herramienta que pueda cambiar los libros de este cliente.

Ambas credenciales pertenecen a una administración, así que un contable añade una tarjeta por cliente. Consulta Varias administraciones de clientes.

Qué ocurre al pulsar Verificar y guardar

  1. Cada par clave/código de seguridad se prueba contra la API, y la página te muestra el nombre de la empresa al que pertenece realmente; así, una clave pegada en la fila equivocada es evidente antes de que se guarde nada.

  2. Si un par es rechazado, no se escribe nada y se nombra la fila que falla. Marca Guardar sin verificar para guardarlo de todos modos, por ejemplo cuando estés sin conexión.

  3. Si tiene éxito, las credenciales se escriben en ~/.informer-mcp.json con permisos 0600. Si se abrió mediante open_setup, el servidor en ejecución recoge el cambio de inmediato: una nueva administración es seleccionable en el siguiente mensaje. Si se abrió desde una terminal, reinicia tu cliente.

Pregunta "¿a qué administraciones tienes acceso?" para confirmarlo: eso llama a list_administrations y enumera cada alias con su empresa.

Related MCP server: billingo-mcp

Qué obtienes

  • 68 herramientas que cubren los 49 endpoints documentados — lectura y escritura.

  • Configuración en el navegador. Pide a tu asistente que abra la página de configuración, o ejecuta informer-mcp setup. Comprueba cada clave contra la API, escribe el archivo de configuración y el cambio surte efecto sin reiniciar nada.

  • Sigue la API. Cuando Informer publica un nuevo endpoint, el servidor lo detecta y añade la herramienta mientras tu cliente sigue conectado: sin reinstalar, sin reiniciar.

  • Varias administraciones de clientes en un solo servidor. Los contables pueden acceder a los libros de cada cliente desde una única conexión, con un argumento administration que es obligatorio siempre que haya más de una configurada.

  • Una pregunta para toda la cartera. Las herramientas de solo lectura aceptan una lista de alias o "all" y las consultan de forma concurrente, devolviendo resultados indexados por cliente.

  • Esquemas de solicitud completos. Las herramientas de crear/actualizar anuncian el JSON Schema completo de su payload, para que el modelo sepa qué campos existen y cuáles son obligatorios antes de enviar nada.

  • Solo lectura o lectura-escritura, a tu elección. Una opción --read-only oculta toda herramienta que cambie algo, y clientes individuales pueden fijarse como solo lectura mientras el resto sigue siendo escribible. Las listas de permitidos/denegados reducen aún más la superficie.

  • PDFs y adjuntos se decodifican desde base64 y pueden escribirse directamente en disco.

  • HTTP resiliente. Timeouts, reintentos con soporte de Retry-After, y los errores de validación en neerlandés de Informer se muestran tal cual (HTTP 422: invoice_date: ongeldig).

Requisitos

  • Node.js 20 o superior

  • Una cuenta de InformerOnline con acceso a la API

Configuración de tus credenciales

Basta con pedirlo en la conversación:

"Quiero cambiar mis administraciones de Informer" "Añadir un nuevo cliente a Informer" "Mi clave de API de Informer ha cambiado"

Tu asistente llama a la herramienta open_setup y la página se abre. No hay ningún archivo de configuración que buscar ni nada que editar a mano; y como la página es un formulario de navegador, tu clave de API nunca tiene que escribirse en un chat.

La misma página desde una terminal:

npm run setup          # or: informer-mcp setup

De cualquier manera, obtienes http://127.0.0.1:<port> en tu navegador, con un formulario para cada administración: alias, nombre de la empresa, clave de API, código de seguridad, y si se puede escribir en ella. Al guardar se verifica cada par contra la API — así una clave mal escrita se detecta de inmediato, y ves el nombre de la empresa al que pertenece realmente cada clave — y después escribe ~/.informer-mcp.json con permisos 0600.

Iniciar el servidor sin credenciales abre automáticamente la misma página, ya que es exactamente el momento en que la necesitas. Establece INFORMER_AUTO_SETUP=false para desactivarlo, o INFORMER_OPEN_BROWSER=false en una máquina sin interfaz gráfica para que solo imprima la URL. Sin importar cómo se haya abierto, solo hay una página: si la pides de nuevo, se te devuelve la misma URL.

Algunas cosas que la página hace deliberadamente:

  • se vincula solo a 127.0.0.1, y cada ejecución genera un token aleatorio que debe estar en la URL y en la solicitud de guardado, para que otro sitio en tu navegador no pueda enviar datos a la página;

  • nunca envía las claves almacenadas de vuelta a la página: las administraciones existentes aparecen con sus credenciales en blanco y se conservan a menos que escribas un valor nuevo;

  • se niega a guardar credenciales que la API rechaza, a menos que marques Guardar sin verificar.

Nada te impide escribir el archivo o las variables de entorno a mano; la página es una comodidad, no un requisito.

De dónde salen las claves

La API se autentica con dos cabeceras, ambas obligatorias:

Variable de entorno

Dónde encontrarla

INFORMER_API_KEY

app.informer.eu/settings/api

INFORMER_SECURITY_CODE

app.informer.eu/settings/account

Ambas están limitadas a una administración: la clave de API pertenece a la administración en la que se creó (GET /administration devuelve "la administración vinculada a esta clave de API") y el código de seguridad identifica a esa empresa. No existe ningún endpoint que enumere administraciones o cambie entre ellas.

Una clave concede acceso completo a los libros de esa administración. Trátala como una contraseña: mantenla en tu entorno, en un gestor de secretos o en un archivo de configuración fuera del repositorio.

Varias administraciones de clientes

Un contable con varios clientes necesita un par clave/código de seguridad por administración de cliente: un usuario contable con acceso a una administración puede crearlos desde su configuración. Añádelos en la página de configuración, o escribe ~/.informer-mcp.json (o cualquier archivo nombrado por INFORMER_CONFIG_FILE) tú mismo:

{
  "administrations": {
    "acme":     { "label": "ACME BV",         "api_key": "...", "security_code": "..." },
    "bakkerij": { "label": "Bakkerij de Bol", "api_key": "...", "security_code": "...", "mode": "read-only" }
  }
}

Con más de una administración configurada, toda herramienta requiere un argumento administration, anunciado como una enumeración de tus alias:

list_sales_invoices({ "administration": "acme", "filter": "open" })

Deliberadamente no hay valor por defecto. Contabilizar una factura en el libro mayor del cliente equivocado es el único error que no debe ocurrir en silencio, así que una llamada sin el argumento es rechazada por la validación del esquema antes de que se haga cualquier solicitud HTTP — igual que un alias que nunca configuraste.

list_administrations muestra los alias configurados; pasa verify: true para obtener el nombre de cada empresa desde la API, lo que confirma tanto que las credenciales funcionan como que cada alias apunta a la empresa que crees que es.

Consultar varios clientes a la vez

Las herramientas de solo lectura también aceptan una lista de alias, o "all":

list_sales_invoices({ "administration": "all", "filter": "open", "records": 50 })
list_sales_invoices({ "administration": ["acme", "bakkerij"], "filter": "open" })

Las administraciones se consultan de forma concurrente (INFORMER_FANOUT_CONCURRENCY, cuatro a la vez por defecto) y la respuesta se indexa por alias:

{
  "administrations": ["acme", "bakkerij"],
  "results": {
    "acme": { "pagination": { "total": 3 }, "invoices": [ ... ] },
    "bakkerij": { "error": "[bakkerij] HTTP 401: Authentication failed" }
  }
}

Tres propiedades que conviene conocer:

  • Que un cliente falle no hunde la consulta. Su entrada lleva un error y el resto sigue devolviendo datos.

  • El presupuesto de respuesta se reparte a partes iguales. Cada administración recibe INFORMER_MAX_RESPONSE_CHARS / n caracteres, para que un cliente grande no desplace a los demás; cualquier exceso sobre su parte se devuelve como { "truncated": true, "partial": ... }.

  • El fan-out es de solo lectura. Las herramientas que escriben, y las descargas de PDF/adjuntos, aceptan un único alias: su esquema ni siquiera ofrece el array ni "all", y el manejador las rechaza una segunda vez. Crear la misma factura en doce administraciones nunca es un accidente que merezca la pena habilitar.

Una sola administración sigue devolviendo el payload de la API sin envolver, exactamente igual que antes.

Con una sola administración — el caso habitual — nada cambia: establece INFORMER_API_KEY e INFORMER_SECURITY_CODE como siempre y el argumento sigue siendo opcional.

Instalación

git clone https://github.com/vladxyz/informer-mcp.git
cd informer-mcp
npm install          # also builds dist/ via the prepare script
npm run setup        # opens a local page to enter your API credentials

La página de configuración se ejecuta en 127.0.0.1, verifica cada clave contra la API y escribe ~/.informer-mcp.json. Consulta Configuración de tus credenciales.

Claude Desktop, como extensión

La vía más sencilla: compila un bundle y ábrelo.

npm run bundle          # writes informer-mcp.mcpb

En Claude Desktop ve a Configuración → Extensiones → Configuración avanzada → Instalar extensión… y elige el archivo .mcpb. Lleva sus propias dependencias, así que no hay nada que instalar antes aparte de Node.js 20.

El diálogo de instalación ofrece una clave de API, un código de seguridad y un interruptor de solo lectura. Puedes dejar los tres vacíos: el servidor abrirá entonces su página de configuración la primera vez que se inicie, que es también la única forma de configurar más de una administración.

Configuración → Conectores → Añadir conector personalizado de Claude Desktop es otra cosa: toma la URL de un servidor MCP remoto. Este se ejecuta localmente a través de stdio, así que se instala como extensión y no como conector.

Claude Desktop, manualmente

Edita el archivo de configuración directamente:

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "informer": {
      "command": "node",
      "args": ["C:\\path\\to\\informer-mcp\\dist\\index.js"]
    }
  }
}

Reinicia Claude Desktop después. En Windows, las barras invertidas en JSON deben duplicarse; las barras normales también funcionan y son más fáciles de leer.

Cualquier otro cliente MCP

El servidor habla MCP a través de stdio, así que todos los clientes lo configuran de la misma manera: un comando y sus argumentos. El bloque anterior funciona tal cual en Claude Code (claude mcp add), Cursor, Zed, o cualquier otra cosa que hable MCP.

Las credenciales provienen de ~/.informer-mcp.json, así que no es necesario repetirlas en la configuración del cliente. Para pasarlas por cliente en su lugar, añade un bloque env con INFORMER_API_KEY e INFORMER_SECURITY_CODE, o apunta INFORMER_CONFIG_FILE a otro lugar.

Añade "--read-only" a args para registrar un servidor que no pueda cambiar nada: consulta Solo lectura o lectura y escritura. Registrar el mismo servidor dos veces con dos nombres, uno de solo lectura y otro de lectura y escritura, funciona bien.

stdout lleva el protocolo, así que todo el registro va a stderr: un aviso de una línea al inicio te indica cuántas herramientas se registraron y qué administraciones encontró.

Solo lectura o lectura y escritura

Por defecto, todas las herramientas están disponibles. Para eliminar por completo las herramientas de escritura, inicia el servidor con una opción:

informer-mcp --read-only     # only the tools that read
informer-mcp --read-write    # the default: create, update and delete too

INFORMER_READ_ONLY=true hace lo mismo, y la opción tiene prioridad sobre la variable; así puedes registrar el mismo servidor dos veces en un mismo cliente: una vez de solo lectura para las preguntas cotidianas y otra de lectura y escritura para las sesiones en las que realmente registras algo.

En el modo de solo lectura, las herramientas de escritura no se registran en absoluto: nunca aparecen en la lista de herramientas, por lo que un modelo no tiene nada a lo que recurrir.

Por cada cliente

Las administraciones individuales se pueden fijar en el archivo de configuración, que es lo más útil cuando solo puedes consultar los libros de algunos clientes:

{
  "administrations": {
    "acme":     { "api_key": "...", "security_code": "..." },
    "bakkerij": { "api_key": "...", "security_code": "...", "mode": "read-only" }
  }
}

"read_only": true funciona como abreviatura. La configuración más restrictiva es la que gana:

Servidor

Cliente

Resultado

--read-write (por defecto)

sin especificar

lectura y escritura

--read-write

"read-only"

solo lectura

--read-only

sin especificar

solo lectura

--read-only

"read-write"

solo lectura — la opción lo restringe todo

Así, un cliente marcado como de solo lectura nunca puede escribirse por accidente, y una sesión iniciada con --read-only se mantiene así sin importar lo que diga el archivo de configuración.

Cuando algunas administraciones son de solo escritura y otras no, las herramientas de escritura se mantienen registradas, pero su enum administration solo ofrece las que son de escritura. Crear una factura en un cliente de solo lectura se deniega antes de realizar cualquier petición HTTP:

Administration(s) bakkerij are configured as read-only, so this tool cannot change them.
Writable: acme, garage.

list_administrations informa del modo efectivo de cada cliente, y el banner de inicio lo resume: read-write: acme, garage.

Configuración

Variable

Valor por defecto

Descripción

INFORMER_API_KEY

Clave de API para una sola administración.

INFORMER_SECURITY_CODE

Código de seguridad para esa administración.

INFORMER_CONFIG_FILE

~/.informer-mcp.json

Archivo JSON con varias administraciones. Lo crea setup si no existe.

INFORMER_ADMINISTRATIONS

Mismo JSON en línea, como variable de entorno. Sobrescribe el archivo por alias.

INFORMER_ADMINISTRATION_ALIAS

default

Alias para el par de INFORMER_API_KEY de una sola administración.

INFORMER_ADMINISTRATION_LABEL

Nombre legible para ese alias.

INFORMER_ADMINISTRATION_MODE

read-only o read-write para ese alias.

INFORMER_BASE_URL

https://api.informer.eu/v2

Permite indicar una raíz de API alternativa.

INFORMER_READ_ONLY

false

true solo expone herramientas GET, para todas las administraciones. Igual que --read-only.

INFORMER_TOOLS

(todos)

Lista blanca de etiquetas y/o nombres de herramientas, separadas por comas.

INFORMER_EXCLUDE_TOOLS

(ninguno)

Lista negra que se aplica después de la lista blanca.

INFORMER_TIMEOUT_MS

30000

Tiempo límite por petición.

INFORMER_MAX_RETRIES

2

Número de reintentos para errores 408/429/5xx y de red.

INFORMER_MAX_RESPONSE_CHARS

100000

Los resultados de herramientas más largos se truncan con un aviso. Se reparten equitativamente en una consulta fan-out.

INFORMER_FANOUT_CONCURRENCY

4

Cuántas administraciones consulta a la vez una fan-out.

INFORMER_AUTO_SETUP

true

false evita que la página de configuración se abra cuando no hay credenciales configuradas.

INFORMER_OPEN_BROWSER

true

false imprime la URL de configuración en lugar de abrir un navegador.

INFORMER_SPEC_MAX_AGE_HOURS

24

Máxima antigüedad de la descripción de API en caché antes de una actualización en segundo plano. 0 la desactiva.

INFORMER_SPEC_CACHE

~/.informer-mcp.spec.json

Dónde se guarda en caché la descarga de la API.

INFORMER_SPEC_URL

Documento publicado de Informer

Permite cambiar la descripción de API que se descarga.

Los filtros aceptan una etiqueta OpenAPI o un nombre de herramienta y se comparan sin distinguir entre mayúsculas, minúsculas ni puntuación:

# read-only access to invoicing data
INFORMER_TOOLS="Sales Invoices,Relations" node dist/index.js --read-only

# everything except deleting attachments
INFORMER_EXCLUDE_TOOLS=delete_sales_invoice_attachment node dist/index.js

Uso

Una vez conectado, pide en lenguaje sencillo:

  • "¿Qué facturas de venta de 2026 están todavía sin pagar?"list_sales_invoices con filter

  • "Crea una factura en borrador para ACME por 10 horas de consultoría a 125 €."get_sales_invoice_options para los identificadores válidos de libro mayor, IVA y plantilla, y luego create_sales_invoice

  • "Descarga la factura 12345 como PDF en el escritorio."get_sales_invoice_pdf con save_path

  • "Muestra el balance de situación para el periodo 6 de 2026."get_balance_report

Convenciones que conviene conocer

  • Elige la administración explícitamente. Con varios clientes configurados, todas las herramientas aceptan administración: "<alias>". list_administrations asigna los alias a las empresas, y las herramientas de solo lectura también aceptan una lista o "all".

  • Las fechas siempre siguen el formato YYYY-MM-DD.

  • Las herramientas de listado están paginadas con page (por defecto 1) y records (por defecto 20), y devuelven un objeto pagination con total y pages.

  • Los cuerpos de las peticiones van en un único argumento body. Los parámetros de ruta y de consulta se quedan en el primer nivel, así que update_relation recibe { "id": 42, "body": { ... } }.

  • Llama primero a la herramienta *_options para crear documentos. get_sales_invoice_options, get_quotation_options y compañía devuelven los identificadores válidos de libro mayor, IVA, plantilla, moneda y condiciones de pago para tu administración.

  • Los informes requieren rangos explícitos. get_balance_report necesita year_from, year_to y period; get_column_balance_report también pide un rango de libro mayor.

PDFs y archivos adjuntos

Informer devuelve los archivos como base64 dentro de JSON. Las herramientas que hacen esto (get_*_pdf, download_sales_invoice_attachment) aceptan un save_path opcional:

  • con save_path — el archivo se decodifica y se escribe en esa ruta, y la herramienta devuelve { saved_to, filename, bytes, mime_type };

  • sin save_path — el archivo se devuelve como un recurso MCP en línea con el tipo MIME correcto, lo que en documentos grandes puede resultar caro en contexto.

La subida funciona al revés: upload_sales_invoice_attachment toma { filename, file }, donde file es el contenido en base64 (máximo 10 MB; PDF, PNG, JPEG, GIF, DOC(X), XLS(X)).

Referencia de herramientas

npm run tools imprime esta lista a partir de la especificación actual; npm run tools -- --md regenera las tablas siguientes.

Además de las herramientas de endpoint, hay tres que entrega el servidor:

Herramienta

Qué hace

list_administrations

Muestra las administraciones de cliente configuradas, sus empresas y en cuáles se puede escribir.

open_setup

Abre la página local para añadir, cambiar o eliminar administraciones y sus credenciales.

refresh_api_spec

Vuelve a leer la descripción de la API de Informer y actualiza las herramientas.

Administración

Herramienta

Endpoint

Descripción

get_administration

GET /administration

Obtener detalles de la administración

Relaciones

Herramienta

Endpoint

Descripción

get_relation

GET /relations/{id}

Obtener una sola relación

update_relation

PUT /relations/{id}

Actualizar una relación

list_relations

GET /relations

Obtener una lista de relaciones

create_relation

POST /relations

Crear una relación nueva

Contactos

Herramienta

Endpoint

Descripción

get_contact

GET /contact/{id}

Obtener un contacto

update_contact

PUT /contact/{id}

Actualizar un contacto

create_contact

POST /contact

Crear un nuevo contacto

Facturas de venta

Herramienta

Endpoint

Descripción

get_sales_invoice

GET /invoices/sales/{id}

Obtener una sola factura de ved

edit_sales_invoice

PUT /invoices/sales/{id}

Actualizar una factura

list_sales_invoices

GET /invoices/sales

Obtener una lista de facturas

create_sales_invoice

POST /invoices/sales

Crear una nueva factura

get_sales_invoice_options

GET /invoices/sales/options

Obtener opciones de factura

get_sales_invoice_pdf

GET /invoices/sales/pdf/{id}

Obtener el PDF de una factura

send_sales_invoice

POST /invoices/sales/send/{id}

Enviar una factura

upload_sales_invoice_attachment

POST /invoices/sales/{id}/attachments

Subir perfil de factura

download_sales_invoice_attachment

GET /invoices/sales/{id}/attachments/{attachment_id}

Descargar un adjunto de factura

delete_sales_invoice_attachment

DELETE /invoices/sales/{id}/attachments/{attachment_id}

Eliminar un adjunto de factura

Facturas de compra

Tool

Endpoint

Descripción

get_purchase_invoice

GET /invoices/purchase/{id}

Obtener una factura de compra individual

list_purchase_invoices

GET /invoices/purchase

Obtener una lista de facturas de compra

create_purchase_invoice

POST /invoices/purchase

Crear una nueva factura de compra

get_purchase_invoice_options

GET /invoices/purchase/options

Obtener opciones de factura de compra

get_purchase_invoice_pdf

GET /invoices/purchase/pdf/{id}

Obtener el PDF de la factura de compra

Facturas recurrentes

Tool

Endpoint

Descripción

get_recurring_invoice

GET /invoices/recurring/{id}

Obtener una factura recurrente individual

update_recurring_invoice

PUT /invoices/recurring/{id}

Actualizar una factura recurrente

list_recurring_invoices

GET /invoices/recurring

Obtener una lista de facturas recurrentes

create_recurring_invoice

POST /invoices/recurring

Crear una nueva factura recurrente

get_recurring_invoice_options

GET /invoices/recurring/options

Obtener opciones de factura recurrente

Pedidos de venta

Tool

Endpoint

Descripción

get_sales_order

GET /orders/sales/{id}

Obtener un pedido de venta individual

update_sales_order

PUT /orders/sales/{id}

Actualizar un pedido de venta

list_sales_orders

GET /orders/sales

Obtener una lista de pedidos de venta

create_sales_order

POST /orders/sales

Crear un nuevo pedido de venta

get_sales_order_options

GET /orders/sales/options

Obtener opciones de pedido de venta

get_sales_order_pdf

GET /orders/sales/pdf/{id}

Obtener el PDF del pedido de venta

send_sales_order

POST /orders/sales/send/{id}

Enviar un pedido de venta

Presupuestos

Tool

Endpoint

Descripción

get_quotation

GET /quotations/{id}

Obtener un presupuesto individual

update_quotation

PUT /quotations/{id}

Actualizar un presupuesto

list_quotations

GET /quotations

Obtener una lista de presupuestos

create_quotation

POST /quotations

Crear un nuevo presupuesto

get_quotation_options

GET /quotations/options

Obtener opciones de presupuesto

get_quotation_pdf

GET /quotations/pdf/{id}

Obtener el PDF del presupuesto

send_quotation

POST /quotations/send/{id}

Enviar un presupuesto

Libro de ventas

Tool

Endpoint

Descripción

get_salesbook_invoice

GET /salesbook/{id}

Obtener una factura del libro de ventas individual

update_salesbook_invoice

PUT /salesbook/{id}

Actualizar una factura del libro de ventas

list_salesbook_invoices

GET /salesbook

Obtener una lista de facturas del libro de ventas

create_salesbook_invoice

POST /salesbook

Crear una nueva factura del libro de ventas

get_salesbook_invoice_options

GET /salesbook/options

Obtener opciones del libro de ventas

get_salesbook_invoice_pdf

GET /salesbook/pdf/{id}

Obtener el PDF del libro de ventas

Condiciones de pago

Tool

Endpoint

Descripción

list_payment_conditions

GET /payment-conditions

Obtener todas las condiciones de pago

Plantillas

Tool

Endpoint

Descripción

list_templates

GET /templates

Obtener todas las plantillas

IVA

Tool

Endpoint

Descripción

list_vat_options

GET /vat

Obtener todas las opciones de IVA

Libros mayores

Tool

Endpoint

Descripción

list_ledgers

GET /ledgers

Obtener todas las cuentas del libro mayor

Centros de coste

Tool

Endpoint

Descripción

list_cost_centres

GET /costs

Obtener todas las cuentas de centro de coste

Divisas

Tool

Endpoint

Descripción

list_currencies

GET /currencies

Obtener todas las divisas

Diarios

Tool

Endpoint

Descripción

list_journals

GET /journals

Obtener todos los diarios

Tipos de suscripción

Tool

Endpoint

Descripción

list_subscription_types

GET /subscription-types

Obtener todos los tipos de suscripción

Adjuntos

Tool

Endpoint

Descripción

list_attachments

GET /attachments

Obtener todos los adjuntos

Productos

Tool

Endpoint

Descripción

list_products

GET /products

Obtener todos los productos

Recibos

Tool

Endpoint

Descripción

get_receipt

GET /receipts/{id}

Obtener un recibo individual

update_receipt

PUT /receipts/{id}

Actualizar un recibo

list_receipts

GET /receipts

Obtener una lista de recibos

create_receipt

POST /receipts

Crear un nuevo recibo

Memorándum

Tool

Endpoint

Descripción

get_memorandum_entry

GET /memorandum/{id}

Obtener un asiento de memorándum individual

update_memorandum_entry

PUT /memorandum/{id}

Actualizar un asiento de memorándum

list_memorandum_entries

GET /memorandum

Obtener una lista de asientos de memorándum

create_memorandum_entry

POST /memorandum

Crear un nuevo asiento de memorándum

Informes

Tool

Endpoint

Descripción

get_balance_report

GET /reports/balance

Obtener balance de situación

get_column_balance_report

GET /reports/column-balance

Obtener balance por columnas

Nomenclatura de herramientas

Los nombres se derivan del método HTTP y de la ruta, no de la prosa, por lo que se mantienen estables entre actualizaciones de la especificación:

Patrón

Ejemplo

GET /resources

list_relations

GET /resources/{id}

get_relation

POST /resources

create_relation

PUT /resources/{id}

update_relation

GET /resources/options

get_sales_invoice_options

GET /resources/pdf/{id}

get_sales_invoice_pdf

POST /resources/send/{id}

send_quotation

Los endpoints que la tabla de nomenclatura no reconoce recurren a <verbo>_<slug de ruta>, de modo que una actualización de la especificación nunca produce una herramienta rota.

Mantenerse al día con los cambios de la API

Las herramientas se generan a partir del documento OpenAPI de Informer, así que cuando Informer añade un endpoint, lo único que falta es una copia actualizada de ese documento. El servidor puede obtenerla por sí mismo.

Tres capas, en orden de precedencia:

  1. Una copia descargada, almacenada en caché en ~/.informer-mcp.spec.json.

  2. La copia incluida en openapi/api-docs.json, que se distribuye con el servidor y siempre funciona sin conexión.

  3. Ninguna de las dos se acepta a ciegas: una descarga debe poder analizarse como un documento OpenAPI 3 con al menos una operación utilizable, o se rechaza y las herramientas actuales se mantienen. Un portal cautivo o una página de mantenimiento no pueden eliminar tu conjunto de herramientas.

De forma programada

Una vez al día, poco después de iniciarse, el servidor comprueba en segundo plano si hay un documento más reciente. El arranque nunca se bloquea y un fallo en la comprobación se registra y se ignora. INFORMER_SPEC_MAX_AGE_HOURS=0 lo desactiva.

Bajo demanda

La herramienta refresh_api_spec hace lo mismo cuando se lo pides, útil cuando falta un endpoint que esperabas o un argumento se rechaza por desconocido:

"Actualiza la descripción de la API de Informer y dime qué ha cambiado."

{
  "adopted": true,
  "api_version": "2.0.0",
  "endpoints": 49,
  "tools": 68,
  "changes": {
    "added":   [{ "tool": "list_projects", "endpoint": "GET /projects" }],
    "removed": [],
    "changed": [{ "tool": "create_sales_invoice", "endpoint": "POST /invoices/sales",
                  "notes": ["body now requires: project_id"] }],
    "unchanged": 66
  },
  "note": "The tool list has been updated; no restart is needed."
}

Pasa dry_run para ver ese informe sin aplicar nada.

El diff es deliberadamente específico: nombra las herramientas que han aparecido y desaparecido, y para las que han cambiado dice qué ha cambiado: un argumento nuevo, uno que ya no existe, un campo que ahora es obligatorio. Esa es la parte que una comparación de rutas a secas pasa por alto, y suele ser la parte que de otro modo aparecería como un desconcertante 422.

Adoptar un documento actualiza el servidor en ejecución: se registran herramientas nuevas, se eliminan las retiradas, se vuelven a anunciar las modificadas y se envía una notificación tools/list_changed para que tu cliente recargue la lista a mitad de sesión.

La copia en el repositorio

npm run update-spec actualiza el documento incluido e informa de qué rutas han entrado y salido. Ese es el comando que debes ejecutar cuando quieras que el cambio quede confirmado para todos los que instalen el servidor; refresh_api_spec solo afecta a tu propia máquina.

Recursos

El servidor también expone el propio documento OpenAPI como recurso MCP en informer://openapi.json, lo que resulta útil cuando quieres que el modelo compruebe una definición de campo sin adivinar.

Desarrollo

npm install         # install + build
npm run setup       # enter credentials in the browser
npm run bundle      # package as informer-mcp.mcpb for one-click install
npm run dev         # run from source with tsx
npm test            # vitest
npm run typecheck   # tsc --noEmit
npm run build       # compile to dist/
npm run tools       # print the tool surface
npm run update-spec # re-download openapi/api-docs.json and report added/removed paths

Estructura del proyecto

openapi/api-docs.json   vendored OpenAPI 3.0 document — the source of truth
src/openapi.ts          spec → operations: tool names, JSON Schema conversion
src/client.ts           HTTP client: auth headers, retries, error formatting
src/tools.ts            operations → MCP tools, filtering, result formatting
src/server.ts           server assembly (tools + openapi resource)
src/spec.ts             download, validate, cache and diff the OpenAPI document
src/setup.ts            local setup server: verify credentials, write the config file
src/setup-page.ts       the HTML it serves
src/index.ts            stdio entry point and CLI
manifest.json           extension manifest: entry point and install-time settings
scripts/update-spec.mjs refresh the vendored spec
scripts/list-tools.ts   print/regenerate the tool reference
scripts/bundle.mjs      stage production dependencies and pack the .mcpb

Añadir endpoints normalmente no supone ningún cambio de código: el servidor en ejecución los detecta por sí mismo y npm run update-spec confirma el mismo cambio en la copia incluida. Solo las formas de URL realmente nuevas necesitan una regla en la tabla RESOURCES de src/openapi.ts; sin ella, siguen convirtiéndose en herramientas, solo que con un nombre menos descriptivo.

Cómo se convierten los esquemas

OpenAPI 3.0 no es exactamente JSON Schema. De camino a la definición de herramienta MCP:

  • Las referencias #/components/schemas/X se convierten en #/$defs/X, con solo el cierre transitivo que cada operación necesita realmente incluido, de modo que las definiciones de herramienta sigan siendo pequeñas;

  • nullable: true se convierte en una unión ["type", "null"];

  • los parámetros de ruta y consulta se convierten en propiedades de nivel superior, los cuerpos de solicitud van bajo body, y additionalProperties: false evita que los errores tipográficos lleguen a la API.

Los argumentos se validan contra ese esquema antes de realizar cualquier llamada HTTP.

Notas de seguridad

  • Este servidor puede crear, actualizar y eliminar registros contables reales. Comience con --read-only si solo necesita informes, fije clientes individuales con "mode": "read-only" y deje que su cliente MCP solicite aprobación para las herramientas de escritura.

  • Las credenciales de varios clientes en un mismo proceso significan que una llamada mal enrutada toca los libros de otra persona. El argumento administration obligatorio, la enumeración de alias conocidos, la restricción de solo lectura en la difusión y el prefijo de alias en cada mensaje de error ([acme] HTTP 422: ...) existen por esa razón. Mantenga el archivo de configuración fuera del control de versiones y legible solo por usted.

  • Las herramientas están anotadas con readOnlyHint, destructiveHint e idempotentHint, de modo que los clientes que usan esas sugerencias pueden bloquear las riesgosas.

  • No se registra nada en stdout y las credenciales nunca se reflejan en la salida de las herramientas ni se envían de vuelta a la página de configuración. open_setup devuelve una URL, nunca una clave: un asistente no tiene forma de leer sus credenciales ni razón para pedírselas en un chat.

  • La descripción de la API se descarga sin credenciales, y un documento que no se analiza como un archivo OpenAPI 3 utilizable se rechaza en lugar de adoptarse.

Licencia

MIT — consulte LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server to interact with the Cuéntica accounting API, allowing users to manage invoices, expenses, income, clients, providers, and bank accounts via natural language.
    59
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Billingo V3 Hungarian invoicing API. Manage invoices, partners, products, spendings, and bank accounts from any MCP client.
    10
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that wraps the cebelca.biz accounting API, exposing tools for operations like managing partners, invoices, proformas, and fetching PDFs.
    2
  • A
    license
    B
    quality
    A
    maintenance
    Read-only MCP server for self-hosted Manager.io bookkeeping, providing curated GET tools to access accounting data like invoices, balances, and reports.
    10
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.

  • MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.

  • A basic MCP server to operate on the Postman API.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vladxyz/informer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server