mcp-einvoicing-core
mcp-einvoicing-core
Topics: mcp mcp-server e-invoicing electronic-invoicing european-invoicing python fastmcp peppol en16931 ubl fatturapa xp-z12-013 xml base-library
Base package for European electronic invoicing MCP servers.
Provides abstract base classes, shared Pydantic models, XML utilities, and an HTTP client
so country-specific packages (mcp-facture-electronique-fr, mcp-fattura-elettronica-it, …)
share a common foundation without duplicating code.
What this package provides
Module | Contents | Used by |
|
| IT (structured invoice generation), future BE/PL/DE/ES |
|
| All country adapters |
|
| IT (extracted verbatim), future XML-based formats |
|
| FR (extracted verbatim), future API-based countries |
|
| All country adapters |
|
| All country adapters |
Installation
pip install mcp-einvoicing-coreThis package has no country-specific dependencies. lxml (needed for XSD validation
in IT and future countries) is declared by each country package individually.
Architecture
mcp-einvoicing-core ← this package
├── BaseDocumentGenerator ← abstract: generate(InvoiceDocument) → str
├── BaseDocumentValidator ← abstract: validate(xml) → DocumentValidationResult
├── BaseDocumentParser ← abstract: parse(xml) → dict
├── BaseLifecycleManager ← abstract: submit/search/get_status (async HTTP)
├── BasePartyValidator ← abstract: validate_seller/buyer/tax_id
├── BaseEInvoicingClient ← concrete: async HTTP + OAuth2/no-auth/token
├── InvoiceDocument (Pydantic) ← shared data model
└── EInvoicingMCPServer ← plugin registry wrapping FastMCP
mcp-facture-electronique-fr ← country adapter (FR)
├── PAConfig(OAuthConfig)
├── FlowClient(BaseEInvoicingClient) ← OAuth2, XP Z12-013 Annex A
├── DirectoryClient(BaseEInvoicingClient) ← OAuth2, XP Z12-013 Annex B
└── FrLifecycleManager(BaseLifecycleManager)
mcp-fattura-elettronica-it ← country adapter (IT)
├── ItalyPartyValidator(BasePartyValidator) ← Partita IVA modulo-10
├── FatturaGenerator(BaseDocumentGenerator) ← FatturaPA XML v1.6.1
├── FatturaValidator(BaseDocumentValidator) ← lxml XSD v1.6.1
└── FatturaParser(BaseDocumentParser) ← lxml xpathPlugin registration pattern
Country packages register their tools on a shared or standalone FastMCP instance:
# Standalone (existing server.py — no changes required)
from fastmcp import FastMCP
mcp = FastMCP(name="mcp-fattura-elettronica-it", instructions="…")
register_header_tools(mcp)
register_body_tools(mcp)
register_global_tools(mcp)
# Multi-country (optional EInvoicingMCPServer)
from mcp_einvoicing_core import EInvoicingMCPServer
server = EInvoicingMCPServer(name="mcp-einvoicing-eu", instructions="…")
server.register_plugin(register_header_tools, "it-header")
server.register_plugin(register_flow_tools, "fr-flow")
server.run()Claude Desktop / Cursor / Kiro compatibility
Existing configurations for mcp-facture-electronique-fr and mcp-fattura-elettronica-it
require no changes: tool names, signatures, environment variables, and entry points
(server:main) are fully preserved.
Roadmap compatibility
Country | Status | Standard | Transport | Inherits | Overrides | Known gaps |
✅ Done | Peppol BIS 3.0 | AS4 / Peppol | all base classes |
| None | |
✅ Done | XP Z12-013 | Hybrid / PPF hub |
|
| None | |
✅ Done | ZUGFeRD / XRechnung | AS4 / Peppol | all base classes |
|
| |
✅ Done | FatturaPA v1.6.1 | Direct / SDI |
| all abstract methods |
| |
✅ Done | KSeF FA(2) | Direct API |
| KSeF session auth flow |
| |
✅ Done | FACeB2B / FacturaE | Direct API | all base classes | mTLS auth |
| |
🇷🇴 RO | 📋 Backlog | RO-UBL (EN 16931) | Direct API / clearance |
| ANAF clearance flow |
|
🇬🇷 GR | 📋 Backlog | myDATA XML | Direct API / reporting |
| myDATA auth + reporting flow | myDATA API client not yet designed |
🇳🇱🇸🇪🇩🇰🇳🇴 Nordics/NL | 📋 Backlog | Peppol BIS 3.0 / UBL | AS4 / Peppol | all base classes |
| Reuses BE AS4 transport layer |
🇵🇹 PT | 📋 Backlog | CIUS-PT + QR Code | Signature / direct |
| Qualified signature + QR injection | Qualified signature integration not designed |
Architectural notes
Transport interface
As the adapter count grows, a TransportInterface abstraction in core will prevent duplication across countries that share the same transport layer:
Transport | Countries |
Direct API (clearance / reporting) | FR, RO, GR, HU |
AS4 / Peppol network | BE, DE, Nordics/NL |
Hybrid / hub | FR (PPF/PDP dual path) |
Germany: 80% reuse from FR
Germany's mandate (active since Jan 2025 for B2B receiving) heavily favors ZUGFeRD/Factur-X — the same PDF-embedded XML model as the French Factur-X profile. The mcp-facture-electronique-fr XML generation and validation logic can be reused with minimal changes, making DE the lowest-effort next adapter after BE.
ViDA / DRR (2030)
By July 2030, all national systems must align with the EU Digital Reporting Requirement for cross-border transactions. Using EN 16931 as the internal InvoiceDocument data model in this core package already future-proofs the project: country adapters translate EN 16931 → local format, not the other way around.
License
Apache 2.0 — see LICENSE.
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cmendezs/mcp-einvoicing-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server