Skip to main content
Glama
makririch

einvoice-mcp

by makririch
README.md
# E-Invoice MCP Server

> MCP Server fuer E-Rechnungen im DACH-Raum — XRechnung erstellen, validieren und Daten extrahieren. Direkt aus Claude, Cursor oder jedem MCP-Client.

[![npm version](https://img.shields.io/npm/v/einvoice-mcp.svg)](https://www.npmjs.com/package/einvoice-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)

## Was ist das?

E-Invoice MCP ist ein [Model Context Protocol](https://modelcontextprotocol.io/) Server fuer die Erstellung und Validierung von E-Rechnungen nach dem deutschen XRechnung-Standard. Ab 2027 muessen alle Unternehmen in Deutschland E-Rechnungen versenden koennen — mit diesem Tool bist du vorbereitet.

Du sagst Claude einfach: "Erstelle eine Rechnung an die Beispiel GmbH fuer 10 Stunden Beratung" — und erhaeltst eine valide XRechnung als UBL 2.1 XML.

## Features

- **XRechnung erstellen** — Valides UBL 2.1 XML aus strukturierten Daten (EN 16931 + XRechnung 3.0.2)
- **E-Rechnung validieren** — Syntax, Pflichtfelder und deutsche Business-Regeln (BR-DE) pruefen
- **Daten extrahieren** — Strukturierte Daten aus UBL- oder CII-XML lesen
- **Format-Info** — Nachschlagewerk fuer Pflichtfelder, Steuer-Kategorien, Einheiten-Codes und Fristen
- **Automatische Berechnung** — Netto, Brutto, Steuerbetraege werden automatisch berechnet
- **Plugin-faehig** — Kann standalone laufen ODER in den BuchPilot MCP Server integriert werden
- **Keine externen Dienste** — Alles laeuft lokal, keine API-Keys noetig
- **Keine nativen Abhaengigkeiten** — Laeuft auf jedem System mit Node.js

## Gesetzliche Fristen

| Datum | Was passiert |
|-------|-------------|
| **01.01.2025** | Alle Unternehmen muessen E-Rechnungen **empfangen** koennen |
| **31.12.2026** | PDF-Rechnungen nur noch mit Empfaenger-Zustimmung erlaubt |
| **01.01.2027** | Unternehmen >800.000 EUR Umsatz muessen E-Rechnungen **senden** |
| **01.01.2028** | **ALLE** Unternehmen muessen E-Rechnungen senden |

> Fehlerhafte E-Rechnungen koennen zum Verlust des Vorsteuerabzugs fuehren (+ 6% Verzinsung).

## Installation

### Voraussetzungen

- Node.js >= 18

### npm (global)

```bash
npm install -g einvoice-mcp
```

### Von Source

```bash
git clone https://github.com/makririch/einvoice-mcp.git
cd einvoice-mcp
npm install
npm run build
```

## Konfiguration

Dieser MCP Server benoetigt **keine Konfiguration**. Es werden keine API-Keys oder externe Dienste benoetigt — alles laeuft lokal.

## Nutzung

### Server starten (standalone)

```bash
# Nach npm install -g:
einvoice-mcp

# Oder von Source:
npm start

# Entwicklung mit Auto-Reload:
npm run dev
```

Der Server laeuft ueber stdio und wartet auf MCP-Nachrichten.

### In Claude Desktop verwenden

Siehe [Claude Desktop Setup Guide](docs/claude-desktop-setup.md) fuer eine detaillierte Anleitung.

Kurzversion — fuege in `claude_desktop_config.json` hinzu:

```json
{
  "mcpServers": {
    "einvoice": {
      "command": "npx",
      "args": ["-y", "einvoice-mcp"]
    }
  }
}
```

### Beispiele (natuerliche Sprache in Claude)

Nachdem du den Server konfiguriert hast, kannst du Claude z.B. fragen:

- "Erstelle eine XRechnung an die Beispiel GmbH fuer 10 Stunden Beratung zu 150 EUR"
- "Ist diese XML-Datei eine gueltige XRechnung?"
- "Extrahiere die Rechnungsdaten aus diesem XML"
- "Welche Pflichtfelder brauche ich fuer eine XRechnung?"
- "Welche Steuer-Kategorien gibt es und was bedeuten sie?"
- "Bis wann muss mein Unternehmen E-Rechnungen versenden koennen?"

### Quickstart

Eine Schritt-fuer-Schritt-Anleitung "Erstelle deine erste XRechnung in 5 Minuten" findest du in [docs/quickstart.md](docs/quickstart.md).

## Tool-Referenz

Eine vollstaendige Referenz aller 4 Tools mit Parametern, Beispiel-Inputs und Beispiel-Outputs findest du in [docs/tool-reference.md](docs/tool-reference.md).

### Kurzuebersicht

| Tool | Beschreibung |
|------|-------------|
| `create_xrechnung` | XRechnung (UBL 2.1 XML) aus strukturierten Daten erstellen |
| `validate_invoice` | E-Rechnung XML validieren (Syntax + BR-DE Business-Regeln) |
| `extract_data` | Strukturierte Daten aus UBL- oder CII-XML extrahieren |
| `get_format_info` | Nachschlagewerk fuer Formate, Pflichtfelder, Codes und Fristen |

## BuchPilot-Integration

E-Invoice MCP kann als Plugin in den [BuchPilot MCP Server](https://www.npmjs.com/package/buchpilot-mcp) integriert werden:

```typescript
import { registerEInvoiceTools } from "einvoice-mcp";
registerEInvoiceTools(server);
```

**Kombination:** BuchPilot erstellt eine Rechnung in Lexoffice -> Daten extrahieren -> XRechnung erzeugen -> fertige E-Rechnung.

## Unterstuetzte Standards

| Standard | Version | Status |
|----------|---------|--------|
| XRechnung | 3.0.2 | Erstellen + Validieren |
| EN 16931 | — | Basis fuer XRechnung |
| UBL 2.1 | — | XML-Syntax fuer XRechnung |
| CII (Cross Industry Invoice) | — | Extrahieren (Lesen) |
| ZUGFeRD / Factur-X | 2.3 | Extrahieren (Lesen), Erstellen geplant |

## FAQ / Troubleshooting

### "XML konnte nicht geparst werden"

- Ist das XML well-formed? (Alle Tags korrekt geschlossen?)
- Ist es tatsaechlich eine UBL- oder CII-Rechnung? (Root-Element muss `<Invoice>` oder `<CrossIndustryInvoice>` sein)
- Ist das Encoding UTF-8?

### Validierung zeigt Fehler "BR-DE-13: Buyer Reference ist Pflicht"

Die Kaeufer-Referenz (BT-10) ist in XRechnung Pflicht. Bei Rechnungen an oeffentliche Auftraggeber ist das die **Leitweg-ID**. Bei B2B-Rechnungen kann es eine beliebige Referenz sein (z.B. Bestellnummer).

```json
{
  "buyerReference": "04011000-12345-67"
}
```

### Validierung zeigt Warnung "BR-DE-21: Telefonnummer empfohlen"

Das ist nur eine Warnung, kein Fehler. Die Rechnung ist trotzdem gueltig. Fuer beste Kompatibilitaet solltest du aber eine Telefonnummer des Verkaeufers angeben.

### Welche Steuer-Kategorien gibt es?

| Code | Name | Beschreibung | Steuersaetze |
|------|------|-------------|-------------|
| S | Standard | Normaler Steuersatz | 19%, 7% |
| Z | Nullsatz | 0% (z.B. innergemeinschaftlich mit USt-Befreiung) | 0% |
| E | Steuerbefreit | z.B. Kleinunternehmer nach Paragraph 19 UStG | 0% |
| AE | Reverse Charge | Steuerschuldnerschaft des Empfaengers (Paragraph 13b UStG) | 0% |
| K | Innergemeinschaftlich | Steuerfreie innergemeinschaftliche Lieferung | 0% |

### Welche Einheiten-Codes gibt es?

| Code | Name | Beschreibung |
|------|------|-------------|
| H87 | Stueck | Einzelne Einheit (Default) |
| HUR | Stunde | Arbeitsstunde |
| DAY | Tag | Arbeitstag |
| MON | Monat | Kalendermonat |
| KGM | Kilogramm | Gewicht |
| MTR | Meter | Laenge |
| LTR | Liter | Volumen |
| MTK | Quadratmeter | Flaeche |
| SET | Set/Paket | Zusammenstellung |
| C62 | Einheit (generisch) | Allgemeine Mengeneinheit |

### Server startet, aber Claude erkennt die Tools nicht

- Pruefe ob die `claude_desktop_config.json` korrekt ist
- Starte Claude Desktop neu nach Konfigurationsaenderungen
- Pruefe die Logs: `~/Library/Logs/Claude/mcp.log` (macOS)

## Lizenz

MIT — Frei nutzbar, auch kommerziell.

## Autor

**MaKri** — [GitHub](https://github.com/makririch/einvoice-mcp)

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: convert_format handles format conversion, create_xrechnung and create_zugferd create specific invoice types, extract_data extracts data from invoices, get_format_info provides reference information, and validate_invoice validates invoices. The descriptions reinforce these distinct roles, making tool selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case: convert_format, create_xrechnung, create_zugferd, extract_data, get_format_info, and validate_invoice. This uniformity makes the tool set predictable and easy to navigate for an agent.

Tool Count5/5

With 6 tools, the server is well-scoped for e-invoice processing, covering creation, conversion, validation, data extraction, and reference information. Each tool earns its place without bloat, fitting typical expectations for a domain-specific server.

Completeness4/5

The tool set provides strong coverage for e-invoice workflows, including creation (XRechnung and ZUGFeRD), conversion between formats, validation, data extraction, and reference info. A minor gap is the lack of update or delete operations for invoices, but this is reasonable as invoices are typically immutable once created, and agents can work around this by recreating or modifying data externally.

Maintenance

ActivityInactive
ResponsivenessNo issues