Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Belgian e-invoicing MCP server: Peppol BIS 3.0, UBL 2.1, EU PINT v1.0.1, Mercurius.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
BCE_API_KEY, PEPPOL_ENV, LOG_LEVELLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"einvoicing-be": {
"command": "uvx",
"args": [
"mcp-einvoicing-be"
],
"env": {
"BCE_API_KEY": "your-value",
"PEPPOL_ENV": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add einvoicing-be --env BCE_API_KEY=your-value --env PEPPOL_ENV=your-value --env LOG_LEVEL=your-value -- uvx mcp-einvoicing-beCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"einvoicing-be": {
"command": "uvx",
"args": [
"mcp-einvoicing-be"
],
"env": {
"BCE_API_KEY": "your-value",
"PEPPOL_ENV": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"einvoicing-be": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-einvoicing-be"
],
"env": {
"BCE_API_KEY": "your-value",
"PEPPOL_ENV": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
PEPPOL_ENV envLOG_LEVEL envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub cmendezs, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: BCE_API_KEY
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.10.2) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, UniMCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Aula virtual (Moodle) y SIU Guaraní de universidades argentinas: cursos, entregas, notas, historia.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
English | Francais | Nederlands
mcp-einvoicing-be is an MCP (Model Context Protocol) server that exposes tools for Belgian electronic invoicing. It covers the full Belgian e-invoicing ecosystem: Peppol BIS Billing 3.0, UBL 2.1, and the Mercurius network for public-sector invoicing. The server is part of the mcp-einvoicing-* family of country-specific servers, all built on top of mcp-einvoicing-core, which provides the shared validation engine, UBL abstractions, and Peppol network utilities.
mcp-einvoicing-core (installed automatically as a dependency)uv (recommended)uv add mcp-einvoicing-be
pippip install mcp-einvoicing-be
git clone https://github.com/cmendezs/mcp-einvoicing-be.git
cd mcp-einvoicing-be uv sync --all-extras
| Variable | Description | Default |
|---|---|---|
BCE_API_KEY | API key for the Belgian BCE/KBO enterprise database | — |
PEPPOL_ENV | Peppol environment: production or test | production |
PEPPOL_SML_URL | Override the SML lookup URL | (auto) |
EINVOICING_PEPPOL_CODELIST_DIR | Local directory containing your own copy of the OpenPeppol eDEC Code Lists, required by the codelist tools (not bundled with this package; see mcp-einvoicing-core README) | — |
EINVOICING_EN16931_CODELIST_DIR | Local directory containing your own copy of the CEF "Digital Building Blocks" EN 16931 semantic code lists, required by the EN 16931 codelist tools (not bundled; see mcp-einvoicing-core README) | — |
LOG_LEVEL | Logging level: DEBUG, INFO, WARNING, ERROR | INFO |
The EUSR/TSR reporting and MLS tools additionally require the [xslt2] extra (pip install "mcp-einvoicing-be[xslt2]") for Schematron validation.
To use this server with Claude, add this configuration to your claude_desktop_config.json file:
{
"mcpServers": { "einvoicing-be": { "command": "uvx", "args": ["mcp-einvoicing-be"], "env": { "BCE_API_KEY": "your-bce-api-key", "PEPPOL_ENV": "production" } } } }
For a local development install:
{
"mcpServers": { "einvoicing-be": { "command": "uv", "args": ["run", "mcp-einvoicing-be"], "cwd": "/path/to/mcp-einvoicing-be" } } }
Cursor supports MCP servers via stdio. Add the configuration in:
~/.cursor/mcp.json.cursor/mcp.json{
"mcpServers": { "einvoicing-be": { "command": "uvx", "args": ["mcp-einvoicing-be"], "env": { "BCE_API_KEY": "your-bce-api-key", "PEPPOL_ENV": "production" } } } }
Reload 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.json{
"mcpServers": { "einvoicing-be": { "command": "uvx", "args": ["mcp-einvoicing-be"], "env": { "BCE_API_KEY": "your-bce-api-key", "PEPPOL_ENV": "production" }, "disabled": false, "autoApprove": [] } } }
The 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
"BCE_API_KEY": "${BCE_API_KEY}", Kiro resolves shell environment variables at startup.
validate_invoice_beValidates a UBL 2.1 XML invoice. The peppol-bis-3/pint-eu profiles run real Schematron validation against the CEN EN 16931 base rules (~50 BR-* structural/arithmetic rules, via mcp-einvoicing-core's bundled base Schematron — see CHANGELOG.md v0.8.0). This does not check the Peppol-specific overlay rules (no confirmed OpenPeppol redistribution rights); results carry an explicit en16931-base-only scope warning and should not be read as full Peppol BIS3 conformance. The mercurius profile runs the Mercurius-specific overlay (endpoint scheme, PO reference) but does not check base EN 16931/Peppol BIS 3.0 compliance.
| Parameter | Type | Required | Description |
|---|---|---|---|
xml | string | yes | Raw UBL 2.1 XML content |
profile | string | no | peppol-bis-3 (default) or mercurius |
Returns a ValidationResult with valid, errors, and warnings (each carrying the failed rule ID and a human-readable message).
generate_invoice_beGenerates a valid UBL 2.1 Belgian e-invoice XML document from structured data.
| Parameter | Type | Required | Description |
|---|---|---|---|
invoice_data | object | yes | Invoice fields (see InvoiceInput schema below) |
profile | string | no | peppol-bis-3 (default) |
The InvoiceInput object supports:
{
"invoice_number": "INV-2024-001", "issue_date": "2024-01-15", "due_date": "2024-02-14", "currency_code": "EUR", "supplier": { "name": "...", "vat_number": "BE0428759497", "address": {...} }, "customer": { "name": "...", "vat_number": "BE0403170701", "address": {...} }, "lines": [{ "description": "...", "quantity": 1, "unit_price": 100.00, "vat_rate": 21.0 }] }
Returns a UBL 2.1 XML string.
transform_to_ublConverts a structured JSON invoice payload to UBL 2.1 XML without full validation. Useful as a first step before validation.
| Parameter | Type | Required | Description |
|---|---|---|---|
data | object | yes | Source invoice data (same shape as InvoiceInput) |
lookup_vat_beLooks up a Belgian enterprise number (VAT number) against the BCE/KBO public database.
| Parameter | Type | Required | Description |
|---|---|---|---|
vat_number | string | yes | Belgian VAT/enterprise number, e.g. BE0428759497 or 0123456789 |
Returns enterprise name, registered address, legal status, and NACE activity codes.
Peppol participant lookup, service-endpoint lookup, a DNS-only diagnostic, AS4 send, Peppol Directory search, and the OpenPeppol eDEC codelist tools are provided by the shared core Peppol tool plugin (mcp_einvoicing_core.peppol.tools.register_peppol_tools), mounted in server.py with a BE-specific identifier adapter: a bare Belgian VAT number (e.g. 0428759497 or BE0428759497) is normalized to the 0208: Peppol scheme (KBO/BCE enterprise number); an already scheme-qualified identifier (e.g. 0208:0428759497) passes through unchanged.
peppol_send signs outbound messages with a real wsse:Security signature as of mcp-einvoicing-core v1.20.0 (previously computed and discarded — see CHANGELOG.md v0.10.0).
| Tool | Description |
|---|---|
peppol_lookup_participant | Check whether a business is registered on the Peppol network; returns registration status and supported document types |
peppol_get_service_endpoint | Fetch the AS4 endpoint for a participant's document type |
resolve_peppol_dns | DNS-only (SML) diagnostic, independent of SMP reachability |
peppol_send | Transmit a UBL/CII invoice via AS4 |
peppol_directory_search | Search the public Peppol Directory by participant, name, country, or document type |
list_participant_id_schemes, list_document_type_ids, list_process_ids, list_spis_use_case_ids | OpenPeppol eDEC codelist lookups (require EINVOICING_PEPPOL_CODELIST_DIR) |
check_document_type_id_in_codelist, check_process_id_in_codelist, check_participant_id_scheme_in_codelist, get_peppol_codelist_version | OpenPeppol eDEC codelist checks and version reporting |
See the mcp-einvoicing-core README for full parameter documentation on these tools.
Added in v0.10.0 via three opt-in core plugins, mounted unconditionally in server.py. Each raises a clear error at call time (not at registration) if its extra or data directory is missing.
| Tool | Plugin | Description |
|---|---|---|
validate_eusr_report | register_peppol_reporting_tools | Validate an End User Statistics Report (XSD, then Schematron). Requires the [xslt2] extra. |
validate_tsr_report | register_peppol_reporting_tools | Validate a Transaction Statistics Report (XSD, then Schematron). Requires the [xslt2] extra. |
validate_mls_message | register_peppol_mls_tools | Validate a Message Level Status document (UBL ApplicationResponse-2 subset). Requires the [xslt2] extra. |
build_mls_message | register_peppol_mls_tools | Build a document-level MLS response. Requires the [xslt2] extra. |
13 list_*/check_* pairs, get_en16931_codelist_version | register_en16931_codelist_tools | EN 16931 semantic code list lookups/checks (units, VAT categories, etc.). Require EINVOICING_EN16931_CODELIST_DIR. |
See the mcp-einvoicing-core README for full parameter documentation on these tools.
parse_ubl_invoice_beParses a UBL 2.1 XML invoice (Peppol BIS 3.0) into a structured dict. Satisfies the mandatory reception capability required by Art. 13quater of Royal Decree no. 1.
| Parameter | Type | Required | Description |
|---|---|---|---|
xml_content | string | yes | Raw UBL 2.1 XML invoice content |
Returns {"success": true, "invoice": {...}, "warnings": []} on success, or {"success": false, "error": "..."} on parse failure.
get_invoice_types_beReturns the list of supported Belgian e-invoice document types (invoice, credit note, debit note) with their UBL customizationID and profileID values for each profile.
No input parameters required.
Mercurius is the Belgian federal public-sector e-invoicing platform. It operates as a Peppol network receiver, not a separate API. B2G invoices are submitted through the standard Peppol network using the authority's participant ID in the 0208 scheme (KBO/BCE 10-digit enterprise number). The Access Point routes the invoice to Mercurius automatically. No Mercurius-specific submission endpoint or API key is required.
mcp-einvoicing-be/
├── src/ │ └── mcp_einvoicing_be/ │ ├── init.py │ ├── server.py # MCP server entry point & tool registration │ ├── tools/ │ │ ├── init.py │ │ ├── validation.py # validate_invoice_be │ │ ├── generation.py # generate_invoice_be │ │ ├── transformation.py # transform_to_ubl │ │ ├── parsing.py # parse_ubl_invoice_be │ │ └── lookup.py # lookup_vat_be, get_invoice_types_be │ ├── models/ │ │ ├── init.py │ │ ├── invoice.py # InvoiceInput, InvoiceLine, ValidationResult │ │ └── party.py # Supplier, Customer,
Solo se muestra el principio; lee el resto en el repo