Skip to main content
Glama

mcp-einvoicing-core

License PyPI version Python

Темы: mcp mcp-server e-invoicing electronic-invoicing european-invoicing python fastmcp peppol en16931 ubl fatturapa xp-z12-013 xml base-library

Базовый пакет для европейских MCP-серверов электронного документооборота.

Предоставляет абстрактные базовые классы, общие модели Pydantic, утилиты для XML и HTTP-клиент, чтобы пакеты для конкретных стран (mcp-facture-electronique-fr, mcp-fattura-elettronica-it и др.) имели общую основу без дублирования кода.


Что предоставляет этот пакет

Модуль

Содержимое

Используется в

models.py

InvoiceParty, InvoiceLineItem, VATSummary, PaymentTerms, InvoiceDocument, DocumentValidationResult

IT (генерация структурированных счетов), в будущем BE/PL/DE/ES

base_server.py

BaseDocumentGenerator, BaseDocumentValidator, BaseDocumentParser, BaseLifecycleManager, BasePartyValidator, EInvoicingMCPServer

Все адаптеры стран

xml_utils.py

format_amount, format_quantity, validate_date_iso, validate_iban, xml_element, xml_optional, format_error, filter_empty_values

IT (извлечено дословно), будущие форматы на основе XML

http_client.py

TokenCache, OAuthConfig, BaseEInvoicingClient (OAuth2 + без авторизации)

FR (извлечено дословно), будущие API-ориентированные страны

exceptions.py

EInvoicingError, ValidationError, PartyValidationError, XSDValidationError, DocumentGenerationError, AuthenticationError, PlatformError

Все адаптеры стран

logging_utils.py

setup_logging, get_logger

Все адаптеры стран

Related MCP server: mcp-facture-electronique-fr

Установка

pip install mcp-einvoicing-core

Этот пакет не имеет зависимостей, специфичных для конкретных стран. lxml (необходим для XSD-валидации в IT и будущих странах) объявляется каждым пакетом страны отдельно.

Архитектура

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 xpath

Шаблон регистрации плагинов

Пакеты стран регистрируют свои инструменты в общем или отдельном экземпляре FastMCP:

# 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

Существующие конфигурации для mcp-facture-electronique-fr и mcp-fattura-elettronica-it не требуют изменений: имена инструментов, сигнатуры, переменные окружения и точки входа (server:main) полностью сохранены.

Совместимость с дорожной картой

Страна

Статус

Стандарт

Транспорт

Наследует

Переопределяет

Известные пробелы

🇫🇷 FR

✅ Готово

XP Z12-013

Гибрид / PPF hub

BaseEInvoicingClient, BaseLifecycleManager

submit_lifecycle_status, healthcheck

Нет

🇮🇹 IT

✅ Готово

FatturaPA v1.6.1

Прямой / SDI

BaseDocumentGenerator, BaseDocumentValidator, BaseDocumentParser, BasePartyValidator

все абстрактные методы

to_invoice_document() еще не реализован

🇧🇪 BE

✅ Готово

Peppol BIS 3.0

AS4 / Peppol

все базовые классы

generate() → UBL 2.1, validate() → Schematron EN16931

Нет

🇵🇱 PL

🔄 В процессе

KSeF FA(2)

Прямой API

BaseDocumentGenerator, BaseDocumentValidator, BaseLifecycleManager

Поток сессионной авторизации KSeF

Режим авторизации MTLS еще не реализован

🇩🇪 DE

🔄 В процессе

ZUGFeRD / XRechnung

AS4 / Peppol

все базовые классы

generate() возвращает байты PDF (base64)

Неоднозначность типа возвращаемого значения generate(): str против bytes

🇪🇸 ES

🔄 В процессе

FACeB2B / FacturaE

Прямой API

все базовые классы

mTLS авторизация

Режим авторизации MTLS еще не реализован

🇷🇴 RO

📋 Бэклог

RO-UBL (EN 16931)

Прямой API / клиринг

BaseDocumentGenerator, BaseLifecycleManager

Поток клиринга ANAF

Нужен вариант BaseSchematronValidator

🇬🇷 GR

📋 Бэклог

myDATA XML

Прямой API / отчетность

BaseEInvoicingClient, BaseLifecycleManager

Поток авторизации + отчетности myDATA

Клиент API myDATA еще не спроектирован

🇳🇱🇸🇪🇩🇰🇳🇴 Северные страны/NL

📋 Бэклог

Peppol BIS 3.0 / UBL

AS4 / Peppol

все базовые классы

generate() → UBL 2.1, validate() → Schematron

Повторно использует транспортный уровень BE AS4

🇵🇹 PT

📋 Бэклог

CIUS-PT + QR-код

Подпись / прямой

BaseDocumentGenerator, BaseDocumentValidator

Квалифицированная подпись + внедрение QR

Интеграция квалифицированной подписи не спроектирована

Архитектурные заметки

Интерфейс транспорта

По мере роста количества адаптеров абстракция TransportInterface в ядре предотвратит дублирование в странах, использующих один и тот же транспортный уровень:

Транспорт

Страны

Прямой API (клиринг / отчетность)

FR, RO, GR, HU

AS4 / Сеть Peppol

BE, DE, Северные страны/NL

Гибрид / хаб

FR (двойной путь PPF/PDP)

Германия: 80% повторного использования из FR

Немецкий мандат (действующий с января 2025 года для получения B2B) в значительной степени отдает предпочтение ZUGFeRD/Factur-X — той же модели XML, встроенной в PDF, что и французский профиль Factur-X. Логика генерации и валидации XML из mcp-facture-electronique-fr может быть повторно использована с минимальными изменениями, что делает DE следующим адаптером с наименьшими затратами усилий после BE.

ViDA / DRR (2030)

К июлю 2030 года все национальные системы должны быть приведены в соответствие с требованиями ЕС к цифровой отчетности (Digital Reporting Requirement) для трансграничных транзакций. Использование EN 16931 в качестве внутренней модели данных InvoiceDocument в этом базовом пакете уже обеспечивает готовность проекта к будущим изменениям: адаптеры стран переводят EN 16931 → локальный формат, а не наоборот.

Лицензия

Apache 2.0 — см. LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for DACH e-invoicing. Create XRechnung (UBL) and ZUGFeRD 2.3 (Factur-X CII) invoices, validate against EN 16931 rules, extract data from XML, and convert between UBL, CII and JSON formats.
    6
    49 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Model Context Protocol (MCP) server for French Electronic Invoicing (NF XP Z12-013). Provide tools to validate, generate, and explore API specifications for PDP/OD interoperability.
    2
    34
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Model Context Protocol (MCP) server for Italian Electronic Invoicing (FatturaPA / SDI). Provide tools to validate, generate, and explore API specifications for Sistema di Interscambio (SDI) interoperability.
    43
    110 PyPI
    1
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Model Context Protocol (MCP) server for Belgian Electronic Invoicing (Peppol BIS 3.0 / PINT-BE / Mercurius). Provides tools to validate, generate, and transform UBL 2.1 e-invoices, and look up BCE/KBO enterprise data and Peppol participants.
    50
    Apache 2.0