Italian e-invoicing: FatturaPA XML/SDI v1.6.1, 21 MCP tools for B2B and B2G.
Italian e-invoicing: FatturaPA XML/SDI v1.6.1, 21 MCP tools for B2B and B2G. That is what the fattura elettronica it mcp server brings to an AI assistant: the same capability, reachable through the Model Context Protocol rather than a separate app or dashboard.
A Python MCP server for Italian electronic invoicing in FatturaPA XML format (SDI / Agenzia delle Entrate standard, version 1.2.3). It enables AI agents (Claude, IDEs) to generate, validate, and analyze B2B, B2G, and cross-border electronic invoices that are directly compliant with the technical specifications of the Sistema di Interscambio (SDI).
The server publishes 14 tools. What each one is for:
build_transmission_header — Build DatiTrasmissione block: ProgressivoInvio, CodiceDestinatario, PECDestinatariovalidate_cedente_prestatore — Validate seller block: IdFiscaleIVA, Anagrafica, Sede, RegimeFiscale codesvalidate_cessionario — Validate buyer block: IdFiscaleIVA or CodiceFiscale, Sedeget_regime_fiscale_codes — Return all valid RegimeFiscale codes with descriptions (RF01-RF19)validate_partita_iva — Validate Italian VAT number (Partita IVA) format and checksum (11 digits)generate_progressivo_invio — Generate a unique ProgressivoInvio identifier (max 10 alphanumeric chars)lookup_codice_destinatario — Return info about a CodiceDestinatario (6-char SDI code) or PEC addressbuild_dati_generali — Build DatiGenerali block: TipoDocumento, Divisa, Data, Numero, Causaleget_tipo_documento_codes — Return all TD01-TD28 codes with descriptions and use cases (incl. cross-border)add_linea_dettaglio — Add a DettaglioLinee entry: NumeroLinea, Descrizione, Quantita, PrezzoUnitariocompute_totali — Compute DatiRiepilogo: imponibile, imposta, AliquotaIVA from line itemsget_natura_codes — Return all Natura codes (N1-N7 and sub-codes) for VAT exemption with legal referencesConfiguration is passed through the environment: FATTURA_XSD_PATH, SDI_CERT_PATH, SDI_ENDPOINT_URL, SDI_CHANNEL_ID, EINVOICING_SIGNER_TOKEN, CONSERVAZIONE_STORAGE_PATH. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
mcp-fattura-elettronica-it on PyPI is all you need. Most clients run it directly, so configuration is a few lines and a restart.
This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Fattura Elettronica IT's toolset — build_transmission_header, validate_cedente_prestatore, validate_cessionario and 11 more — is a fair guide to whether it matches your workflow. It is maintained by cmendezs; worth a glance at recent repository activity before you build anything load-bearing on it.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| build_transmission_header | Build DatiTrasmissione block: ProgressivoInvio, CodiceDestinatario, PECDestinatario |
| validate_cedente_prestatore | Validate seller block: IdFiscaleIVA, Anagrafica, Sede, RegimeFiscale codes |
| validate_cessionario | Validate buyer block: IdFiscaleIVA or CodiceFiscale, Sede |
| get_regime_fiscale_codes | Return all valid RegimeFiscale codes with descriptions (RF01-RF19) |
| validate_partita_iva | Validate Italian VAT number (Partita IVA) format and checksum (11 digits) |
| generate_progressivo_invio | Generate a unique ProgressivoInvio identifier (max 10 alphanumeric chars) |
| lookup_codice_destinatario | Return info about a CodiceDestinatario (6-char SDI code) or PEC address |
| build_dati_generali | Build DatiGenerali block: TipoDocumento, Divisa, Data, Numero, Causale |
| get_tipo_documento_codes | Return all TD01-TD28 codes with descriptions and use cases (incl. cross-border) |
| add_linea_dettaglio | Add a DettaglioLinee entry: NumeroLinea, Descrizione, Quantita, PrezzoUnitario |
| compute_totali | Compute DatiRiepilogo: imponibile, imposta, AliquotaIVA from line items |
| get_natura_codes | Return all Natura codes (N1-N7 and sub-codes) for VAT exemption with legal references |
| build_dati_pagamento | Build DatiPagamento: CondizioniPagamento (TP01/02/03), ModalitaPagamento (MP01-MP23) |
| add_allegato | Attach a base64-encoded document to the Allegati block with name and format |
{
"mcpServers": {
"fattura-elettronica-it": {
"command": "uvx",
"args": ["mcp-fattura-elettronica-it"]
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| FATTURA_XSD_PATH | Filesystem location the server is allowed to use. | Optional |
| SDI_CERT_PATH | Filesystem location the server is allowed to use. | Optional |
| SDI_ENDPOINT_URL | Endpoint or connection string the server talks to. | Yes |
| SDI_CHANNEL_ID | Configuration value read at startup. | Optional |
| EINVOICING_SIGNER_TOKEN | Credential the server authenticates with. | Yes |
| CONSERVAZIONE_STORAGE_PATH | Filesystem location the server is allowed to use. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.