MCP server for French e-invoicing (XP Z12-013). Manages invoices, validation and compliance.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A Python MCP server exposing the standardized AFNOR XP Z12-013 APIs for the French e-invoicing reform (effective September 1, 2026). This project enables AI agents (Claude, IDEs) to interact natively with the Approved Platform (PA/PDP) ecosystem as a Compatible Solution (SC).
This package is built on top of mcp-einvoicing-core, a shared base library for European e-invoicing MCP servers. It provides the OAuth2 HTTP client, token cache, shared models, logging utilities, and exception hierarchy used by this package.
mcp-einvoicing-core is installed automatically as a transitive dependency, no extra step is needed.
For contributors:
pip install -e ".[dev]"installs the base package from PyPI automatically.
This server operates in Compatible Solution (CS) mode as defined by the French e-invoicing reform. The CS acts as an intermediary between the company's information system and an Approved Platform (AP/PDP). This means:
validate_ereporting_xml is called, but deeper business-rule checks (e.g. coherence between declared amounts and invoice totals) are the responsibility of the AP.The Approved Platform performs final validation and may reject non-conformant submissions with an error code and message.
Or without prior installation using uvx:
For Factur-X Schematron validation (validate_facturx, requires the XSLT 2.0 /
Saxon-HE backend — see FR-XSLT2-1 in Available tools below):
The server requires the following variables to authenticate with an Approved Platform (PA):
| Variable | Description |
|---|---|
PA_BASE_URL_FLOW | Base URL of the PA Flow Service |
PA_BASE_URL_DIRECTORY | Deprecated — no longer read; see PPF_ANNUAIRE_BASE_URL |
PPF_ANNUAIRE_BASE_URL | Base URL of the PPF Annuaire service (defaults to the production swagger servers URL; override for sandbox testing) |
PA_CLIENT_ID | OAuth2 Client ID |
PA_CLIENT_SECRET | OAuth2 Client Secret |
PA_TOKEN_URL | Authentication server URL |
PA_ORGANIZATION_ID | Organization identifier for multi-tenant AP (optional) |
HTTP_TIMEOUT | Request timeout (default: 30s) |
PPF_GLOBAL_ID | PPF party GlobalID for the CDAR second RecipientTradeParty (optional; unset by default, see submit_lifecycle_status) |
PPF_SCHEME_ID | schemeID for PPF_GLOBAL_ID (default 0238) |
PPF_NAME | Name for the PPF RecipientTradeParty (default PPF) |
PPF_ROLE_CODE | RoleCode for the PPF RecipientTradeParty (default DFH) |
To use this server with Claude, add this configuration to your claude_desktop_config.json file:
Cursor supports MCP servers via stdio. Add the configuration in:
~/.cursor/mcp.json.cursor/mcp.jsonReload the Cursor window (Ctrl+Shift+P then Reload Window) to apply the changes.
Kiro supports MCP servers via its dedicated configuration file. Two levels are available:
~/.kiro/settings/mcp.json.kiro/settings/mcp.jsonThe file is automatically reloaded on save. You can also open the config via the command palette (Cmd+Shift+P / Ctrl+Shift+P) then MCP.
Kiro security tip: rather than writing secrets in plain text, use the syntax
"PA_CLIENT_SECRET": "${PA_CLIENT_SECRET}", Kiro resolves shell environment variables at startup.
| Service | Domain | Standard | MCP Tools |
|---|---|---|---|
| Flow Service | Invoice flows and e-reporting | Annex A, v1.2.0 | 5 tools |
| PPF Annuaire (directory) | Central directory (SIREN/SIRET/routing/addressing) | PPF swagger v1.11.0 | 20 tools |
| Webhook Service | Event notification subscriptions | Annex A, v1.2.0 | 5 tools |
| Factur-X Service | CII XML validation (Schematron) | Factur-X 1.09.2 | 1 tool |
Text bumped to June 2026 (v1.2.0 swagger current) — AFNOR resupplied the XP Z12-013 narrative text in June 2026 without an updated swagger; the server continues to implement the v1.2.0 wire contract.
Note (FR-XSLT2-1, resolved): the bundled Factur-X 1.09.2 Schematron stylesheets require XSLT 2.0, which
lxml/libxslt(XSLT 1.0 only) cannot compile — the same root cause as theDE-XSLT2-1gap tracked for ZUGFeRD.validate_facturxnow runs real Schematron validation via Saxon-HE. Install the optionalxslt2extra for this to work:pip install mcp-facture-electronique-fr[xslt2]. Without it, the tool degrades gracefully tolevel="unavailable".
Note (FR-FLUX11-2026-06, PPF Annuaire): the directory tools are wired directly against the bundled PPF-platform swagger
ppf-openapi-annuaire-api-public-1.11.0-openapi.json— this is a PPF-platform-specific interface, not a PDP-agnostic Annex B abstraction. Per the swagger's own description, these endpoints are subject to change and require prior PISTE application publication before use.
submit_flow: Submit invoices (Factur-X, UBL, CII) or e-reporting data.search_flows: Multi-criteria search of sent or received flows using the standard filters.submit_lifecycle_status: Update the lifecycle status (e.g., Made available, Collected, Dispute).get_flow: Retrieve the full details and attachments of a specific flow.healthcheck_flow: Test the connectivity and availability of the PA Flow API.No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/facture-lectronique-france)<a href="https://allmcps.com/mcp/facture-lectronique-france"><img src="https://allmcps.com/api/badge/facture-lectronique-france?style=directory" alt="Facture Électronique France on AllMCPs" /></a>