mcpField
M
mcp-einvoicing-be

mcp-einvoicing-be

本地服务
github.com/cmendezs金融数据07 周前更新

关于 mcp-einvoicing-be

mcp-einvoicing-be 是面向比利时电子发票流程的 MCP 服务,为财务和集成应用提供 UBL 发票生成、验证、解析及 Peppol 网络工具。其工具覆盖 Peppol BIS 3.0、Mercurius 和比利时企业信息查询。

主要功能

  1. 01生成、转换和解析 UBL 2.1 发票
  2. 02验证 Peppol 与 Mercurius 发票
  3. 03查询比利时 VAT 企业信息
  4. 04查找 Peppol 参与方和端点
  5. 05通过 AS4 发送 UBL 发票

适用场景

  1. 01生成比利时电子发票 XML
  2. 02检查发票结构与规则
  3. 03查找客户的 Peppol 注册及端点
  4. 04通过 Peppol 发送公共部门发票

MCP 相关

作为 MCP 服务,向客户端提供比利时发票处理、Peppol 查询与发送、报告验证及代码表查询工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cmendezs-mcp-einvoicing-be": {
"command": "uvx",
"args": [
"mcp-einvoicing-be"
],
"env": {
"BCE_API_KEY": "<BCE_API_KEY>",
"PEPPOL_ENV": "<PEPPOL_ENV>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令uvx mcp-einvoicing-be
需要配置的环境变量
BCE_API_KEY密钥API key for the Belgian BCE/KBO enterprise database (optional — public endpoints work without it)
PEPPOL_ENVPeppol network environment: 'production' (default) or 'test'
LOG_LEVELLogging level: DEBUG, INFO (default), WARNING, or ERROR

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-einvoicing-be0.10.2

工具

50

收录的工具列表 · 更新于 2 周前

参数类型必填说明
xmlstring是原始 UBL 2.1 XML 发票内容
profileenum否验证配置文件:'peppol-bis-3'(默认)、'pint-eu' 或 'mercurius'peppol-bis-3 | pint-eu | mercurius

详细介绍

mcp-einvoicing-be 🇧🇪

English | Francais | Nederlands

PyPI version Python License mcp-einvoicing-be MCP server


简介

mcp-einvoicing-be 是一个 MCP(模型上下文协议) 服务,提供比利时电子发票工具。它涵盖比利时电子发票生态系统的全部内容:Peppol BIS Billing 3.0、UBL 2.1,以及用于公共部门发票的 Mercurius 网络。该服务属于按国家/地区划分的 mcp-einvoicing-* 服务系列,均基于 mcp-einvoicing-core 构建,后者提供共享的验证引擎、UBL 抽象和 Peppol 网络实用工具。

安装

要求
使用 uv(推荐)
uv add mcp-einvoicing-be
使用 pip
pip install mcp-einvoicing-be
从源代码安装
git clone https://github.com/cmendezs/mcp-einvoicing-be.git
cd mcp-einvoicing-be
uv sync --all-extras

配置

环境变量
变量描述默认值
BCE_API_KEY比利时 BCE/KBO 企业数据库的 API 密钥—
PEPPOL_ENVPeppol 环境:production 或 testproduction
PEPPOL_SML_URL覆盖 SML 查询 URL(自动)
EINVOICING_PEPPOL_CODELIST_DIR本地目录,其中包含你自己的 OpenPeppol eDEC 代码列表副本;代码列表工具需要该副本(此软件包不附带;请参阅 mcp-einvoicing-core README)—
EINVOICING_EN16931_CODELIST_DIR本地目录,其中包含你自己的 CEF “Digital Building Blocks” EN 16931 语义代码列表副本;EN 16931 代码列表工具需要该副本(不附带;请参阅 mcp-einvoicing-core README)—
LOG_LEVEL日志级别:DEBUG、INFO、WARNING、ERRORINFO

EUSR/TSR 报告工具和 MLS 工具还需要 [xslt2] extra(pip install "mcp-einvoicing-be[xslt2]")以进行 Schematron 验证。

Claude Desktop 集成

若要在 Claude 中使用此服务,请将以下配置添加到 claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "einvoicing-be": {
      "command": "uvx",
      "args": ["mcp-einvoicing-be"],
      "env": {
        "BCE_API_KEY": "your-bce-api-key",
        "PEPPOL_ENV": "production"
      }
    }
  }
}

本地开发安装:

{
  "mcpServers": {
    "einvoicing-be": {
      "command": "uv",
      "args": ["run", "mcp-einvoicing-be"],
      "cwd": "/path/to/mcp-einvoicing-be"
    }
  }
}

Cursor 集成

Cursor 通过 stdio 支持 MCP 服务。请在以下位置添加配置:

  • 全局(所有项目):~/.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"
      }
    }
  }
}

重新加载 Cursor 窗口(按 Ctrl+Shift+P,然后选择 Reload Window)以应用更改。

Kiro 集成

Kiro 通过专用配置文件支持 MCP 服务。提供两个级别:

  • 全局(所有项目):~/.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": []
    }
  }
}

保存后文件会自动重新加载。你也可以通过命令面板打开配置(按 Cmd+Shift+P / Ctrl+Shift+P),然后选择 MCP。

Kiro 安全提示:不要以纯文本形式填写机密信息,而应使用语法 "BCE_API_KEY": "${BCE_API_KEY}";Kiro 会在启动时解析 shell 环境变量。

可用工具

validate_invoice_be

验证 UBL 2.1 XML 发票。peppol-bis-3/pint-eu 配置文件会针对 CEN EN 16931 基础规则运行真实的 Schematron 验证(约 50 条 BR-* 结构/算术规则,通过 mcp-einvoicing-core 随附的基础 Schematron 实现——参见 CHANGELOG.md v0.8.0)。此验证不会检查 Peppol 专属覆盖规则(没有确认获得 OpenPeppol 的再分发权);结果会明确附带 en16931-base-only 范围警告,不应将其解读为完全符合 Peppol BIS3。mercurius 配置文件会运行 Mercurius 专属覆盖规则(端点方案、PO 引用),但不会检查是否符合基础 EN 16931/Peppol BIS 3.0。

参数类型必填描述
xmlstring是原始 UBL 2.1 XML 内容
profilestring否peppol-bis-3(默认)或 mercurius

返回一个 ValidationResult,包含 valid、errors 和 warnings(每项均包含验证失败的规则 ID 和便于理解的消息)。


generate_invoice_be

根据结构化数据生成有效的 UBL 2.1 比利时电子发票 XML 文档。

参数类型必填描述
invoice_dataobject是发票字段(参见下方的 InvoiceInput 架构)
profilestring否peppol-bis-3(默认)

InvoiceInput 对象支持:

{
  "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 }]
}

返回 UBL 2.1 XML 字符串。


transform_to_ubl

将结构化 JSON 发票数据转换为 UBL 2.1 XML,不进行完整验证。可用作验证前的第一步。

参数类型必填描述
dataobject是源发票数据(与 InvoiceInput 的结构相同)

lookup_vat_be

通过 BCE/KBO 公共数据库查询比利时企业编号(增值税号)。

参数类型必填描述
vat_numberstring是比利时增值税号/企业编号,例如 BE0428759497 或 0123456789

返回企业名称、注册地址、法律状态和 NACE 活动代码。


Peppol 网络工具

参与方查询、服务端点查询、仅 DNS 诊断、AS4 发送、Peppol Directory 搜索,以及 OpenPeppol eDEC 代码列表工具均由共享核心 Peppol 工具插件(mcp_einvoicing_core.peppol.tools.register_peppol_tools)提供,并在 server.py 中挂载了比利时专用标识符适配器:纯比利时增值税号(例如 0428759497 或 BE0428759497)会规范化为 0208:<digits> Peppol 方案(KBO/BCE 企业编号);已带方案的标识符(例如 0208:0428759497)则保持不变。

自 mcp-einvoicing-core v1.20.0 起,peppol_send 会使用真实的 wsse:Security 签名对出站消息签名(此前会计算签名但将其丢弃——参见 CHANGELOG.md v0.10.0)。

工具描述
peppol_lookup_participant检查企业是否已在 Peppol 网络注册;返回注册状态和受支持的文档类型
peppol_get_service_endpoint获取参与方对应文档类型的 AS4 端点
resolve_peppol_dns仅 DNS(SML)诊断,不受 SMP 可达性影响
peppol_send通过 AS4 传输 UBL/CII 发票
peppol_directory_search按参与方、名称、国家/地区或文档类型搜索公开的 Peppol Directory
list_participant_id_schemes、list_document_type_ids、list_process_ids、list_spis_use_case_idsOpenPeppol eDEC 代码列表查询(需要 EINVOICING_PEPPOL_CODELIST_DIR)
check_document_type_id_in_codelist、check_process_id_in_codelist、check_participant_id_scheme_in_codelist、get_peppol_codelist_versionOpenPeppol eDEC 代码列表检查与版本报告

有关这些工具的完整参数文档,请参见 mcp-einvoicing-core README。


Peppol 报告和状态工具

在 v0.10.0 中通过三个可选的核心插件添加,并在 server.py 中无条件挂载。如果缺少相应的扩展或数据目录,插件会在调用时(而非注册时)明确报错。

工具插件说明
validate_eusr_reportregister_peppol_reporting_tools验证最终用户统计报告(先验证 XSD,再验证 Schematron)。需要 [xslt2] 扩展。
validate_tsr_reportregister_peppol_reporting_tools验证交易统计报告(先验证 XSD,再验证 Schematron)。需要 [xslt2] 扩展。
validate_mls_messageregister_peppol_mls_tools验证消息级状态文档(UBL ApplicationResponse-2 子集)。需要 [xslt2] 扩展。
build_mls_messageregister_peppol_mls_tools构建文档级 MLS 响应。需要 [xslt2] 扩展。
13 组 list_*/check_* 工具,以及 get_en16931_codelist_versionregister_en16931_codelist_tools查询/检查 EN 16931 语义代码表(单位、增值税类别等)。需要 EINVOICING_EN16931_CODELIST_DIR。

有关这些工具的完整参数文档,请参阅 mcp-einvoicing-core README。


parse_ubl_invoice_be

将 UBL 2.1 XML 发票(Peppol BIS 3.0)解析为结构化字典。满足《皇家法令第 1 号》第 13quater 条规定的强制接收能力。

参数类型必填说明
xml_contentstring是原始 UBL 2.1 XML 发票内容

成功时返回 {"success": true, "invoice": {...}, "warnings": []},解析失败时返回 {"success": false, "error": "..."}。


get_invoice_types_be

返回受支持的比利时电子发票文档类型列表(发票、贷项通知单、借项通知单),以及各配置文件对应的 UBL customizationID 和 profileID 值。

无需输入参数。

通过 Mercurius 进行 B2G

Mercurius 是比利时联邦公共部门的电子发票平台。它作为Peppol 网络接收方运行,而非独立 API。B2G 发票通过标准 Peppol 网络提交,使用 0208 方案下主管机构的参与方 ID(KBO/BCE 10 位企业编号)。接入点会自动将发票路由至 Mercurius。无需 Mercurius 专用提交端点或 API 密钥。

架构

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, Address
│       ├── standards/
│       │   ├── __init__.py
│       │   ├── peppol_bis_3.py    # Peppol BIS Billing 3.0 rules & customization IDs
│       │   ├── ubl.py             # UBL 2.1 namespace constants & XML helpers
│       │   ├── pint_be.py         # PINT-BE placeholder (removed in v0.4.0)
│       │   └── mercurius.py       # Mercurius network config & overlay rules
│       └── utils/
│           ├── __init__.py
│           └── helpers.py         # VAT number normalization, date formatting, etc.
├── tests/
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_tools/
│   │   ├── __init__.py
│   │   ├── test_validation.py
│   │   ├── test_generation.py
│   │   └── test_transformation.py
│   └── fixtures/
│       ├── invoice_valid_peppol.xml
│       ├── invoice_valid_pint_be.xml
│       └── invoice_invalid.xml
├── .github/
│   └── workflows/
│       ├── ci.yml
│       └── publish.yml
├── pyproject.toml
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE
与 mcp-einvoicing-core 的关系

mcp-einvoicing-core 提供:

  • 通用的 UBL 2.1/2.3 XML 解析与序列化工具
  • EN 16931 基础验证规则(语法 + 语义)
  • Peppol 网络客户端(SMP 查询、SML 解析)
  • 通用 Pydantic 基础模型(BaseInvoice、BaseParty、BaseValidationResult)

mcp-einvoicing-be 在此基础上添加比利时专用逻辑:

  • 用于 B2G 开票的 Mercurius 网络叠加规则验证(基于 XPath)
  • BCE/KBO 企业数据库集成
  • 比利时增值税号规范化(BTW/TVA 格式)以及 OGM/VCS 校验位验证
  • 满足强制接收要求的 UBL 2.1 发票解析(第 13quater 条)
  • 比利时 Peppol 角中特有的 customizationID 和 profileID 值

供应商中立性

此服务自行实现标准:在本地构建、验证和签署文档。它不是商业开票平台的客户端,您的签名密钥和凭据绝不会离开您自己的基础设施。

必须使用 Peppol 接入点,但任何获认可的接入点都支持相同的 AS4 配置文件,因此更换服务提供商只需更改配置,无需修改代码。

贡献

欢迎贡献。在提交拉取请求之前,请先通过 issue 讨论重大变更。

git clone https://github.com/cmendezs/mcp-einvoicing-be.git
cd mcp-einvoicing-be
uv sync --all-extras
uv run pytest
uv run ruff check src tests
uv run mypy src

所有拉取请求都必须:

  • 通过完整的测试套件(pytest)
  • 通过 lint 检查(ruff check)
  • 通过类型检查(mypy)
  • 为任何行为变更添加或更新测试
  • 修复验证问题时,引用相关规则 ID

完整指南请参阅 CONTRIBUTING.md。

其他电子发票 MCP 服务

国家/地区服务
🌍 全球mcp-einvoicing-core
🇧🇪 比利时mcp-einvoicing-be
🇧🇷 巴西mcp-nfe-br
🇫🇷 法国mcp-facture-electronique-fr
🇩🇪 德国mcp-einvoicing-de
🇮🇳 印度mcp-einvoicing-in
🇮🇹 意大利mcp-fattura-elettronica-it
🇲🇽 墨西哥mcp-cfdi-mx
🇵🇱 波兰mcp-ksef-pl
🇸🇬 新加坡mcp-invoicenow-sg
🇪🇸 西班牙mcp-facturacion-electronica-es
🇦🇪 阿拉伯联合酋长国mcp-einvoicing-ae

许可证

本项目采用 Apache 2.0 许可证,详情请参阅 LICENSE。完整的版本历史请参阅 CHANGELOG.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。