Skip to main content
Glama
Sifende MCP Server
by ithdev

@sifende/mcp

npm CI Licencia: Apache 2.0

Servidor MCP oficial de Sifende. Conecta Claude, Cursor y otros clientes MCP a tu cuenta de Sifende para que puedas pedir en lenguaje natural lo que hoy hacés con la API: consultar documentos electrónicos de SIFEN, descargar el KuDE, buscar un RUC en el padrón y, si lo habilitás, emitir facturas, notas y eventos.

  • Corre en tu máquina, por stdio, con tu propia API key. No hay servidor intermedio ni se envía nada a terceros.

  • Arranca en solo lectura. Para emitir tenés que habilitarlo con una variable.

  • Usa el SDK oficial @sifende/sdk, con los mismos reintentos seguros, idempotencia y cálculo de totales que la API.

Primeros pasos

Necesitás Node.js 22.18 o superior y un cliente MCP. No hace falta instalar nada: el cliente ejecuta el servidor con npx.

1. Creá una API key de Sandbox

En el panel de Sifende, entrá a API Keys → Crear API Key y creá una de Sandbox: empieza con sk_sandbox_ (guía). Con ella podés emitir sin enviar nada a SIFEN.

2. Agregá el servidor a tu cliente

Claude Code

claude mcp add sifende --env SIFENDE_API_KEY=sk_sandbox_... -- npx -y @sifende/mcp

Claude Desktop. Abrí Configuración → Desarrollador → Editar configuración, agregá este bloque a claude_desktop_config.json y reiniciá Claude Desktop:

{
  "mcpServers": {
    "sifende": {
      "command": "npx",
      "args": ["-y", "@sifende/mcp"],
      "env": {
        "SIFENDE_API_KEY": "sk_sandbox_..."
      }
    }
  }
}

Cursor. El mismo bloque va en ~/.cursor/mcp.json, o en .cursor/mcp.json para un solo proyecto. También sirve para otros clientes con el formato mcpServers (Windsurf, Cline, Zed con su variante, etc.).

3. Probá una consulta

¿Con qué ambiente estás conectado y cuántos documentos me quedan en el plan?

El modelo llama a informacion_servidor y consultar_consumo_plan. Si responde "Sandbox", ya está funcionando.

4. Emití tu primera factura de prueba

Para que el modelo pueda emitir, agregá SIFENDE_MCP_ALLOW_WRITE=true al bloque env y reiniciá el cliente:

"env": {
  "SIFENDE_API_KEY": "sk_sandbox_...",
  "SIFENDE_MCP_ALLOW_WRITE": "true"
}

En Claude Code, volvé a agregar el servidor con --env SIFENDE_MCP_ALLOW_WRITE=true (antes borralo con claude mcp remove sifende).

Después pedile:

Emití una factura al contado por 2 remeras a 150.000 Gs y un envío de 25.000 Gs, IVA 10%, para Juan Pérez, cédula 1234567. Cuando esté aprobada, bajame el KuDE.

El modelo calcula el total con calcular_totales, revisa los valores válidos con listar_enumeraciones, emite, consulta el estado hasta que SIFEN lo aprueba y guarda el PDF. Tu cliente te va a pedir confirmación antes de emitir.

Related MCP server: peru-invoice-mcp

Ambientes

El prefijo de la API key decide el ambiente. No hay otra URL ni otra configuración.

Prefijo

Ambiente

Validez fiscal

Eventos (cancelar, inutilizar, nominar)

sk_sandbox_

Sandbox de Sifende. No se envía a SIFEN.

No

No. Las herramientas de eventos no aparecen.

sk_test_

Ambiente de pruebas de SIFEN.

No

Sí

sk_live_

Producción.

Sí

Sí

Para probar eventos, usá una API key sk_test_. Para saber con qué ambiente está conectado el servidor, preguntale al modelo o llamá a informacion_servidor.

Qué le podés pedir

Consultas (siempre disponibles):

¿En qué estado está el documento con CDC 01800123450010010000001...?

Buscá el RUC 80012345 en el padrón y decime la razón social.

Bajame el KuDE del documento 01800123450010010000001...

¿Qué códigos de unidad de medida acepta SIFEN?

Con la escritura habilitada:

Cancelá la factura con CDC 01800123450010010000001..., el cliente la rechazó.

Inutilizá las facturas 50 a 60 del timbrado 12345678, establecimiento 001, punto 001. Se saltaron por un error del sistema.

Hacé una nota de crédito por la devolución de una de las remeras de la factura anterior.

Antes de usar sk_live_

Con una API key sk_live_, cada emisión es un documento fiscal real a nombre de tu contribuyente.

  • Supervisá cada operación. Un modelo puede equivocarse en un importe, un receptor o un tipo de documento. Un documento aprobado por SIFEN solo se deshace con una cancelación dentro de las 48 horas (facturas) o 168 horas (notas).

  • Revisá los datos antes de aceptar una herramienta de escritura. Los clientes MCP piden confirmación por herramienta. No la desactives con sk_live_.

  • Dejá SIFENDE_MCP_ALLOW_WRITE apagado cuando solo necesites consultar. Al arrancar con escritura habilitada y sk_live_, el servidor escribe una advertencia en stderr.

  • Tratá la API key como una contraseña. Queda en texto plano en la configuración del cliente: no la subas a un repositorio.

  • Corré el servidor solo en tu máquina. No lo expongas por red ni lo incluyas en una app que distribuyas.

Referencia

Variables de entorno

Variable

Por defecto

Qué hace

SIFENDE_API_KEY

Obligatoria. Su prefijo define el ambiente.

SIFENDE_MCP_ALLOW_WRITE

false

Con true o 1 aparecen las herramientas que emiten documentos y eventos. Acepta true, 1, false, 0 o vacío; cualquier otro valor impide que el servidor arranque.

SIFENDE_MCP_KUDE_DIR

carpeta temporal del sistema

Carpeta donde descargar_kude guarda los PDF.

SIFENDE_BASE_URL

https://api.sifende.com.py

Solo para apuntar a otro host.

Herramientas de lectura

Siempre disponibles.

Herramienta

Qué hace

informacion_servidor

Ambiente, versión y si la escritura está habilitada. No usa la red.

consultar_documento

Estado de un documento por CDC (PENDIENTE, APROBADO, APROBADO_OBSERVACION, RECHAZADO, CANCELADO o ERROR), con el protocolo de SIFEN y el motivo de rechazo.

descargar_kude

Guarda el KuDE (PDF) de un documento aprobado en un archivo local y devuelve la ruta. Opcionalmente lo incluye en base64.

consultar_contribuyente

RUC, razón social, ambiente y actividades del contribuyente de la API key.

consultar_padron

Busca un RUC o cédula en el padrón de la SET y devuelve los datos con los nombres de campo del receptor.

consultar_consumo_plan

Plan vigente y documentos incluidos, consumidos y disponibles.

listar_enumeraciones

Valores válidos de cada enumeración de la API: tipos de pago, unidades de medida, monedas, países, etc.

consultar_geografia

Departamentos, distritos y ciudades con sus códigos SIFEN.

listar_eventos / consultar_evento

Eventos registrados (cancelación, inutilización, nominación) y su estado ante SIFEN.

calcular_totales

Total de un documento con el redondeo oficial de la SET. Se calcula localmente, sin llamar a la API.

obtener_ejemplo_documento

Documentos de ejemplo con datos ficticios: factura al contado B2C y B2B, factura a crédito en cuotas, nota de crédito y nota de débito.

Herramientas de escritura

Solo aparecen con SIFENDE_MCP_ALLOW_WRITE=true. Con una API key sk_sandbox_ aparece solo emitir_documento, porque Sandbox no admite eventos.

Herramienta

Qué hace

Anotaciones

emitir_documento

Emite una factura, nota de crédito, nota de débito, nota de remisión o autofactura. Responde con el CDC en estado PENDIENTE.

readOnlyHint: false, destructiveHint: false

cancelar_documento

Cancela un documento aprobado (48 h para facturas, 168 h para notas).

destructiveHint: true

inutilizar_numeracion

Da de baja un rango de numeración sin usar.

destructiveHint: true

nominar_documento

Identifica al receptor de una factura emitida como innominada.

destructiveHint: false

emitir_documento y nominar_documento no se marcan como destructivas porque solo agregan: no modifican ni borran lo que ya está registrado. Aun así no tienen vuelta atrás (un documento emitido solo se anula con una cancelación dentro del plazo), y con una API key sk_live_ las cuatro descripciones le advierten al modelo que registran operaciones fiscales reales y que confirme los datos con el usuario.

Recursos

URI

Contenido

sifende://guia/rapida

Flujo de emisión, reglas del documento y eventos.

sifende://docs/llms.txt

Índice de la documentación, descargado de sifende.com.py.

sifende://ejemplos/{nombre}

Los mismos documentos de ejemplo de obtener_ejemplo_documento.

Errores

Los errores de la API (Problem Details, RFC 9457) le llegan al modelo como texto legible: el código, el detalle, cada campo inválido, los valores aceptados cuando falla una enumeración, el traceId para soporte y el enlace a la documentación del error.

Si se corta la conexión al emitir o registrar un evento, no se sabe si la operación se hizo. El mensaje incluye la idempotencyKey usada: si el modelo repite la llamada con esa misma idempotencyKey, recibe el resultado original y no se duplica el documento. emitir_documento y los eventos siempre devuelven la idempotencyKey que usaron.

Desarrollo

git clone https://github.com/ithdev/sifende-mcp
cd sifende-mcp
npm ci
npm run lint && npm run typecheck && npm test && npm run build

Los tests levantan el servidor MCP en memoria y simulan la API con un fetch falso, sin llamadas de red.

Probarlo con el Inspector

# Listar las herramientas
npx @modelcontextprotocol/inspector --cli -e SIFENDE_API_KEY=sk_sandbox_... node dist/index.mjs --method tools/list

# Llamar una herramienta
npx @modelcontextprotocol/inspector --cli -e SIFENDE_API_KEY=sk_sandbox_... node dist/index.mjs \
  --method tools/call --tool-name listar_enumeraciones --tool-arg nombre=tipoPago

# Interfaz web. El Inspector no hereda el entorno: pasá la API key en la interfaz o con -e.
SIFENDE_API_KEY=sk_sandbox_... npm run inspector

Publicar una versión

Los pasos para publicar en npm y en el MCP Registry están en RELEASING.md.

Soporte

Licencia

Apache 2.0. Copyright 2026 ITH E.A.S.; ver NOTICE.

Available Tools

12 tools
calcular_totalesCalcular totales de un documentoA
Read-only

Calcula el total de un documento con las mismas reglas que valida Sifende, incluido el redondeo oficial de la SET (en guaraníes, al múltiplo de 50 inferior). Usala para obtener el montoPago exacto de una venta al contado antes de emitir. Los precios incluyen IVA. Es un cálculo local, sin llamar a la API.

Inputs: items (required), comision, tipoCambio, monedaOperacion, +1 more.

consultar_consumo_planConsultar el consumo del planA
Read-only

Muestra el plan vigente del contribuyente y su consumo del período: documentos incluidos, consumidos, reservados y disponibles, si admite documentos adicionales y el costo estimado en guaraníes.

Inputs: no named parameters.

consultar_contribuyenteConsultar el contribuyente de la API keyA
Read-only

Devuelve los datos del contribuyente dueño de la API key: RUC, razón social, tipo, ambiente, actividades económicas y domicilio. Es el emisor de todos los documentos.

Inputs: no named parameters.

consultar_documentoConsultar estado de un documentoA
Read-only

Consulta el estado de un documento electrónico por su CDC: PENDIENTE o un estado terminal, que puede ser APROBADO, APROBADO_OBSERVACION (también es éxito), RECHAZADO, CANCELADO o ERROR. Incluye el protocolo de autorización de SIFEN y, si fue rechazado, el motivo (mensajeRechazo).

Inputs: cdc (required).

consultar_eventoConsultar un eventoA
Read-only

Detalle de un evento por su id (eventoSifenId): estado (APROBADO o RECHAZADO), código y mensaje de respuesta de SIFEN. Confirmá el resultado de una cancelación, nominación o inutilización con esta herramienta.

Inputs: eventoId (required).

consultar_geografiaConsultar departamentos, distritos y ciudadesA
Read-only

Catálogo geográfico de SIFEN para domicilios. nivel "departamentos" lista todos; "distritos" lista los de un departamento (id = departamentoId); "ciudades" lista las de un distrito (id = distritoId). Los códigos se usan en el domicilio del receptor.

Inputs: nivel (required), id.

consultar_padronConsultar RUC o cédula en el padrónA
Read-only

Busca un RUC o una cédula en el padrón de la SET y devuelve razón social, tipo de contribuyente y domicilio, con los mismos nombres de campo que el receptor de un documento. Usala para completar el receptor de una factura. Acepta el número con o sin puntos y con o sin dígito verificador.

Inputs: documento (required).

descargar_kudeDescargar el KuDE (PDF)A
Idempotent

Descarga el KuDE (representación gráfica en PDF) de un documento APROBADO y lo guarda en un archivo local; devuelve la ruta. Si el PDF todavía se está preparando, espera hasta esperarSegundos y, si no llega, avisa para reintentar. Con una API key sandbox el PDF dice "SIN VALIDEZ FISCAL". Con incluirBase64 devuelve además el PDF embebido, que pesa mucho en el contexto del modelo: usalo solo si el cliente no puede leer el archivo.

Inputs: cdc (required), incluirBase64, esperarSegundos.

informacion_servidorInformación del servidor SifendeA
Read-only

Muestra con qué ambiente está conectado este servidor (Sandbox, pruebas con SIFEN o producción), si las herramientas de escritura están habilitadas y la versión. No hace llamadas a la red.

Inputs: no named parameters.

listar_enumeracionesListar enumeraciones de la APIA
Read-only

Devuelve los valores válidos de las enumeraciones de la API (tipoDocumento, tipoPago, unidadMedida, afectacionTributaria, monedaOperacion, país, motivoEmision, etc.). Sin parámetros lista los nombres de las enumeraciones; con "nombre" devuelve sus valores. Usala antes de enviar un valor de enumeración: un nombre aproximado falla recién al emitir.

Inputs: nombre.

listar_eventosListar eventos de documentosA
Read-only

Lista los eventos registrados (cancelación, inutilización, nominación) con su estado ante SIFEN, paginados. Filtrá por tipoEvento con un valor de listar_enumeraciones.

Inputs: pagina, tamanio, tipoEvento.

obtener_ejemplo_documentoObtener un ejemplo de documentoA
Read-only

Devuelve un documento de ejemplo con datos ficticios, listo para adaptar y enviar a emitir_documento: factura al contado B2C o B2B, factura a crédito en cuotas, nota de crédito y nota de débito. Para nota de remisión y autofactura devuelve el enlace al modelo en la documentación. Reemplazá los datos ficticios (receptor, ítems, CDC asociado) antes de emitir.

Inputs: ejemplo (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool targets a clearly distinct resource or operation: document status, event status, event listing, taxpayer data, enumerations, plan usage, geography, RUC lookup, KuDE download, and example documents. The only apparent overlap is between consultar_evento and listar_eventos, but their singular-detail versus paginated-list purposes are explicit. consultar_contribuyente and consultar_padron are also clearly differentiated as API-key owner data versus SET registry lookup.

    Naming Consistency4/5

    Most tools follow a predictable Spanish verb_noun pattern: consultar_*, listar_*, calcular_*, descargar_*, and obtener_*. The main deviation is informacion_servidor, which is a noun phrase rather than a verb-led name, but the overall convention remains readable and consistent.

    Tool Count5/5

    Twelve tools is well-scoped for a SIFEN e-invoicing integration, covering lookup, calculation, validation, catalog, plan, event, and document retrieval workflows. Each listed tool appears to earn its place without excessive surface area.

    Completeness2/5

    The surface is missing core write operations for an e-invoicing server: there is no emitir_documento tool, despite several descriptions referencing it, and no tools to create cancellation, nomination, or invalidation events. Read-only lookup, calculation, catalog, and download operations are well represented, but agents cannot complete the primary issuance workflow from this tool set.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to issue Peruvian electronic invoices (factura/boleta) declared to SUNAT via Nubefact. Supports creating, querying, and canceling invoices with automatic IGV tax computation.
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI agents to validate Mexican RFC, CURP, CLABE and NSS identifiers with real check digits, parse CFDI 4.0 invoices with labelled SAT catalogue codes and verified totals, and query the SAT's public status service to see whether an invoice is still valid. It also generates coherent test people and companies, all read-only and without API keys, certificates or PAC contracts.
      9
      280 npm
      1
      MIT