mcpField
F
Fattura Elettronica IT

Fattura Elettronica IT

本地服务
github.com/cmendezs金融数据27 周前更新

关于 Fattura Elettronica IT

Fattura Elettronica IT 是用于意大利 FatturaPA 电子发票的 MCP 服务,涵盖文档创建、验证、签名、SDI 交换和归档。其工具覆盖 B2B、B2G 及跨境单据的处理流程。

主要功能

  1. 01构建并解析 FatturaPA XML
  2. 02按官方 XSD v1.2.3 验证
  3. 03计算增值税和预扣税
  4. 04使用 XAdES-BES 或 CAdES-BES 签名
  5. 05通过 SDI 提交并跟踪单据
  6. 06归档发票并验证完整性

适用场景

  1. 01生成并验证意大利电子发票
  2. 02为发票签名并提交至 SDI
  3. 03查看 SDI 通知和提交状态
  4. 04归档发票并检查存档完整性

MCP 相关

向 MCP 客户端提供 43 个工具,用于 FatturaPA 创建、验证、解析、签名、SDI 操作和归档。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cmendezs-mcp-fattura-elettronica-it": {
"command": "uvx",
"args": [
"mcp-fattura-elettronica-it"
],
"env": {
"FATTURA_XSD_PATH": "<FATTURA_XSD_PATH>"
}
}
}
}
启动命令uvx mcp-fattura-elettronica-it
需要配置的环境变量
FATTURA_XSD_PATHPath to a local copy of the FatturaPA XSD schema file (optional — built-in schema is used if unset)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-fattura-elettronica-it0.9.1

工具

43

收录的工具列表 · 更新于 2 周前

参数类型必填说明
id_paesestring是传输方的两字母 ISO 3166-1 国家代码(例如 'IT')。意大利实体通常使用 'IT'。
id_codicestring是传输方的税务标识:意大利实体使用 Partita IVA(11 位数字),跨境实体使用外国税号(最多 28 个字符)。
pec_destinatarioany否收件人的 PEC(认证电子邮件)地址。仅当 codice_destinatario 为 '0000000' 时必填。
progressivo_inviostring是唯一的顺序发送标识符,最多 10 个字母数字字符。使用 generate_progressivo_invio() 自动获取。
codice_destinatariostring是SDI 收件人代码:公共管理机构(PA)的办公室使用 6 个字符(IPA 代码,FPA12);B2B 中介机构使用 7 个字符(FPR12);PEC 路由使用 '0000000'(7 个零)。请先使用 lookup_codice_destinatario() 验证代码。
formato_trasmissionestring是传输格式:向公共管理机构(PA)开具发票时使用 'FPA12',向私人主体开具发票时使用 'FPR12'(B2B/B2C)。

详细介绍

mcp-fattura-elettronica-it 🇮🇹

English | Italiano

License PyPI version Python mcp-fattura-elettronica-it MCP server Listed in italia-mcp-servers


简介

一个用于 FatturaPA XML 格式 意大利电子发票 的 Python MCP 服务(符合 SDI / Agenzia delle Entrate 标准,XSD v1.2.3,Specifiche Tecniche 1.9.1)。它使 AI Agent(Claude、IDE)能够生成、验证和分析 B2B、B2G 及跨境电子发票,并确保发票直接符合 Sistema di Interscambio(SDI)的技术规范。该服务基于 mcp-einvoicing-core 构建,这是电子发票 MCP 服务的共享基础库。

注意:“Specifiche Tecniche”(AdE Allegato A 控制项/编码文档)与 XSD 架构是两个独立的制品,各自有独立的版本号。Specifiche Tecniche 1.9.1(自 2026-05-15 起生效)不会更改 XSD — 随附的架构仍为 v1.2.3。

这是一个 Model Context Protocol (MCP) 服务,提供 43 个工具,涵盖 FatturaPA XML 文档的完整生命周期:构建传输头信息、验证卖方/买方(包括 Gruppo IVA / VAT-group CodiceFiscale)、文档类型代码(TD01-TD28)、支持 AltriDatiGestionali 的行项目、计算 VAT 汇总、付款条款、依据 Agenzia delle Entrate 官方架构(v1.2.3)验证 XSD、生成 XML、解析、导出 JSON、生成 SDI 文件名、计算预扣税(ritenuta d'acconto)、数字签名(XAdES-BES 和 CAdES-BES)、通过 SDICoop SOAP 直接向 SDI 传输、解析 SDI 通知,以及 conservazione sostitutiva(符合 AgID 要求的法律合规归档)。采用 Apache 2.0 许可证。

安装

通过 PyPI(推荐)
pip install mcp-fattura-elettronica-it

mcp-einvoicing-core 会作为依赖项自动安装。 同时也会安装所需的 lxml,因此无需额外操作。

无需预先安装,使用 uvx:

uvx mcp-fattura-elettronica-it
从源代码安装
git clone https://github.com/cmendezs/mcp-fattura-elettronica-it.git
cd mcp-fattura-elettronica-it

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

pip install -e ".[dev]"
cp .env.example .env

配置

可用的环境变量如下:

VariableDescriptionDefault
LOG_LEVEL日志级别(DEBUG、INFO、WARNING、ERROR)INFO
FATTURA_XSD_PATHFatturaPA XSD 文件的路径schemas/FatturaPA_v1.2.3.xsd
SDI_ENVIRONMENTSDI 环境:test 或 productiontest
SDI_CERT_PATHSDI 的 PKCS#12 mTLS 证书路径(无)
SDI_CERT_PASSWORDPKCS#12 文件的密码(无)
SDI_ENDPOINT_URLSDICoop 端点 URL 覆盖值(根据环境自动设置)
SDI_CHANNEL_IDAdE 认证过程中分配的通道 ID(无)
EINVOICING_SIGNER_SOCKET签名微服务的 Unix 套接字(无)
EINVOICING_SIGNER_TOKEN签名微服务的身份验证令牌(无)
CONSERVAZIONE_STORAGE_PATH本地归档存储路径(仅用于开发).conservazione/

Claude Desktop 集成

将以下内容添加到 claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "fattura-elettronica-it": {
      "command": "uvx",
      "args": ["mcp-fattura-elettronica-it"],
      "env": {
        "SDI_ENVIRONMENT": "test",
        "SDI_CERT_PATH": "/path/to/your-cert.p12",
        "SDI_CERT_PASSWORD": "your-cert-password",
        "SDI_CHANNEL_ID": "your-channel-id"
      }
    }
  }
}

Cursor 集成

Cursor 支持通过 stdio 使用 MCP 服务。请在以下位置添加配置:

  • 全局(所有项目):~/.cursor/mcp.json
  • 项目(仅此仓库):.cursor/mcp.json
{
  "mcpServers": {
    "fattura-elettronica-it": {
      "command": "uvx",
      "args": ["mcp-fattura-elettronica-it"],
      "env": {
        "SDI_ENVIRONMENT": "test",
        "SDI_CERT_PATH": "/path/to/your-cert.p12",
        "SDI_CERT_PASSWORD": "your-cert-password",
        "SDI_CHANNEL_ID": "your-channel-id"
      }
    }
  }
}

重新加载 Cursor 窗口(按 Ctrl+Shift+P,然后选择 Reload Window)以应用更改。

Kiro 集成

Kiro 通过专用配置文件支持 MCP 服务。提供两个级别:

  • 全局(所有项目):~/.kiro/settings/mcp.json
  • 工作区(仅此仓库):.kiro/settings/mcp.json
{
  "mcpServers": {
    "fattura-elettronica-it": {
      "command": "uvx",
      "args": ["mcp-fattura-elettronica-it"],
      "env": {
        "SDI_ENVIRONMENT": "test",
        "SDI_CERT_PATH": "/path/to/your-cert.p12",
        "SDI_CERT_PASSWORD": "your-cert-password",
        "SDI_CHANNEL_ID": "your-channel-id"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

保存后,文件会自动重新加载。你也可以通过命令面板(Cmd+Shift+P / Ctrl+Shift+P)打开配置,然后选择 MCP。

Kiro 安全提示:不要以明文形式写入机密,而应使用 "SDI_CERT_PASSWORD": "${SDI_CERT_PASSWORD}" 语法。Kiro 会在启动时解析 shell 环境变量。

可用工具

抬头:FatturaElettronicaHeader(7 个工具)
工具描述
build_transmission_header构建 DatiTrasmissione 块:ProgressivoInvio、CodiceDestinatario、PECDestinatario
validate_cedente_prestatore验证卖方块:IdFiscaleIVA、可选的 Gruppo IVA 成员 CodiceFiscale、Anagrafica、Sede、RegimeFiscale 代码
validate_cessionario验证买方块:IdFiscaleIVA 或 CodiceFiscale、Sede(针对 Gruppo IVA 的废弃代码 00327 结构性前提发出警告)
get_regime_fiscale_codes返回所有有效的 RegimeFiscale 代码及其说明(RF01-RF19)
validate_partita_iva验证意大利增值税号(Partita IVA)的格式和校验和(11 位数字)
generate_progressivo_invio生成唯一的 ProgressivoInvio 标识符(最多 10 个字母数字字符)
lookup_codice_destinatario返回 CodiceDestinatario(6 位 SDI 代码)或 PEC 地址的信息(每个经认证的渠道最多可使用 300 个代码,Specifiche Tecniche 1.9.1)
正文:FatturaElettronicaBody(8 个工具)
工具描述
build_dati_generali构建 DatiGenerali 块:TipoDocumento、Divisa、Data、Numero、Causale
get_tipo_documento_codes返回所有 TD01-TD28 代码及其说明和适用场景(包括跨境场景)
add_linea_dettaglio添加 DettaglioLinee 条目:NumeroLinea、Descrizione、Quantita、PrezzoUnitario、可选的 AltriDatiGestionali
build_sport_worker_exemption_dato_gestionale为体育工作者的 IRPEF 免税构建 AltriDatiGestionali 条目(TipoDato='ESENZSPORT',Specifiche Tecniche 1.9.1)
compute_totali根据行项目计算 DatiRiepilogo:imponibile、imposta、AliquotaIVA
get_natura_codes返回所有用于增值税免税的 Natura 代码(N1-N7 及子代码),并附法律依据
build_dati_pagamento构建 DatiPagamento:CondizioniPagamento(TP01/02/03)、ModalitaPagamento(MP01-MP23)
add_allegato将经过 base64 编码的文档附加到 Allegati 块,并指定名称和格式
全局:生成与验证(7 个工具)
工具描述
generate_fattura_xml根据结构化输入数据生成完整的 FatturaPA XML 文件
validate_fattura_xsd根据官方 XSD 架构 v1.2.3 验证 FatturaPA XML 字符串
parse_fattura_xml解析现有的 FatturaPA XML 字符串,并返回结构化 JSON 字典
export_to_json将解析后的 FatturaPA 结构导出为整洁的 JSON 格式
validate_partita_iva_format验证 Partita IVA 格式和类似 Luhn 的校验和(11 位意大利增值税号)
get_sdi_filename生成官方 SDI 文件名:IT{PartitaIVA}_{ProgressivoInvio}.xml
check_ritenuta_acconto检查并计算专业发票的 ritenuta d'acconto(预扣税)
简化发票:FatturaSemplificata VFSM10(3 个工具)
工具描述
generate_fattura_semplificata使用 VFSM10 格式生成简化发票 XML(TD07/TD08/TD09)
validate_fattura_semplificata_xsd根据 VFSM10 XSD v1.0.2 验证简化发票 XML
parse_fattura_semplificata_xml将简化发票 XML 解析为结构化字典

简化发票(第 21-bis 条 DPR 633/72)适用于金额不超过 400 欧元(含税)的交易。与普通 FatturaPA 相比,其结构更扁平:没有逐行 VAT 明细,也没有 DatiRiepilogo。每个 DatiBeniServizi 条目都包含自己的 Descrizione、Importo 和 DatiIVA。VFSM10 格式使用命名空间 v1.0,与普通发票使用的 EN 16931 CIUS 相互独立。

数字签名(2 个工具)
工具描述
sign_fattura_xades应用 XAdES-BES 封装式 XML 签名(.xml)。需要 PKCS#12 证书。
sign_fattura_cades应用 CAdES-BES CMS/PKCS#7 附加式签名(.xml.p7m)。需要 PKCS#12 证书。

SDI 接受这两种签名格式(Specifiche tecniche SDI v1.8.4,第 2.1 节)。 支持双模式:签名微服务(密钥不会进入 MCP 进程)或直接加载 PKCS#12。 需要 cryptography>=42.0.0(通过 mcp-einvoicing-core 的 [xml-sign] 附加项安装)。

SDI 集成(5 个工具)
工具描述
submit_to_sdi通过 SDICoop SOAP(mTLS)向 SDI 提交已签名的发票
check_sdi_status按 IdentificativoSDI 查询提交状态
parse_sdi_notification解析 SDI 通知 XML(RC/NS/MC/NE/EC/SE/DT/MT/AT);已知的废弃代码(如 00327、Gruppo IVA CodiceFiscale)会附带补充说明 reference_note
send_esito_committente向 SDI 发送接受(EC01)或拒绝(EC02)通知
get_sdi_channel_info显示当前 SDI 通道配置

生产环境使用需要获得 AdE 认证。通过环境变量 SDI_CERT_PATH、SDI_CERT_PASSWORD、SDI_ENVIRONMENT(test/production)和 SDI_ENDPOINT_URL(覆盖配置)进行配置。

Conservazione sostitutiva / 归档(5 个工具)
工具描述
archive_invoice归档已签名的发票,并计算 SHA-256 哈希值,保留 10 年
retrieve_archived_invoice按 ID 检索已归档的文档
verify_archive_integrity验证已归档文档的 SHA-256 哈希完整性
list_archived_invoices列出所有已归档的发票
build_pacchetto_versamento构建 PdV ZIP 归档包,以便转交给获得 AgID 认证的保存服务商

根据 AgID circular 65/2014 和 DM 17/06/2014,电子发票必须至少归档 10 年。本地文件系统后端仅用于开发;生产环境需要集成获得 AgID 认证的 conservazione 服务提供商。

使用示例

示例 1:生成完整的 B2B 发票

1. validate_partita_iva_format("01234567897")
   → { "valid": true }

2. generate_progressivo_invio(sequence=1)
   → { "progressivo_invio": "00001" }

3. build_transmission_header(id_paese="IT", id_codice="01234567897",
     progressivo_invio="00001", formato_trasmissione="FPR12",
     codice_destinatario="ABC123")

4. validate_cedente_prestatore(id_paese="IT", id_codice="01234567897",
     denominazione="ACME Srl", regime_fiscale="RF01",
     indirizzo="Via Roma 1", cap="00100", comune="Roma", nazione="IT")

5. validate_cessionario(denominazione="Buyer Srl",
     id_paese="IT", id_codice="98765432109",
     indirizzo="Via Verdi 2", cap="20100", comune="Milano")

6. build_dati_generali(tipo_documento="TD01", data="2026-01-15",
     numero="2026/001", divisa="EUR")

7. add_linea_dettaglio(numero_linea=1, descrizione="Consulenza informatica",
     quantita=8, unita_misura="ORE", prezzo_unitario=100.0,
     prezzo_totale=800.0, aliquota_iva=22.0)

8. compute_totali(linee=[{"prezzo_totale": 800.0, "aliquota_iva": 22.0}])
   → { "totale_fattura": "976.00" }

9. build_dati_pagamento(condizioni_pagamento="TP02", modalita_pagamento="MP05",
     importo_pagamento=976.0, iban="IT60X0542811101000000123456")

10. generate_fattura_xml(...all previous blocks...)
    → { "xml": "<?xml ...", "filename": "IT01234567897_00001.xml" }

11. validate_fattura_xsd(xml_string=...)
    → { "valid": true }

示例 2:包含预扣税的专业发票

check_ritenuta_acconto(imponibile=1000.0, tipo_ritenuta="RT02",
  causale_pagamento="A")
→ {
    "DatiRitenuta": {
      "TipoRitenuta": "RT02",
      "ImportoRitenuta": "200.00",
      "AliquotaRitenuta": "20.00",
      "CausalePagamento": "A"
    },
    "importo_ritenuta": "200.00"
  }

示例 3:查询 VAT 豁免代码

get_natura_codes()
→ codes: [
    { "code": "N3.1", "description": "Non imponibili — esportazioni",
      "legal_ref": "Art. 8 DPR 633/72" },
    { "code": "N6.1", "description": "Inversione contabile — rottami",
      "legal_ref": "Art. 74 c. 7-8 DPR 633/72" },
    ...
  ]

架构

mcp-fattura-elettronica-it (this package, standalone MCP server)
├── ItalyPartyValidator(BasePartyValidator)   ← Partita IVA modulo-10
├── FatturaGenerator(BaseDocumentGenerator)   ← FatturaPA XML v1.2.3
├── FatturaValidator(BaseDocumentValidator)   ← lxml XSD v1.2.3
└── FatturaParser(BaseDocumentParser)         ← lxml xpath

        ↑ extends
mcp-einvoicing-core (shared foundation, installed as dependency)
├── BaseDocumentGenerator / Validator / Parser / PartyValidator
├── InvoiceDocument, InvoiceParty, InvoiceLineItem … (Pydantic)
├── xml_utils, logging_utils, exceptions
└── EInvoicingMCPServer (optional multi-country aggregator)

厂商中立性

此服务端直接实现标准:在本地构建、验证和签署文档。它不是商业开票平台的客户端,您的签名密钥和凭据绝不会离开您自己的基础设施。

发票通过您自己的认证,经由 SDICoop 直接发送至 SdI;整个过程不涉及中间方。

支持的标准

资源链接
FatturaPA 规范fatturapa.gov.it
官方 XSD v1.2.3Schema v1.2.2,Agenzia delle Entrate
Specifiche Tecniche(Allegato A)1.9.1,自 2026-05-15 起生效Agenzia delle Entrate — 与 XSD 分离的文件;不会对其进行更改
XML 命名空间http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2
SDI,Sistema di InterscambioAgenzia delle Entrate
预扣税(ritenuta d'acconto)Art. 25 DPR 600/73,Modello 770

测试

# Install development dependencies
pip install -e ".[dev]"

# Run all tests
pytest tests/ -v

# Run only MCP integration tests
pytest tests/test_mcp_integration.py -v

贡献

欢迎贡献 — 请参阅 CONTRIBUTING.md 了解指南。

其他电子发票 MCP 服务

国家/地区服务
🌍 全球mcp-einvoicing-core
🇧🇪 比利时mcp-einvoicing-be
🇧🇷 巴西mcp-nfe-br
🇫🇷 法国mcp-facture-electronique-fr
🇩🇪 德国mcp-einvoicing-de
🇮🇳 印度mcp-einvoicing-in
🇮🇹 意大利mcp-fattura-elettronica-it
🇲🇽 墨西哥mcp-cfdi-mx
🇵🇱 波兰mcp-ksef-pl
🇸🇬 新加坡mcp-invoicenow-sg
🇪🇸 西班牙mcp-facturacion-electronica-es
🇦🇪 阿联酋mcp-einvoicing-ae

许可证

本项目采用 Apache 2.0 许可证分发。完整详情请参阅 LICENSE 文件。完整版本历史请参阅 CHANGELOG.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。