Offline e-invoice tools for AI agents: validate, audit, convert and generate XRechnung/ZUGFeRD.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
The sovereign e-invoice toolkit for AI agents. Official XRechnung / EN 16931 validation, ZUGFeRD in and out, 100 % offline, zero API keys.
Kontor MCP is an open-source Model Context Protocol server that gives AI assistants (Claude Desktop, Claude Code, any MCP client) fully local capabilities for German/EU electronic invoicing: parse, validate, audit, explain, generate and convert XRechnung and ZUGFeRD/Factur-X invoices with the official KoSIT / EN 16931 rule sets β and no invoice data ever leaving your machine.
Status: v1.0 β 8 tools, 4 resource families, 3 prompts; KoSIT conformance 89/89 enforced by a CI gate; ZUGFeRD PDF/A-3 generation verified by veraPDF and Mustang; stdio and Streamable HTTP with bearer auth; Docker image (amd64/arm64); kontor-agent reference client; no-network proof in CI. Install with npx, Docker, or from source.

Claude Desktop with the kontor server: validate β BR-DE-15 (missing Leitweg-ID) with fix hint Β· parse a ZUGFeRD PDF Β· explain BR-DE-18. MP4
valid is the real verdict, never assumed).factur-x.xml that pass veraPDF and Mustang.Requires Node β₯ 20. Everything β rules, schemas, code lists, fonts β ships inside the npm package; no downloads at runtime, no Java.
| Install path | Command |
|---|---|
| npx (zero-config stdio) | npx -y @kontor-mcp/server |
| Docker (Streamable HTTP, token required) | docker run -d -p 127.0.0.1:3333:3333 -e KONTOR_AUTH_TOKEN=β¦ ghcr.io/dashankanadeeshandesilva/kontor-mcp |
| Reference client | npx -y -p @kontor-mcp/client kontor-agent audit invoice.xml |
| From source | git clone β¦ && pnpm install && pnpm build β node packages/server/dist/bin.js |
Claude Desktop β Settings β Developer β Edit Config, then quit (βQ) and reopen:
(From a source checkout use "command": "node", "args": ["/absolute/path/to/kontor-mcp/packages/server/dist/bin.js"] instead.)
Now audit a sample invoice. Ask Claude:
Audit
/absolute/path/to/kontor-mcp/packages/server/samples/broken-missing-buyer-reference.xmlβ is it valid?
You get a verdict (invalid), the finding BR-DE-15 (missing buyer reference / Leitweg-ID) with an explanation and fix hint, the recomputed totals and VAT breakdown, and a reject recommendation with its rationale. Then try a ZUGFeRD PDF:
What is in
/absolute/path/to/kontor-mcp/packages/server/samples/generated-zugferd-en16931.pdf?
(Attach XML files directly if you prefer; PDFs must be referenced by local path β Claude Desktop does not hand PDF bytes to MCP servers.)
Without a chat client, the MCP Inspector works headless:
kontor-agent CLI β the reference client; audit needs no LLM and returns 0/1/2 for accept/review/reject, chat is an Anthropic agent loop that prints every tool call (needs ANTHROPIC_API_KEY):
Docker / Streamable HTTP β the same server over HTTP for remote agents and containers (token required, loopback-published port, TLS is your reverse proxy's job):
Or cp .env.example .env && docker compose up -d (read-only root FS, ./invoices mounted at /data). Config surface and the security posture: packages/server/README.md, SECURITY.md.
| Tool | What it does |
|---|---|
parse_invoice | Detect the format (UBL / CII Β· EN 16931 Β· XRechnung version & variant Β· ZUGFeRD profile) and return the EN 16931 semantic model |
validate_invoice | XSD + official EN 16931 / XRechnung Schematron (KoSIT scenarios) + Kontor plausibility β valid / valid_with_warnings / invalid with explained findings |
audit_invoice | One call for accounts payable: header facts, VAT breakdown, verdict, grouped findings, accept / review / reject with rationale; stateless duplicate detection via known_invoice_numbers |
generate_invoice | Structured data β XRechnung 3.0 (UBL) or ZUGFeRD 2.3 / Factur-X PDF/A-3 (target: zugferd-pdf, profiles EN16931 / BASIC / EXTENDED); decimal-safe amounts, internal validation, deterministic auto-fixes reported |
convert_invoice | ZUGFeRD PDF β XML, UBL β CII via the semantic model (post-validated, honest loss report), self-contained HTML preview |
check_obligations | German e-invoicing mandate decision tree (B2B/B2G/B2C, 2025 β 2028 transition, exemptions) with primary legal sources |
explain_rule | Official text, explanation, affected business terms and fix hint for any BR-* / BR-DE-* / KONTOR-* rule id |
list_capabilities | Formats, bundled standard versions, KB stats, legal lastVerified, inventory, sovereignty statement |
Resources: kontor://samples/{name}, kontor://reference/rules, kontor://reference/codelists/{list}, kontor://reference/cheatsheet. Prompts: audit-incoming-invoice, draft-supplier-rejection, create-invoice-interview. Full reference with inputs and conventions: packages/server/README.md.
| Claim | Proof |
|---|---|
| No network at runtime | Every rule set, schema, code list and legal fact is bundled in @kontor-mcp/rules with provenance and checksums. Proven by sovereignty.test.ts: all outbound paths (sockets, DNS, TLS, http/https, fetch) are blocked and recorded while every tool, resource and prompt runs β zero attempts; a static scan allows a network import only in the inbound HTTP host; CI also runs a full audit in a --network none container. See SECURITY.md. |
| No Java, no native code | Schematron is compiled at build time and executed with Saxon-JS; XSD via xmllint-wasm; PDF via pdf-lib. Java is used only by the development-time oracles (KoSIT validator, veraPDF, Mustang) in CI. |
| Nothing stored, nothing logged | The server is stateless; invoice contents never reach a log (KONTOR_LOG_PAYLOADS defaults to off). |
| The verdicts are the official ones | docs/CONFORMANCE.md: 89/89 files of the official XRechnung test suite with identical verdicts and identical findings vs the KoSIT validator, replayed on every CI run. |
| The PDFs are real PDF/A-3 | Every generated sample is regenerated in CI and checked by veraPDF (PDF/A-3b, zero violations) and Mustang CLI (PDF/A + XMP + profile XSD + EN 16931 rules). |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/kontor-mcp)<a href="https://allmcps.com/mcp/kontor-mcp"><img src="https://allmcps.com/api/badge/kontor-mcp?style=directory" alt="Kontor MCP on AllMCPs" /></a>