Aller au contenu

mcp-facture-electronique-fr đŸ‡«đŸ‡·

English | Français

License PyPI version Python mcp-facture-electronique-fr MCP server

Serveur MCP Python exposant les APIs standardisĂ©es AFNOR XP Z12-013 pour la rĂ©forme de la facturation Ă©lectronique française (entrĂ©e en vigueur le 1er septembre 2026). Ce projet permet aux agents IA (Claude, IDEs) d’interagir nativement avec l’écosystĂšme des Plateformes Agréées (PA/PDP) en tant que Solution Compatible (SC).


Introduction

Ce package repose sur mcp-einvoicing-core, une bibliothĂšque de base partagĂ©e pour les serveurs MCP de facturation Ă©lectronique europĂ©ens. Elle fournit le client HTTP OAuth2, le cache de jetons, les modĂšles partagĂ©s, les utilitaires de journalisation et la hiĂ©rarchie d’exceptions utilisĂ©s par ce package.

mcp-einvoicing-core est installĂ© automatiquement en tant que dĂ©pendance transitive, aucune Ă©tape supplĂ©mentaire n’est nĂ©cessaire.

Pour les contributeurs : pip install -e ".[dev]" installe automatiquement le package de base depuis PyPI.

Ce serveur fonctionne en mode Solution Compatible (SC) tel que dĂ©fini par la rĂ©forme de la facturation Ă©lectronique française. La SC agit comme intermĂ©diaire entre le systĂšme d’information de l’entreprise et une Plateforme Agréée (PA/PDP). Cela signifie :

  • Pas de validation de profil des donnĂ©es transmises. Le serveur transmet le fichier facture (Factur-X PDF/A-3, UBL 2.1 ou CII XML) tel quel. La validation structurelle et des rĂšgles mĂ©tier (profils NF XP Z12-012, rĂšgles Schematron) est effectuĂ©e par la Plateforme Agréée rĂ©ceptrice, pas par ce serveur.
  • Pas de validation des donnĂ©es de e-reporting au-delĂ  du XSD. Les dĂ©clarations de transactions (Flux 10.1/10.3) et de paiements (Flux 10.2/10.4) sont validĂ©es contre le schĂ©ma XSD DGFiP v3.2 lorsque validate_ereporting_xml est appelĂ©, mais les contrĂŽles mĂ©tier approfondis (ex. cohĂ©rence entre montants dĂ©clarĂ©s et totaux de facture) relĂšvent de la PA.
  • Pas de gĂ©nĂ©ration d’enveloppe PDF/A-3. L’appelant doit produire le fichier Factur-X PDF/A-3 conforme avec le XML CII embarquĂ©. Ce serveur transmet le binaire finalisĂ©.

La Plateforme Agréée effectue la validation finale et peut rejeter les soumissions non conformes avec un code et un message d’erreur.

Installation

Via PyPI (recommandé)

Terminal window
pip install mcp-facture-electronique-fr

Ou sans installation préalable avec uvx :

Terminal window
uvx mcp-facture-electronique-fr

Pour la validation Schematron Factur-X (validate_facturx, nĂ©cessite le moteur XSLT 2.0 / Saxon-HE — voir FR-XSLT2-1 dans Outils disponibles ci-dessous) :

Terminal window
pip install mcp-facture-electronique-fr[xslt2]

Depuis les sources

Terminal window
# Cloner le dépÎt
git clone https://github.com/cmendezs/mcp-facture-electronique-fr.git
cd mcp-facture-electronique-fr
# Créer l'environnement virtuel
python -m venv .venv
source .venv/bin/activate # Sur Windows : .venv\Scripts\activate
# Installation en mode éditable
pip install -e ".[dev]"
Terminal window
# Configuration initiale
cp .env.example .env
# Éditer .env avec vos credentials fournis par votre PA/PDP

Configuration (.env)

Le serveur nĂ©cessite les variables suivantes pour s’authentifier auprĂšs d’une Plateforme Agréée (PA) :

Variable Description
PA_BASE_URL_FLOW URL de base du Flow Service de la PA
PA_BASE_URL_DIRECTORY Obsolùte — n’est plus lue ; voir PPF_ANNUAIRE_BASE_URL
PPF_ANNUAIRE_BASE_URL URL de base du service Annuaire PPF (par dĂ©faut l’URL de production du bloc servers du swagger ; Ă  surcharger pour un test en bac Ă  sable)
PA_CLIENT_ID Client ID OAuth2
PA_CLIENT_SECRET Client Secret OAuth2
PA_TOKEN_URL URL du serveur d’authentification
PA_ORGANIZATION_ID Identifiant d’organisation pour PA multi-tenant (optionnel)
HTTP_TIMEOUT Timeout des requĂȘtes (dĂ©faut : 30s)
PPF_GLOBAL_ID GlobalID de la partie PPF pour le second RecipientTradeParty du CDAR (optionnel ; non défini par défaut, voir submit_lifecycle_status)
PPF_SCHEME_ID schemeID pour PPF_GLOBAL_ID (défaut 0238)
PPF_NAME Nom pour le RecipientTradeParty PPF (défaut PPF)
PPF_ROLE_CODE RoleCode pour le RecipientTradeParty PPF (défaut DFH)

Intégration Claude Desktop

Pour utiliser ce serveur avec Claude, ajoutez cette configuration dans votre fichier claude_desktop_config.json :

{
"mcpServers": {
"facture-electronique-fr": {
"command": "uvx",
"args": ["mcp-facture-electronique-fr"],
"env": {
"PA_BASE_URL_FLOW": "https://api.votre-pdp.fr/flow",
"PPF_ANNUAIRE_BASE_URL": "https://aife.economie.gouv.fr/ppf/annuaire-public/v1",
"PA_CLIENT_ID": "votre-id",
"PA_CLIENT_SECRET": "votre-secret",
"PA_TOKEN_URL": "https://auth.votre-pdp.fr/oauth/token"
}
}
}
}

Intégration Cursor

Cursor supporte les serveurs MCP en stdio. Ajoutez la configuration dans :

  • Global (tous les projets) : ~/.cursor/mcp.json
  • Projet (ce dĂ©pĂŽt uniquement) : .cursor/mcp.json
{
"mcpServers": {
"facture-electronique-fr": {
"command": "uvx",
"args": ["mcp-facture-electronique-fr"],
"env": {
"PA_BASE_URL_FLOW": "https://api.votre-pdp.fr/flow",
"PPF_ANNUAIRE_BASE_URL": "https://aife.economie.gouv.fr/ppf/annuaire-public/v1",
"PA_CLIENT_ID": "votre-id",
"PA_CLIENT_SECRET": "votre-secret",
"PA_TOKEN_URL": "https://auth.votre-pdp.fr/oauth/token"
}
}
}
}

Rechargez la fenĂȘtre Cursor (Ctrl+Shift+P puis Reload Window) pour prendre en compte les changements.

Intégration Kiro

Kiro supporte les serveurs MCP via son fichier de configuration dédié. Deux niveaux disponibles :

  • Global (tous les projets) : ~/.kiro/settings/mcp.json
  • Workspace (ce dĂ©pĂŽt uniquement) : .kiro/settings/mcp.json
{
"mcpServers": {
"facture-electronique-fr": {
"command": "uvx",
"args": ["mcp-facture-electronique-fr"],
"env": {
"PA_BASE_URL_FLOW": "https://api.votre-pdp.fr/flow",
"PPF_ANNUAIRE_BASE_URL": "https://aife.economie.gouv.fr/ppf/annuaire-public/v1",
"PA_CLIENT_ID": "votre-id",
"PA_CLIENT_SECRET": "votre-secret",
"PA_TOKEN_URL": "https://auth.votre-pdp.fr/oauth/token"
},
"disabled": false,
"autoApprove": []
}
}
}

Le fichier est rechargé automatiquement à la sauvegarde. Vous pouvez également ouvrir la configuration via la palette de commandes (Cmd+Shift+P / Ctrl+Shift+P) puis MCP.

Conseil sĂ©curitĂ© Kiro : plutĂŽt que d’écrire les secrets en clair, utilisez la syntaxe "PA_CLIENT_SECRET": "${PA_CLIENT_SECRET}", Kiro rĂ©sout les variables d’environnement shell au dĂ©marrage.

Outils disponibles

Service Domaine Norme Outils MCP
Flow Service Flux de factures et e-reporting Annexe A, v1.2.0 5 outils
Annuaire PPF Annuaire centralisé (SIREN/SIRET/routage/adressage) Swagger PPF v1.11.0 20 outils
Webhook Service Abonnements aux notifications Annexe A, v1.2.0 5 outils
Factur-X Service Validation du XML CII (Schematron) Factur-X 1.09.2 1 outil

Texte mis Ă  jour en juin 2026 (swagger v1.2.0 toujours en vigueur) — l’AFNOR a republiĂ© le texte narratif de la norme XP Z12-013 en juin 2026 sans nouveau swagger ; le serveur continue d’implĂ©menter le contrat d’API v1.2.0.

Remarque (FR-XSLT2-1, rĂ©solue) : les feuilles de style Schematron Factur-X 1.09.2 fournies nĂ©cessitent XSLT 2.0, que lxml/libxslt (XSLT 1.0 uniquement) ne peut pas compiler — mĂȘme cause racine que la limitation DE-XSLT2-1 dĂ©jĂ  rĂ©pertoriĂ©e pour ZUGFeRD. validate_facturx exĂ©cute dĂ©sormais une vĂ©ritable validation Schematron via Saxon-HE. Installez l’extra optionnel xslt2 pour l’activer : pip install mcp-facture-electronique-fr[xslt2]. Sans lui, l’outil se dĂ©grade proprement vers level="unavailable".

Remarque (FR-FLUX11-2026-06, Annuaire PPF) : les outils d’annuaire sont cĂąblĂ©s directement sur le swagger PPF fourni ppf-openapi-annuaire-api-public-1.11.0-openapi.json — c’est une interface spĂ©cifique Ă  la plateforme PPF, pas une abstraction Annexe B agnostique vis-Ă -vis du PDP. Selon la description du swagger lui-mĂȘme, ces endpoints sont susceptibles d’évoluer et nĂ©cessitent la publication prĂ©alable d’une application PISTE avant utilisation.

Flow Service (Gestion des flux)

  • submit_flow : Envoi de factures (Factur-X, UBL, CII) ou donnĂ©es d’e-reporting.
  • search_flows : Recherche multicritĂšres de flux Ă©mis ou reçus selon les filtres de la norme.
  • submit_lifecycle_status : Mise Ă  jour du statut du cycle de vie (ex: Mise Ă  disposition, EncaissĂ©e, Litige).
  • get_flow : RĂ©cupĂ©ration du dĂ©tail complet et des piĂšces jointes d’un flux spĂ©cifique.
  • healthcheck_flow : Test de connectivitĂ© et de disponibilitĂ© de l’API Flow de la PA.

Annuaire PPF

CĂąblĂ©s directement sur le swagger PPF fourni ppf-openapi-annuaire-api-public-1.11.0-openapi.json — voir la remarque ci-dessus.

  • search_company / get_company_by_siren / get_company_by_id_instance : Consultation des personnes morales (SIREN).
  • search_establishment / get_establishment_by_siret / get_establishment_by_id_instance : Consultation des Ă©tablissements (SIRET).
  • search_routing_code / get_routing_code_by_siret_and_code / get_routing_code_by_id_instance / create_routing_code / update_routing_code / replace_routing_code : Gestion des codes routage.
  • search_directory_line / get_directory_line_by_code / get_directory_line / create_directory_line / update_directory_line / replace_directory_line / delete_directory_line : Gestion des lignes d’annuaire, les adresses de rĂ©ception des factures Ă©lectroniques.
  • check_ppf_annuaire_health : VĂ©rification de la disponibilitĂ© du service Annuaire PPF.

Webhook Service (Gestion des webhooks)

  • list_webhooks : Liste de tous les identifiants d’abonnements webhook.
  • get_webhook : RĂ©cupĂ©ration des dĂ©tails complets d’un abonnement webhook.
  • create_webhook : Abonnement aux notifications de flux (filtre par type, direction, rĂšgle de traitement).
  • update_webhook : Mise Ă  jour des paramĂštres techniques d’un webhook (authentification, signature).
  • delete_webhook : DĂ©sabonnement d’un webhook.

Architecture

Le serveur se positionne comme une interface de communication intelligente entre votre agent IA et l’infrastructure technique de la rĂ©forme :

[ ERP / SI Entreprise ] <--> [ Serveur MCP ] <--> [ Plateforme Agréée (PA/PDP) ]
^ |
| v
[ Agent IA (Claude) ] <--- (Standard XP Z12-013)

Normes prises en charge

  • AFNOR XP Z12-012 : Formats de message de facture, profils et statuts de cycle de vie (version 1.4, juin 2026).
  • AFNOR XP Z12-013 : SpĂ©cifications des interfaces de services (version juin 2026 ; contrat d’API v1.2.0).
  • AFNOR XP Z12-014 : Guide d’implĂ©mentation technique des cas d’usage mĂ©tier (version 1.4, juin 2026).
  • RĂ©forme B2B France : Calendrier de dĂ©ploiement obligatoire (2024-2026).

Tests

Terminal window
# Lancer la suite de tests unitaires et d'intégration
pytest tests/ -v

Contribuer

Les contributions sont les bienvenues — voir CONTRIBUTING.md pour les modalitĂ©s.

Autres serveurs MCP de facturation électronique

Pays Serveur
🌍 Global mcp-einvoicing-core
🇧đŸ‡Ș Belgique mcp-einvoicing-be
đŸ‡§đŸ‡· BrĂ©sil mcp-nfe-br
đŸ‡«đŸ‡· France mcp-facture-electronique-fr
đŸ‡©đŸ‡Ș Allemagne mcp-einvoicing-de
🇼đŸ‡č Italie mcp-fattura-elettronica-it
đŸ‡ČđŸ‡œ Mexique mcp-cfdi-mx
đŸ‡”đŸ‡± Pologne mcp-ksef-pl
🇾🇬 Singapour mcp-invoicenow-sg
đŸ‡Ș🇾 Espagne mcp-facturacion-electronica-es
🇩đŸ‡Ș Émirats arabes unis mcp-einvoicing-ae

Licence

Ce projet est distribuĂ© sous licence Apache 2.0. Voir le fichier LICENSE pour plus de dĂ©tails. Pour l’historique complet des versions, voir CHANGELOG.md.