XRechnung Validator

io.github.wenbotengPublished by GitHub account wenbotengv0.2.0Updated Nov 4, 2026

Validate XRechnung XML and ZUGFeRD / Factur-X PDFs with the free checkxrechnung.com API.

VerifiedSTDIODesktop onlyDeveloper ToolsBusiness & Commerce

Overview

AI-generated overview

Validates XRechnung XML and ZUGFeRD/Factur-X PDF invoices and extracts embedded invoice XML via the free checkxrechnung.com API.

What you can do
  • Validate an XRechnung XML document (UBL or CII) or a ZUGFeRD PDF, returning valid plus a list of errors with rule IDs, severity, location, message, hint and rule links
  • Validate a ZUGFeRD or Factur-X PDF, including PDF/A-3 basics, profile detection and EN 16931 CII Schematron checks
  • Extract the embedded invoice XML and a JSON summary from a ZUGFeRD or Factur-X PDF
When to use it
Useful when you need to check German e-invoice files for compliance before sending them, or to pull the invoice XML out of a hybrid PDF, without leaving the assistant.
Requirements
Runs locally over stdio, typically via npx with the xrechnung-validator-mcp package (Node.js required). No account, API key or environment variables; it needs network access to checkxrechnung.com. Free limits: 50 requests per IP per UTC day, 10 per minute; 5 MB for XML, 10 MB for PDFs.
Before you install
Invoice files are uploaded to a third-party service (checkxrechnung.com), so treat invoice contents as leaving your machine; the service reports persisted: false. The tools are network calls, not local read-only checks. Limits are shared across all three tools and per IP, so heavy or batch use will hit the cap.

Installation

In SourceWeft

  1. Open XRechnung Validator in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

xrechnung-validator-mcp

Stdio MCP server, package version 0.2.0. Tools:

  • validate_xrechnung uploads an XRechnung XML file (UBL or CII) or a ZUGFeRD PDF to POST https://checkxrechnung.com/v1/validate (file_path or xml).
  • validate_zugferd uploads a PDF to POST https://checkxrechnung.com/v1/zugferd/validate (file_path). PDF/A-3 check, profile, EN 16931 CII Schematron, rule_url.
  • extract_zugferd uploads a PDF to POST https://checkxrechnung.com/v1/zugferd/extract (file_path) and returns the raw XML plus a JSON summary.

The free limit is shared: 50 requests per IP per UTC day, 10 per minute. XML validation is 5 MB. The ZUGFeRD tools are 10 MB.

validate_xrechnung takes exactly one of file_path or xml. validate_zugferd and extract_zugferd take file_path only.

Validation output is valid plus errors[]. Each error has rule_id, severity, location, message, hint, and rule_url when a rule code is present. rule_url is the API value when the response includes rule_url or ruleUrl; otherwise https://checkxrechnung.com/fehler/<code> (lowercase). extract_zugferd returns ok, summary, and xml.

The service reports persisted: false. The tools call the network, so they are not a local read-only check. Batch volume: https://checkxrechnung.com/api-waitlist

Package name: xrechnung-validator-mcp. Registry name in server.json: io.github.wenboteng/xrechnung-validator (mcpName matches). Not submitted to the MCP registry yet. Build with npm run build (node dist/index.js) or, after publish, npx -y xrechnung-validator-mcp.

Claude Desktop

claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json):

json
{  "mcpServers": {    "xrechnung-validator": {      "command": "npx",      "args": ["-y", "xrechnung-validator-mcp"]    }  }}

Cursor

~/.cursor/mcp.json or the project file .cursor/mcp.json:

json
{  "mcpServers": {    "xrechnung-validator": {      "command": "npx",      "args": ["-y", "xrechnung-validator-mcp"]    }  }}

From a checkout, before the npm publish:

json
{  "mcpServers": {    "xrechnung-validator": {      "command": "node",      "args": ["mcp/dist/index.js"]    }  }}

VS Code

.vscode/mcp.json:

json
{  "servers": {    "xrechnung-validator": {      "type": "stdio",      "command": "npx",      "args": ["-y", "xrechnung-validator-mcp"]    }  }}

Docs: https://checkxrechnung.com/en/docs · Rules: https://checkxrechnung.com/fehler/ · OpenAPI: https://checkxrechnung.com/openapi.json

MIT. Copyright (c) 2026 Bobook Limited.

Source: mcp/README.md at commit e5cd738

Tools

3

validate_xrechnung

Validate XRechnung

Validate one XRechnung XML document (UBL or CII) or ZUGFeRD PDF. The file is uploaded to the free keyless API POST https://checkxrechnung.com/v1/validate. Limits: 50 requests per IP per UTC day, 10 per minute, 5 MB. The service reports persisted: false. Provide exactly one of file_path or xml. Returns valid plus errors with rule_id and rule_url.

Parametersxmlfile_path

validate_zugferd

Validate ZUGFeRD / Factur-X

Validate one ZUGFeRD or Factur-X PDF. The file is uploaded to POST https://checkxrechnung.com/v1/zugferd/validate. Checks PDF/A-3 basics (veraPDF when installed, otherwise a labelled structure check), extracts factur-x.xml, zugferd-invoice.xml or xrechnung.xml, detects the profile (MINIMUM, BASIC WL, BASIC, EN16931, EXTENDED, XRECHNUNG) and validates the XML with the EN 16931 CII Schematron. Profile XRECHNUNG also runs the XRechnung CII Schematron. Same free limit as validate_xrechnung (shared counter): 50 per IP per UTC day, 10 per minute. PDF limit 10 MB. Returns valid, profile, and errors with rule_id and rule_url.

Parametersfile_pathrequired

extract_zugferd

Extract ZUGFeRD / Factur-X XML

Extract the embedded invoice XML and a JSON summary from a ZUGFeRD or Factur-X PDF. Uploads the file to POST https://checkxrechnung.com/v1/zugferd/extract. Same free limit as validate_xrechnung (shared counter). PDF limit 10 MB. ok means an XML attachment was found. The xml field is the raw document.

Parametersfile_pathrequired

Version history

2
  1. v0.2.0LatestOct 20, 2026
  2. v0.1.0Oct 19, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts