NormAPI
Valida y genera facturas electrónicas alemanas (XRechnung, ZUGFeRD) según las reglas oficiales de KoSIT. Cada hallazgo de regla de negocio incluye una explicación en lenguaje sencillo. La validación no requiere cuenta; las facturas nunca se almacenan.
Servidor MCP alojado
npx add-mcp 'https://normapi.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Endpoint y paquete
El servidor se ejecuta alojado en esta dirección (HTTP Streamable) y como paquete npm para clientes que inician servidores como proceso local (stdio). Ambos ofrecen las mismas herramientas.
Alojado
https://normapi.com/mcp
Local (stdio)
npx -y @normapi/mcp
Conexión
Los clientes con conectores solo necesitan la dirección; la primera vez que generas una factura, el cliente te inicia sesión en NormAPI con OAuth. Los clientes con un archivo de configuración pueden usar tu clave API como encabezado en su lugar.
- Claude (claude.ai y Desktop): Configuración → Conectores → Añadir conector personalizado y pega la dirección.
- ChatGPT: en modo desarrollador, crea un conector personalizado con esta dirección y autenticación OAuth.
Claude Code
claude mcp add --transport http normapi https://normapi.com/mcp
# or with your key instead of OAuth:
claude mcp add --transport http normapi https://normapi.com/mcp \
--header "Authorization: Bearer nk_live_…"
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"normapi": {
"url": "https://normapi.com/mcp",
"headers": { "Authorization": "Bearer nk_live_…" }
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"normapi": { "type": "http", "url": "https://normapi.com/mcp" }
}
}
Cualquier cliente stdio (p. ej., claude_desktop_config.json)
{
"mcpServers": {
"normapi": {
"command": "npx",
"args": ["-y", "@normapi/mcp"],
"env": { "NORMAPI_API_KEY": "nk_live_…" }
}
}
}
Herramientas
Tres herramientas, cada una con un resultado estructurado y una versión de texto para modelos que solo leen texto.
| Herramienta | Qué hace | Cuenta |
|---|---|---|
validate_invoice | Comprueba un XRechnung (UBL o CII, como texto) o un PDF ZUGFeRD/Factur-X (base64) según las reglas oficiales de KoSIT. Devuelve el veredicto, la versión del conjunto de reglas y cada hallazgo; cada hallazgo de regla de negocio incluye una explicación: qué exige la regla, por qué suele activarse y cómo corregirla. | no |
generate_invoice | Produce un XRechnung (UBL o CII) o un PDF ZUGFeRD a partir de datos de factura. Los totales se calculan en el servidor con aritmética decimal y el documento se valida antes de devolverse. Los datos que las reglas no permiten se rechazan con las reglas incumplidas y cómo corregir cada una, y no se cuentan. | sí, cuenta contra la cuota |
explain_rule | Explica una regla por su código (BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010…), con un enlace a su página completa. | no |
Inicio de sesión y claves
Tres formas de acceso, según el cliente:
- OAuth 2.1 (Claude, ChatGPT y otros conectores): inicias sesión en NormAPI y permites la conexión. Esta obtiene su propia clave API, nombrada según la aplicación (mcp-claude-…). Revoca esa clave en Claves API y la aplicación se desconecta de inmediato.
- Una clave API como encabezado (Claude Code, Cursor, VS Code): Authorization: Bearer nk_live_… — la misma clave que para la API REST.
- stdio: la clave en la variable de entorno NORMAPI_API_KEY.
Límites y privacidad
Las mismas reglas que la API REST:
- Documentos de hasta 5 MB. Las llamadas sin clave están bajo los límites anónimos de la API; las llamadas con clave, bajo los límites de esa clave.
- Cada factura generada cuenta contra la cuota mensual (25 gratuitas); la validación nunca cuenta.
- Las facturas se procesan en memoria y nunca se almacenan — tampoco por el servidor MCP.
- Validación técnica, no asesoramiento fiscal ni legal.