Sifende

Registre officiel Autres

Servidor MCP de Sifende: consultá y emití facturas electrónicas de SIFEN (Paraguay).

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @sifende/mcp
Claude Code
claude mcp add sifende -e 'SIFENDE_API_KEY=<your sifende_api_key>' -e 'SIFENDE_MCP_ALLOW_WRITE=false' -e 'SIFENDE_BASE_URL=<SIFENDE_BASE_URL>' -e 'SIFENDE_MCP_KUDE_DIR=<SIFENDE_MCP_KUDE_DIR>' -- npx -y @sifende/mcp@0.2.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "sifende": {
            "command": "npx",
            "args": [
                "-y",
                "@sifende/mcp@0.2.0"
            ],
            "env": {
                "SIFENDE_API_KEY": "<your sifende_api_key>",
                "SIFENDE_MCP_ALLOW_WRITE": "false",
                "SIFENDE_BASE_URL": "<SIFENDE_BASE_URL>",
                "SIFENDE_MCP_KUDE_DIR": "<SIFENDE_MCP_KUDE_DIR>"
            }
        }
    }
}

Variables d'environnement

  • SIFENDE_API_KEY obligatoire secret API key del contribuyente (sk_sandbox_, sk_test_ o sk_live_). El prefijo fija el ambiente.
  • SIFENDE_MCP_ALLOW_WRITE Habilita las herramientas que emiten documentos y registran eventos. Por defecto solo lectura.
  • SIFENDE_BASE_URL URL base de la API. Solo para apuntar a otro host; por defecto https://api.sifende.com.py.
  • SIFENDE_MCP_KUDE_DIR Carpeta donde se guardan los PDF del KuDE. Por defecto una carpeta temporal.

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. @sifende/mcp
  2. Primeros pasos
  3. Ambientes
  4. Qué le podés pedir
  5. Antes de usar sk_live_
  6. Referencia
  7. Desarrollo
  8. Licencia

@sifende/mcp

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.

Ambientes

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

PrefijoAmbienteValidez fiscalEventos (cancelar, inutilizar, nominar)
sk_sandbox_Sandbox de Sifende. No se envía a SIFEN.NoNo. Las herramientas de eventos no aparecen.
sk_test_Ambiente de pruebas de SIFEN.NoSí
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
VariablePor defectoQué hace
SIFENDE_API_KEYObligatoria. Su prefijo define el ambiente.
SIFENDE_MCP_ALLOW_WRITEfalseCon 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_DIRcarpeta temporal del sistemaCarpeta donde descargar_kude guarda los PDF.
SIFENDE_BASE_URLhttps://api.sifende.com.pySolo para apuntar a otro host.
Herramientas de lectura

Siempre disponibles.

HerramientaQué hace
informacion_servidorAmbiente, versión y si la escritura está habilitada. No usa la red.
consultar_documentoEstado de un documento por CDC (PENDIENTE, APROBADO, APROBADO_OBSERVACION, RECHAZADO, CANCELADO o ERROR), con el protocolo de SIFEN y el motivo de rechazo.
descargar_kudeGuarda el KuDE (PDF) de un documento aprobado en un archivo local y devuelve la ruta. Opcionalmente lo incluye en base64.
consultar_contribuyenteRUC, razón social, ambiente y actividades del contribuyente de la API key.
consultar_padronBusca 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_planPlan vigente y documentos incluidos, consumidos y disponibles.
listar_enumeracionesValores válidos de cada enumeración de la API: tipos de pago, unidades de medida, monedas, países, etc.
consultar_geografiaDepartamentos, distritos y ciudades con sus códigos SIFEN.
listar_eventos / consultar_eventoEventos registrados (cancelación, inutilización, nominación) y su estado ante SIFEN.
calcular_totalesTotal de un documento con el redondeo oficial de la SET. Se calcula localmente, sin llamar a la API.
obtener_ejemplo_documentoDocumentos 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.

HerramientaQué haceAnotaciones
emitir_documentoEmite 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_documentoCancela un documento aprobado (48 h para facturas, 168 h para notas).destructiveHint: true
inutilizar_numeracionDa de baja un rango de numeración sin usar.destructiveHint: true
nominar_documentoIdentifica 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
URIContenido
sifende://guia/rapidaFlujo 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
  1. Subí la versión en package.json, en src/version.ts y en los dos campos version de server.json. Los tests fallan si no coinciden.
  2. Hacé commit, push a main y esperá a que pase la CI.
  3. Creá un GitHub Release con el tag vX.Y.Z de esa versión.

El workflow release.yml publica en npm y después en el MCP Registry. Necesita dos cosas configuradas una sola vez:

  • npm: trusted publishing para @sifende/mcp con el workflow release.yml y el environment npm. No usa token.
  • MCP Registry: el secret MCP_PRIVATE_KEY en el environment mcp-registry, que solo admite tags v*. Es la clave privada ed25519 cuya clave pública está en el registro TXT del apex de sifende.com.py (v=MCPv1; k=ed25519; p=...). Así se verifica el nombre py.com.sifende/mcp (sifende.com.py al revés).

MCP_PRIVATE_KEY va como los 32 bytes de la clave en hexadecimal. Para cargarla desde un archivo PEM:

openssl pkey -in clave-ed25519.pem -outform DER | tail -c 32 | xxd -p -c 64 \
  | tr -d "\n" | gh secret set MCP_PRIVATE_KEY --env mcp-registry --repo ithdev/sifende-mcp

Si el job del Registry falla, se puede publicar a mano desde la raíz del repo, con la versión ya publicada en npm:

mcp-publisher validate
mcp-publisher login dns --domain sifende.com.py --private-key "$MCP_PRIVATE_KEY"
mcp-publisher publish

Licencia

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

Questions fréquentes

Qu'est-ce que Sifende ?

Servidor MCP de Sifende: consultá y emití facturas electrónicas de SIFEN (Paraguay).

Comment installer Sifende ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add sifende -e 'SIFENDE_API_KEY=<your sifende_api_key>' -e 'SIFENDE_MCP_ALLOW_WRITE=false' -e 'SIFENDE_BASE_URL=<SIFENDE_BASE_URL>' -e 'SIFENDE_MCP_KUDE_DIR=<SIFENDE_MCP_KUDE_DIR>' -- npx -y @sifende/mcp@0.2.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Sifende ?

Oui. Il attend SIFENDE_API_KEY, à renseigner dans sa configuration.

Sifende est-il open source ?

Oui. Son code est sur GitHub sous licence Apache-2.0.

Qui maintient Sifende ?

Il est publié par ithdev. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.