Server data from the Official MCP Registry
Spanish e-invoicing MCP server: VERI*FACTU, Facturae/FACe, SII, Crea y Crece B2B.
Spanish e-invoicing MCP server: VERI*FACTU, Facturae/FACe, SII, Crea y Crece B2B.
This is a legitimate Spanish e-invoicing MCP server with proper authentication patterns and reasonable permissions for its stated purpose. However, critical concerns include incomplete implementation (many tools marked 'pending'), unverified certificate handling (passwords accepted as parameters and passed to external services), unvalidated XML endpoints, and lack of production-ready validation. Several functions lack input sanitization, and MTLS auth is noted as not yet implemented in the core dependency. The server's alpha status and numerous regulatory uncertainty warnings (โ ๏ธ) indicate this should not be used with production data. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.
3 files analyzed ยท 15 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: AEAT_ENV
Environment variable: AEAT_CERTIFICATE_PATH
Environment variable: AEAT_CERTIFICATE_PASSWORD
Environment variable: AEAT_NIF
Environment variable: FACE_ENV
Environment variable: FACE_CLIENT_ID
Environment variable: FACE_CLIENT_SECRET
Environment variable: LOG_LEVEL
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-cmendezs-mcp-facturacion-electronica-es": {
"env": {
"AEAT_ENV": "your-aeat-env-here",
"AEAT_NIF": "your-aeat-nif-here",
"FACE_ENV": "your-face-env-here",
"LOG_LEVEL": "your-log-level-here",
"FACE_CLIENT_ID": "your-face-client-id-here",
"FACE_CLIENT_SECRET": "your-face-client-secret-here",
"AEAT_CERTIFICATE_PATH": "your-aeat-certificate-path-here",
"AEAT_CERTIFICATE_PASSWORD": "your-aeat-certificate-password-here"
},
"args": [
"mcp-facturacion-electronica-es"
],
"command": "uvx"
}
}
}From the project's GitHub README.
mcp-facturacion-electronica-es is an MCP (Model Context Protocol) server specialized
in Spanish e-invoicing. It provides tools to generate, validate, and submit electronic
invoices under the six coexisting systems in Spain: VERI*FACTU, Facturae/FACe,
SII, TicketBAI (Basque Country), NaTicket (Navarre), and the B2B obligations of Ley 18/2022
"Crea y Crece". The server is built on mcp-einvoicing-core, the shared base library
used by mcp-facture-electronique-fr (France, XP Z12-013) and mcp-einvoicing-be
(Belgium, Peppol BIS 3.0).
Spain operates one of the most complex e-invoicing landscapes in Europe, with six overlapping systems that apply depending on taxpayer size, sector, and region. VERI*FACTU (Royal Decree 1007/2023, Order HAC/1177/2024) is the forthcoming mandatory real-time invoice registry for non-SII taxpayers, with hard deadlines in January and July 2027 (RD-ley 15/2025). SII (Suministro Inmediato de Informacion, Immediate Information Supply) already applies to large taxpayers (>6M EUR turnover). The Basque Country runs TicketBAI and Navarre runs NaTicket, both independent of the national AEAT framework. B2G invoicing via Facturae XML on the FACe portal has been mandatory since 2015 (Ley 25/2013).
This package is built on mcp-einvoicing-core,
the shared base library used by all MCP servers in the mcp-einvoicing ecosystem. It provides
common models, validation abstractions, XML utilities, and the exception hierarchy.
mcp-einvoicing-core is installed automatically as a transitive dependency, no additional
steps are required.
The Spanish e-invoicing ecosystem has six coexisting systems with distinct scopes,
formats, and timelines. VERI*FACTU introduces tamper-proof chained invoice records
submitted in real time to the AEAT (Agencia Estatal de Administracion Tributaria),
applicable to most businesses from 2027 (RD-ley 15/2025). SII is already mandatory for
large taxpayers under a 4-day communication window. Facturae XML with XAdES-EPES signing
covers all B2G invoicing through the FACe portal. The Basque Country applies TicketBAI
independently, with three provincial authorities each maintaining their own XSD schemas and
endpoints. Navarre operates NaTicket. The Ley Crea y Crece mandates B2B e-invoicing for
all businesses, with the format still pending implementing regulations. Regime detection
based on tax domicile and turnover is a prerequisite to all other operations: use
es__detect_regional_regime first.
| System | Scope | Format | Mandatory from | Status |
|---|---|---|---|---|
| VERI*FACTU | All non-SII businesses | Proprietary XML (XSD v1.0 HAC/1177/2024) | IS: Jan 2027 / Others: Jul 2027 (RD-ley 15/2025) | Implemented (pending regulatory confirmation) |
| Facturae / FACe | B2G (public sector) | Facturae 3.2.2 + XAdES-EPES | Mandatory since 2015 (Ley 25/2013) | Implemented (pending regulatory confirmation) |
| SII | Turnover >6M EUR, VAT groups, REDEME | XML SOAP/REST AEAT | Already mandatory (RD 596/2016) | Implemented (pending regulatory confirmation) |
| TicketBAI | Araba, Gipuzkoa, Bizkaia | Provincial XML + XAdES + QR | By province, 2022-2023 | Removed from scope (v0.2.0) |
| Crea y Crece (B2B) | All businesses (threshold pending) | UBL 2.1 or Facturae 3.2.2 (EN 16931) | Implementing regulations pending | Implemented (pending regulatory confirmation) |
| NaTicket | Navarre | Foral XML + signature | Foral mandate (phased rollout) | Partial (via es__detect_regional_regime) |
SII / VERI*FACTU mutual exclusion (Real Decreto 254/2025): Taxpayers enrolled in SII are exempt from VERI*FACTU. Use
es__check_b2b_mandate_applicabilitybefore generating any record.
es__generate_verifactu_recordGenerates a tamper-proof invoice record (Orden HAC/1177/2024) with SHA-256 Huella
chaining that links it to the previous record.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice | InvoiceDocument | Yes | Core invoice model (seller, buyer, lines, VAT) |
previous_hash | string | No | SHA-256 Huella of the preceding record (null = first in chain) |
software_id | string | Yes | IDSistemaInformatico of the certified software |
software_nif | string | Yes | NIF of the software manufacturer |
invoice_type | string | Yes | F1, F2, R1-R5 or F3 |
{
"tool": "es__generate_verifactu_record",
"arguments": {
"invoice": { "date": "2025-03-15", "number": "2025-0042", "currency": "EUR",
"seller": { "tax_id": { "country_code": "ES", "identifier": "B12345678" }, "name": "Empresa SL" },
"buyer": { "tax_id": { "country_code": "ES", "identifier": "A98765432" }, "name": "Cliente SA" },
"lines": [{ "line_number": 1, "description": "Servicios", "quantity": 10, "unit_price": 100.00, "vat_rate": 21.0 }]
},
"previous_hash": "3C4A9B...", "software_id": "SW-001", "software_nif": "B87654321", "invoice_type": "F1"
}
}
โ ๏ธ Pending regulatory confirmation: XSD v1.0 (HAC/1177/2024) not yet validated against the AEAT test environment.
es__validate_verifactu_recordValidates a VERI*FACTU XML record against the official XSD published with Orden HAC/1177/2024 (BOE-A-2024-22138).
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Raw VERI*FACTU XML record |
schema_version | string | No | Schema version (default: "1.0") |
{ "tool": "es__validate_verifactu_record", "arguments": { "xml": "<RegistroFacturacion>...</RegistroFacturacion>" } }
โ ๏ธ Pending regulatory confirmation
es__submit_verifactu_to_aeatSubmits a signed VERI*FACTU record to the AEAT real-time endpoint via MTLS
(FNMT-RCM Class 1 certificate). Respects AEAT_ENV=sandbox|production.
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Signed VERI*FACTU XML |
nif | string | Yes | Sender NIF |
{ "tool": "es__submit_verifactu_to_aeat", "arguments": { "xml": "<RegistroFacturacion>...</RegistroFacturacion>", "nif": "B12345678" } }
โ ๏ธ Pending regulatory confirmation:
AuthMode.MTLSis not yet implemented inmcp-einvoicing-core; tracked in the core gaps backlog.
es__generate_qr_verifactuGenerates the mandatory VERI*FACTU QR code (HAC/1177/2024 Art. 10) as a base64-encoded PNG.
Encodes the AEAT verification URL with the text "Factura verificable en la sede
electronica de la AEAT". Candidate for promotion to mcp-einvoicing-core (QR generation).
| Parameter | Type | Required | Description |
|---|---|---|---|
nif | string | Yes | Issuer NIF |
invoice_number | string | Yes | NumSerieFactura |
invoice_date | string | Yes | FechaExpedicionFactura (YYYY-MM-DD) |
total_amount | number | Yes | Invoice total including VAT |
size_px | integer | No | QR size in pixels (default: 200) |
{ "tool": "es__generate_qr_verifactu", "arguments": { "nif": "B12345678", "invoice_number": "2025-0042", "invoice_date": "2025-03-15", "total_amount": 1210.00 } }
โ ๏ธ Pending regulatory confirmation
es__cancel_verifactu_recordGenerates a VERI*FACTU cancellation record (IndicadorAnulacion=S, TipoHuella=01)
chained to the current fingerprint sequence.
| Parameter | Type | Required | Description |
|---|---|---|---|
original_invoice_number | string | Yes | NumSerieFactura to cancel |
original_invoice_date | string | Yes | FechaExpedicionFactura (YYYY-MM-DD) |
issuer_nif | string | Yes | Issuer NIF |
previous_hash | string | Yes | Huella of the last record in the chain |
{ "tool": "es__cancel_verifactu_record", "arguments": { "original_invoice_number": "2025-0042", "original_invoice_date": "2025-03-15", "issuer_nif": "B12345678", "previous_hash": "3C4A9B..." } }
โ ๏ธ Pending regulatory confirmation
es__generate_facturae_xmlGenerates a Facturae 3.2.2 compliant XML invoice for B2G submission. Uses
InvoiceDocument from mcp-einvoicing-core.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice | InvoiceDocument | Yes | Core invoice model |
schema_version | string | No | Facturae schema version (default: "3.2.2") |
{ "tool": "es__generate_facturae_xml", "arguments": { "invoice": { "date": "2025-03-15", "number": "2025-0042", "seller": { "tax_id": { "country_code": "ES", "identifier": "B12345678" }, "name": "Proveedor SL" }, "buyer": { "tax_id": { "country_code": "ES", "identifier": "S2800000D" }, "name": "Ayuntamiento de Madrid" }, "lines": [{ "line_number": 1, "description": "Suministro", "quantity": 5, "unit_price": 200.00, "vat_rate": 21.0 }] } } }
โ ๏ธ Pending regulatory confirmation
es__sign_facturae_xadesApplies an XAdES-EPES digital signature (ETSI EN 319 132-1) to a Facturae XML document.
Candidate for promotion to mcp-einvoicing-core (XAdES signing, score 3/3).
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Unsigned Facturae XML |
cert_path | string | Yes | Path to PKCS#12 certificate (.p12 / .pfx) |
cert_password | string | Yes | Certificate password |
signature_policy_id | string | No | Signature policy OID (default: Facturae standard) |
{ "tool": "es__sign_facturae_xades", "arguments": { "xml": "<Facturae>...</Facturae>", "cert_path": "/certs/empresa.p12", "cert_password": "s3cr3t" } }
โ ๏ธ Pending regulatory confirmation
es__submit_to_faceSubmits a signed Facturae XML to FACe (Punto General de Entrada de Facturas Electronicas)
via the FACe B2B REST API v2. Requires OAuth2 (FACE_CLIENT_ID / FACE_CLIENT_SECRET).
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Facturae XML with XAdES signature |
administrative_unit | string | Yes | FACe UnidadTramitadora code |
accounting_office | string | Yes | FACe OficinasContables code |
management_body | string | Yes | FACe OrganoGestor code |
{ "tool": "es__submit_to_face", "arguments": { "xml": "<Facturae>...</Facturae>", "administrative_unit": "U00000038", "accounting_office": "U00000038", "management_body": "U00000038" } }
โ ๏ธ Pending regulatory confirmation
es__get_face_invoice_statusQueries the processing status of an invoice on FACe. Returns standard status codes: 1200 (Registered), 2400 (Acknowledged), 3100 (Rejected), 4100 (Paid).
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice_id | string | Yes | FACe registration number |
{ "tool": "es__get_face_invoice_status", "arguments": { "invoice_id": "FAC-2025-00012345" } }
โ ๏ธ Pending regulatory confirmation
es__validate_facturae_schemaValidates a Facturae XML against the official Facturae 3.2.2 XSD using lxml. Returns
structured errors with XPath locations.
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Facturae XML to validate |
schema_version | string | No | Schema version (default: "3.2.2") |
{ "tool": "es__validate_facturae_schema", "arguments": { "xml": "<Facturae>...</Facturae>" } }
โ ๏ธ Pending regulatory confirmation
es__build_sii_invoice_recordBuilds an AEAT SII XML record (issued FacturaExpedida or received FacturaRecibida)
conforming to the AEAT SII technical guide v3.0 (April 2024). Supports TipoComunicacion A0/A1/A4.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice | InvoiceDocument | Yes | Core invoice model |
record_type | string | Yes | "issued" or "received" |
communication_type | string | No | "A0" new (default), "A1" modification, "A4" cancellation |
{ "tool": "es__build_sii_invoice_record", "arguments": { "invoice": { "date": "2025-03-15", "number": "2025-0042" }, "record_type": "issued", "communication_type": "A0" } }
โ ๏ธ Pending regulatory confirmation
es__submit_sii_batchSubmits a batch of invoices (up to 10,000 records) to the AEAT SII SOAP endpoint. Requires MTLS.
| Parameter | Type | Required | Description |
|---|---|---|---|
records | array | Yes | List of XML strings from es__build_sii_invoice_record |
record_type | string | Yes | "issued" or "received" |
fiscal_year | integer | Yes | Fiscal year (YYYY) |
{ "tool": "es__submit_sii_batch", "arguments": { "records": ["<RegistroLRFacturasEmitidas>...</RegistroLRFacturasEmitidas>"], "record_type": "issued", "fiscal_year": 2025 } }
โ ๏ธ Pending regulatory confirmation:
AuthMode.MTLSis not yet implemented inmcp-einvoicing-core.
es__query_sii_statusQueries the status of a submitted SII batch via ConsultaFactInformadasEmitidas or
ConsultaFactInformadasRecibidas.
| Parameter | Type | Required | Description |
|---|---|---|---|
batch_id | string | Yes | Batch reference returned by es__submit_sii_batch |
record_type | string | Yes | "issued" or "received" |
{ "tool": "es__query_sii_status", "arguments": { "batch_id": "SII-BATCH-20250315-001", "record_type": "issued" } }
โ ๏ธ Pending regulatory confirmation
es__generate_sii_correctionGenerates an SII modification (A1) or cancellation (A4) record referencing the original
invoice via IDFactura. The credit note builder is a candidate for mcp-einvoicing-core
(score 3/3).
| Parameter | Type | Required | Description |
|---|---|---|---|
original_invoice | InvoiceDocument | Yes | Invoice being corrected |
corrected_invoice | InvoiceDocument | No | Corrected data (null for A4) |
correction_type | string | Yes | "A1" or "A4" |
record_type | string | Yes | "issued" or "received" |
{ "tool": "es__generate_sii_correction", "arguments": { "original_invoice": { "number": "2025-0042" }, "correction_type": "A1", "record_type": "issued" } }
โ ๏ธ Pending regulatory confirmation
es__generate_ticketbai_xmlGenerates a TicketBAI XML invoice with XAdES signature and HuellaTBAI chain. Automatically
selects the correct provincial XSD: Araba v1.2, Gipuzkoa v1.2, Bizkaia v2.1.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice | InvoiceDocument | Yes | Core invoice model |
province | string | Yes | "araba", "gipuzkoa" or "bizkaia" |
previous_hash | string | No | HuellaTBAI of the preceding record |
software_license | string | Yes | TicketBAI software license key |
cert_path | string | Yes | Signing certificate path |
cert_password | string | Yes | Certificate password |
{ "tool": "es__generate_ticketbai_xml", "arguments": { "invoice": { "date": "2025-03-15", "number": "2025-0042" }, "province": "gipuzkoa", "software_license": "TBAI-GI-12345", "cert_path": "/certs/empresa.p12", "cert_password": "s3cr3t" } }
โ ๏ธ Pending regulatory confirmation: the three provincial XSDs must be packaged separately; cross-province validation is not permitted.
es__submit_ticketbaiSubmits a TicketBAI XML record to the corresponding Basque provincial authority. The endpoint
is automatically routed: Araba (batuz.eus), Gipuzkoa (tbai.egoitza.gipuzkoa.eus),
Bizkaia (www.bizkaia.eus/ogasun).
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Signed TicketBAI XML |
province | string | Yes | "araba", "gipuzkoa" or "bizkaia" |
nif | string | Yes | Sender NIF |
{ "tool": "es__submit_ticketbai", "arguments": { "xml": "<T:TicketBai>...</T:TicketBai>", "province": "bizkaia", "nif": "B12345678" } }
โ ๏ธ Pending regulatory confirmation
es__validate_ticketbai_schemaValidates a TicketBAI XML document against the correct provincial XSD. The schemas are not interchangeable between provinces.
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | TicketBAI XML |
province | string | Yes | "araba", "gipuzkoa" or "bizkaia" |
{ "tool": "es__validate_ticketbai_schema", "arguments": { "xml": "<T:TicketBai>...</T:TicketBai>", "province": "gipuzkoa" } }
โ ๏ธ Pending regulatory confirmation
es__generate_b2b_einvoice_esGenerates a B2B invoice conforming to EN 16931 in UBL 2.1 or Facturae 3.2.2 format per Ley 18/2022.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice | InvoiceDocument | Yes | Core invoice model |
format | string | No | "ubl" (default) or "facturae" |
{ "tool": "es__generate_b2b_einvoice_es", "arguments": { "invoice": { "date": "2025-03-15", "number": "2025-0042" }, "format": "ubl" } }
โ ๏ธ Pending regulatory confirmation: the B2B mandate implementing regulations have not been published yet.
es__check_b2b_mandate_applicabilityDetermines the applicable regime (VERI*FACTU, SII, TicketBAI, NaTicket) based on turnover, province code, and SII enrollment. Applies the mutual exclusion logic of Real Decreto 254/2025.
| Parameter | Type | Required | Description |
|---|---|---|---|
annual_turnover_eur | number | Yes | Annual VAT turnover in EUR |
tax_address_province_code | string | Yes | INE province code (e.g., "28" Madrid) |
enrolled_in_sii | boolean | No | SII enrollment (default: false) |
entity_type | string | No | "IS" (Impuesto sobre Sociedades) or "IRPF" |
{ "tool": "es__check_b2b_mandate_applicability", "arguments": { "annual_turnover_eur": 2500000, "tax_address_province_code": "28", "enrolled_in_sii": false, "entity_type": "IS" } }
โ ๏ธ Pending regulatory confirmation
es__detect_regional_regimeDetects the applicable e-invoicing regime based on the INE province code.
Returns VERIFACTU, TICKETBAI, NATICKET, or VERIFACTU+SII.
Basque provinces: 01 Araba, 20 Gipuzkoa, 48 Bizkaia. Navarre: 31.
All others return VERIFACTU. Candidate for promotion to mcp-einvoicing-core.
| Parameter | Type | Required | Description |
|---|---|---|---|
province_code | string | Yes | Two-digit INE province code |
enrolled_in_sii | boolean | No | SII enrollment (default: false) |
{ "tool": "es__detect_regional_regime", "arguments": { "province_code": "20", "enrolled_in_sii": false } }
โ ๏ธ Pending regulatory confirmation
es__get_compliance_statusReturns the current mandate deadlines and operating system for a business profile.
Reflects RD-ley 15/2025, subject to changes by subsequent legislation.
Candidate for promotion to mcp-einvoicing-core (generic deadline registry).
| Parameter | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | "IS" or "IRPF" |
province_code | string | Yes | INE province code |
annual_turnover_eur | number | No | For SII threshold check (6M EUR) |
enrolled_in_sii | boolean | No | SII enrollment |
{ "tool": "es__get_compliance_status", "arguments": { "entity_type": "IS", "province_code": "28", "annual_turnover_eur": 1000000, "enrolled_in_sii": false } }
โ ๏ธ Pending regulatory confirmation
es__parse_aeat_responseParses and normalizes an AEAT XML response (VERI*FACTU or SII) into structured JSON.
Extracts EstadoEnvio (Correcto/AceptadoConErrores/Incorrecto), CSV
(secure verification code), and error details. Candidate for promotion to
mcp-einvoicing-core (generic vendor XML response parser, score 2/3).
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | Yes | Raw AEAT XML response |
response_type | string | No | "verifactu" (default) or "sii" |
{ "tool": "es__parse_aeat_response", "arguments": { "xml": "<RespuestaRegFactuSistemaFacturacion>...</RespuestaRegFactuSistemaFacturacion>", "response_type": "verifactu" } }
โ ๏ธ Pending regulatory confirmation
pip install mcp-facturacion-electronica-es
Without prior installation, using uvx:
uvx mcp-facturacion-electronica-es
git clone https://github.com/cmendezs/mcp-facturacion-electronica-es.git
cd mcp-facturacion-electronica-es
uv sync --all-extras
{
"mcpServers": {
"facturacion-es": {
"command": "uvx",
"args": ["mcp-facturacion-electronica-es"],
"env": {
"AEAT_ENV": "sandbox",
"AEAT_CERTIFICATE_PATH": "/path/to/cert.p12",
"AEAT_CERTIFICATE_PASSWORD": "certificate-password"
}
}
}
}
All configuration is done through environment variables or a .env file.
| Variable | Description | Required |
|---|---|---|
AEAT_ENV | sandbox or production | Yes |
AEAT_CERTIFICATE_PATH | Path to FNMT-RCM PKCS#12 certificate | For submission |
AEAT_CERTIFICATE_PASSWORD | Certificate password | For submission |
AEAT_NIF | Taxpayer NIF | For submission |
| Variable | Description | Required |
|---|---|---|
FACE_ENV | sandbox or production | Yes |
FACE_CLIENT_ID | OAuth2 client ID | Yes |
FACE_CLIENT_SECRET | OAuth2 client secret | Yes |
| Variable | Description | Required |
|---|---|---|
TICKETBAI_ENV | sandbox or production | Yes |
TICKETBAI_CERTIFICATE_PATH | Provincial signing certificate path | Yes |
TICKETBAI_CERTIFICATE_PASSWORD | Certificate password | Yes |
mcp-einvoicing-core)| Variable | Description | Default |
|---|---|---|
LOG_LEVEL | DEBUG, INFO, WARNING, ERROR | INFO |
mcp-facturacion-electronica-es is a country adapter within the mcp-einvoicing family,
built on mcp-einvoicing-core.
mcp-einvoicing-core (v0.1.0+)
โ BaseDocumentGenerator, BaseDocumentValidator, BaseLifecycleManager
โ InvoiceDocument, InvoiceParty, InvoiceLineItem, VATSummary, PaymentTerms
โ EInvoicingError, ValidationError, XSDValidationError, PlatformError
โ BaseEInvoicingClient, OAuthConfig, AuthMode (OAUTH2 / BEARER / MTLS)
โ get_logger, format_amount, xml_element, format_error
โ
โโโ mcp-facture-electronique-fr (France โ XP Z12-013, Chorus Pro)
โโโ mcp-einvoicing-be (Belgium โ Peppol BIS 3.0, PINT-BE, Mercurius)
โโโ mcp-facturacion-electronica-es (Spain โ this package)
โ โโโ verifactu/ record generation, hash chain, QR, cancellation
โ โโโ facturae/ Facturae 3.2.2 XML, XAdES-EPES, FACe submission
โ โโโ sii/ batch building, AEAT SOAP, corrections
โ โโโ ticketbai/ XML generation, provincial routing, validation
โ โโโ b2b/ UBL/Facturae Crea y Crece, mandate detector
โ โโโ utils/ regime detection, AEAT response parser, deadline registry
โโโ mcp-fattura-elettronica-it (Italy โ FatturaPA / SDI)
โโโ mcp-ksef-pl (Poland โ KSeF / FA(2))
Notice: Mandate dates reflect RD-ley 15/2025 (December 2025) and are subject to changes by subsequent legislation or AEAT administrative instructions. This software does not constitute legal or tax advice.
| System | Targets | Deadline |
|---|---|---|
| SII | Turnover >6M EUR / VAT groups / REDEME | Already mandatory (RD 596/2016) |
| Facturae/FACe | All B2G suppliers | Already mandatory (Ley 25/2013) |
| TicketBAI | All businesses in the Basque Country | Phased rollout by sector 2022-2023 |
| VERI*FACTU | IS (Impuesto sobre Sociedades) taxpayers | January 2027 (RD-ley 15/2025) |
| VERI*FACTU | IRPF + other non-SII | July 2027 (RD-ley 15/2025) |
| Crea y Crece B2B | All businesses | Pending, implementing regulations not yet published |
All AEAT submission endpoints require an FNMT-RCM certificate or one from an accredited CA.
The AEAT provides a free test environment at prewww2.aeat.es.
# Install development dependencies
uv sync --all-extras
# Run the full test suite
uv run pytest tests/ -v
# With coverage report
uv run pytest --cov=mcp_facturacion_electronica_es --cov-report=term-missing
Open an issue before starting significant work. For reusable utility logic across country
adapters, open a core-promotion issue in mcp-einvoicing-core before implementing it:
use the scoring rubric (3 = MUST promote, 2 = SHOULD, 1 = keep here).
git clone https://github.com/cmendezs/mcp-facturacion-electronica-es.git
cd mcp-facturacion-electronica-es
uv sync --all-extras
uv run pytest
make audit
All regulatory assertions must reference a specific BOE publication, an official XSD version,
or an AEAT technical guide version. Do not remove
โ ๏ธ Pending regulatory confirmation without linking the verified source in the
PR description.
| Country | Server |
|---|---|
| ๐ Global | mcp-einvoicing-core |
| ๐ง๐ช Belgium | mcp-einvoicing-be |
| ๐ง๐ท Brazil | mcp-nfe-br |
| ๐ซ๐ท France | mcp-facture-electronique-fr |
| ๐ฉ๐ช Germany | mcp-einvoicing-de |
| ๐ฎ๐น Italy | mcp-fattura-elettronica-it |
| ๐ต๐ฑ Poland | mcp-ksef-pl |
| ๐ช๐ธ Spain | mcp-facturacion-electronica-es |
Released under the Apache License 2.0. Copyright 2025-2026 Christophe Mendez and contributors.
Be the first to review this server!
by Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol ยท Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.