El Salvador Dte
FreeNot checkedProvides tools for El Salvador electronic invoicing (DTE), including IVA calculation, document-type catalog, and DUI/NIT validation.
About
Provides tools for El Salvador electronic invoicing (DTE), including IVA calculation, document-type catalog, and DUI/NIT validation.
README
A small, focused Model Context Protocol (MCP) server that exposes El Salvador electronic invoicing (DTE) and fiscal helpers as tools an LLM can call: IVA calculation, the official DTE document-type catalog, and DUI / NIT validation.
Built with the official @modelcontextprotocol/sdk for TypeScript, ESM, Node 18+, and the stdio transport.
- Author: Gerar Arévalo — github.com/Gerar12 · gcoder.dev
- License: MIT
What it is
The Documento Tributario Electrónico (DTE) is El Salvador's mandatory electronic invoicing standard, administered by the Ministerio de Hacienda. This server bundles a few pure, deterministic helpers that come up constantly when building DTE integrations, and makes them available to any MCP-capable client (Claude Desktop, Claude Code, etc.).
Tools
| Tool | Input | Output |
|---|---|---|
calculate_iva |
{ amount: number, includesIva?: boolean } |
{ subtotal, iva, total } |
list_dte_types |
(none) | { types: [{ code, name }] } |
validate_dui |
{ dui: string } |
{ valid, reason? } |
validate_nit |
{ nit: string } |
{ valid, normalized, reason? } |
calculate_iva
El Salvador IVA (VAT) is 13%.
includesIva = false(default):amountis the net subtotal; IVA is added on top.includesIva = true:amountalready includes IVA; it is broken out.
Values are rounded to 2 decimals, and subtotal + iva === total always holds.
// input
{ "amount": 100 }
// output
{ "subtotal": 100, "iva": 13, "total": 113 }
// input
{ "amount": 113, "includesIva": true }
// output
{ "subtotal": 100, "iva": 13, "total": 113 }
list_dte_types
Returns the 11 official DTE document types (code — name):
| Code | Name |
|---|---|
| 01 | Factura (Consumidor Final) |
| 03 | Comprobante de Crédito Fiscal (CCF) |
| 04 | Nota de Remisión |
| 05 | Nota de Crédito |
| 06 | Nota de Débito |
| 07 | Comprobante de Retención |
| 08 | Comprobante de Liquidación |
| 09 | Documento Contable de Liquidación |
| 11 | Factura de Exportación |
| 14 | Factura de Sujeto Excluido |
| 15 | Comprobante de Donación |
// output (abridged)
{ "types": [ { "code": "01", "name": "Factura (Consumidor Final)" }, ... ] }
validate_dui
Validates a Salvadoran DUI (Documento Único de Identidad): 8 digits, a hyphen, then 1 check digit (e.g. 01234567-8).
It checks the format and the modulo-10 check digit. The 8 base digits are weighted 9, 8, 7, 6, 5, 4, 3, 2 (left to right); the expected check digit is (10 - (weightedSum % 10)) % 10.
// input
{ "dui": "01234567-8" }
// output
{ "valid": true }
// input
{ "dui": "01234567-9" }
// output
{ "valid": false, "reason": "Invalid check digit: expected 8, got 9" }
Honesty note on the DUI check digit. The modulo-10 algorithm above is a widely-used community algorithm and was verified in this repo against known-valid DUIs (
00016297-5,01234567-8). It is not reproduced from an official, government-published specification. If your use case is high-stakes (e.g. legally rejecting a real person's ID), treat avalid: falsefrom the check-digit test as "likely a typo, please re-check" rather than an authoritative rejection. The format check (^\d{8}-\d$) is unambiguous; the check-digit step is best-effort.
validate_nit
Validates the format only of an El Salvador NIT (Número de Identificación Tributaria): 14 digits, commonly formatted NNNN-NNNNNN-NNN-N. Input is accepted with or without hyphens/whitespace, and a canonically hyphenated normalized value is returned.
// input
{ "nit": "06141234560012" }
// output
{ "valid": true, "normalized": "0614-123456-001-2" }
Honesty note on NIT. This is format/length validation only — it does not verify a check digit. NIT check-digit rules are not consistently documented in public sources, so shipping a check-digit validator here would imply a correctness guarantee that cannot be honestly backed up. A
valid: truemeans "well-formed", not "issued by Hacienda".
Install
Requires Node.js 18+.
# clone, then:
npm install
npm run build
Run the tests (unit tests for the pure functions + an stdio smoke test that boots the server and performs a full MCP handshake):
npm test
Start the server manually (it speaks JSON-RPC over stdio and waits for a client):
npm start
# or
node build/index.js
Run with npx (after publishing to npm)
npx mcp-el-salvador-dte
Add to Claude Desktop
Edit your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"el-salvador-dte": {
"command": "node",
"args": ["/absolute/path/to/mcp-el-salvador-dte/build/index.js"]
}
}
}
Once published to npm you can instead use:
{
"mcpServers": {
"el-salvador-dte": {
"command": "npx",
"args": ["-y", "mcp-el-salvador-dte"]
}
}
}
Restart Claude Desktop, and the four tools will appear.
Add to Claude Code
# local build
claude mcp add el-salvador-dte -- node /absolute/path/to/mcp-el-salvador-dte/build/index.js
# or, after publishing to npm
claude mcp add el-salvador-dte -- npx -y mcp-el-salvador-dte
Project layout
src/lib.ts Pure, side-effect-free domain logic (unit-tested directly)
src/index.ts MCP server: registers the 4 tools over stdio
test/ node:test unit tests + stdio smoke test
License
MIT © 2026 Gerar Arévalo
Install El Salvador Dte in Claude Desktop, Claude Code & Cursor
unyly install mcp-el-salvador-dteInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add mcp-el-salvador-dte -- npx -y github:Gerar12/mcp-el-salvador-dteFAQ
Is El Salvador Dte MCP free?
Yes, El Salvador Dte MCP is free — one-click install via Unyly at no cost.
Does El Salvador Dte need an API key?
No, El Salvador Dte runs without API keys or environment variables.
Is El Salvador Dte hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install El Salvador Dte in Claude Desktop, Claude Code or Cursor?
Open El Salvador Dte on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare El Salvador Dte with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
