Skip to main content
Glama

mahnantrag-mcp

MCP-Server (und Claude-Plugin), mit dem Claude einen Antrag auf Erlass eines Mahnbescheids über online-mahnantrag.de vorbereitet:

  1. Vorprüfung – deterministisch, bevor das Portal den Antrag sieht

  2. Ausfüllen des Portals bis zur Datenübersicht – im sichtbaren Browser, Mensch kann jederzeit übernehmen. Haltepunkt am Prozessgericht: das Portal leitet es aus der Gegneranschrift ab, Weiterklicken gilt als Wahl nach § 35 ZPO. Der Ausfüller zeigt das Gericht und macht erst nach Bestätigung weiter.

  3. EDA-Download – erst nach ausdrücklicher Freigabe und nur, wenn die Datenübersicht keine Fehler (FehlerDa) und keine offenen Warnungen zeigt; Datei wird schreibgeschützt gespeichert und gehasht

Eingereicht wird nie durch diesen Server. Die EDA-Datei geht unverändert über einen sicheren Übermittlungsweg (beA, § 130a Abs. 4 ZPO) an das Mahngericht. Das macht der Mensch.

Status: v0.1, Work-in-Progress. Ende-zu-Ende gegen das Live-Portal getestet (09.11.2026, Fantasiedaten), einschließlich EDA-Download. Eine echte Einreichung beim Mahngericht ist noch nicht erprobt.

Warum eine Vorprüfung?

Das Portal prüft fast nichts. Vierstellige PLZ, eine weibliche Vertreterfunktion zu einem männlichen Namen oder eine doppelt eingetragene vorgerichtliche Anwaltsvergütung gehen ohne Meldung durch. antrag_pruefen fängt unter anderem ab:

  • Feldlängen des Portals (Firmenname 35 Zeichen je Zeile, Ort 27, Kennziffer 8 Ziffern …)

  • Katalogcodes (75 Anspruchsarten, 178 Rechtsformen, Belegarten, Auslagenarten)

  • PLZ, IBAN-Prüfziffer, Daten in der Zukunft

  • vorgerichtliche Anwaltsvergütung als Haupt- und Nebenforderung (verdoppelt die Forderung)

  • Barcode-Weg für Rechtsanwälte nur mit Glaubhaftmachung (§ 130d S. 2, 3 ZPO)

  • 9 Punkte über Basiszins gegen natürliche Personen (§ 288 Abs. 1 vs. 2 BGB)

  • Kosten des Mahnverfahrens als Auslage (§ 699 Abs. 3 ZPO)

  • rechtliche Weichen, die ausdrücklich entschieden sein müssen: Gegenleistung, streitiges Verfahren, Vergütung, Einreichung durch Berufsträger (auch in eigener Sache), vorgerichtliche Anwaltsvergütung als Haupt- oder Nebenforderung, Verbraucherbeteiligung (§ 288 BGB), Prozessgericht

Related MCP server: Dichiarazione-MCP

Tools

Tool

Wirkung

kataloge_suchen

Anspruchsart, Rechtsform, Belegart, Auslagenart nachschlagen

antrag_schema

JSON-Schema des Antrags

antrag_pruefen

Vorprüfung, nur lesend

portal_ausfuellen

Portal füllen; hält am Prozessgericht (falls nicht bestätigt) und an der Datenübersicht

ausfuellen_fortsetzen

nach Bestätigung des angezeigten Prozessgerichts weiterfüllen

eda_herunterladen

EDA-Datei speichern (nur nach Freigabe)

portal_status / portal_schliessen

Sitzung ansehen / beenden

Beispielantrag: tests/beispiel_antrag.json.

Umfang v0.1 (bewusst eng)

Unterstützt: ein Antragsteller, ein Antragsgegner (je natürliche Person oder Firma mit einem gesetzlichen Vertreter), Prozessbevollmächtigter (Reiter „Rechtsanwalt/-beistand“) oder Antragsteller selbst, ein katalogisierter Anspruch mit optional Abtretung und laufenden Zinsen, Auslagen und Nebenforderungen, Bankverbindung, Versandart EDA-Download oder Barcode.

Abgelehnt statt halb ausgefüllt: mehrere Ansprüche/Parteien/Vertreter, Auslandsanschriften (auch beim Zedenten), Urkunden-/Scheck-/Wechselmahnverfahren, sonstige Ansprüche, ausgerechnete Zinsen, RA-Gesellschaft/Inkasso als Vertreter, manuelle Gerichtswahl. Beim Barcode-Weg hält der Ausfüller auf der Übersicht an; Druck und Unterschrift macht der Mensch im Browser.

Installation

Voraussetzungen: uv, Google Chrome (sonst uv run playwright install chromium).

Als Plugin (Claude Code / Claude Desktop): Marketplace eliasreiche/mahnantrag-mcp hinzufügen und Plugin mahnantrag installieren.

Direkt als MCP-Server:

claude mcp add mahnantrag -- uv run --directory /pfad/zu/mahnantrag-mcp mahnantrag-mcp

Umgebungsvariablen (optional):

Variable

Bedeutung

MAHNANTRAG_AUSGABE

Zielordner für EDA-Dateien (Standard ~/Documents/Mahnantraege); je Antrag ein Unterordner <Zeitpunkt>_<Geschäftszeichen>, darin die Datei unter dem unveränderten Portal-Namen (z. B. EDA_MBA_09_11_2026_930226_<32 Hex>.eda), schreibgeschützt

MAHNANTRAG_BROWSER_KANAL

Playwright-Kanal (Standard chrome)

MAHNANTRAG_BROWSER_PFAD

expliziter Pfad zu einem Chromium

Datenschutz und Berufsrecht

Die Antragsdaten (Parteien, Forderung) laufen durch das Sprachmodell. In Kanzleien deshalb nur mit einem berufsrechtlich abgesicherten Modellzugang nutzen (z. B. Claude über Amazon Bedrock in der EU mit § 43e-BRAO-Vereinbarung), nicht mit einem Verbraucherkonto. Der Server selbst schreibt nur die heruntergeladene EDA-Datei auf die Platte, in einen Ordner <Zeitpunkt>_<Geschäftszeichen>. Das Protokoll bleibt im Arbeitsspeicher; Fehlermeldungen zur Antragsstruktur nennen Feldpfade, nicht die eingegebenen Werte.

Das Portal (verantwortlich: Justizministerium Baden-Württemberg, Koordinierungsstelle für das automatisierte Mahnverfahren) hat laut Analyse keinen Bot-Schutz und keine Nutzungsbedingung gegen automatisierte Bedienung. Der Ausfüller klickt die Zustimmung zum Datenschutzhinweis des Portals nur, wenn datenschutzhinweis_akzeptiert=true übergeben wird.

Entwicklung

uv sync
uv run pytest                                              # Unit-Tests, offline
uv run python scripts/mcp_rauchtest.py                     # MCP über stdio
uv run python scripts/live_probelauf.py tests/beispiel_antrag.json --sichtbar   # Live bis Übersicht, kein Download
uv run python scripts/live_probelauf.py tests/beispiel_antrag.json --gericht-bestaetigen --download /tmp/eda   # inkl. Download (nur Fantasiedaten!)

Portalwissen: docs/referenz/ (Masken, Felder, zwölf Fallen). Neue Erkenntnisse aus Live-Läufen stehen als Kommentar am Code (z. B. Begründungspflicht für sonstige Auslagen).

Sicherheit

Sicherheitslücken bitte privat melden, siehe SECURITY.md. CI führt bei jedem Push die Offline-Tests (inklusive der Freigabesperren) und einen gitleaks-Scan aus.

Quellen und Lizenz

Code: GPL-3.0-or-later, siehe LICENSE.

Ausgenommen sind die Inhalte aus der Portal-Analyse nbindewald-legal/mahnantrag-portal-reference: docs/referenz/ (unveränderte Kopie) und die daraus abgeleiteten Kataloge in src/mahnantrag_mcp/daten/*.json stehen unter CC BY 4.0. Namensnennung und Änderungen: NOTICE.

Keine Rechtsberatung. Die Verantwortung für Inhalt und Einreichung des Antrags liegt bei der antragstellenden Person bzw. dem Prozessbevollmächtigten.

Available Tools

8 tools
antrag_pruefenB
Read-only

Antrag deterministisch vorprüfen (Feldlängen, Kataloge, PLZ, IBAN, doppelte Anwaltsvergütung, § 130d ZPO, § 288 BGB, Pflicht-Entscheidungen). Schreibt nichts, öffnet keinen Browser.

Inputs: antrag (required).

antrag_schemaA
Read-only

JSON-Schema des Antrags (Felder, Pflichtangaben, Beschreibungen).

Inputs: no named parameters.

ausfuellen_fortsetzenA

Nach status 'gericht_bestaetigen': das vom Menschen bestätigte Prozessgericht übernehmen und bis zur Datenübersicht weiterfüllen. Der Name muss genau dem angezeigten Gericht entsprechen.

Inputs: prozessgericht_bestaetigt (required).

eda_herunterladenA
Destructive

EDA-Datei aus der offenen Portal-Sitzung herunterladen (nur Versandart EDA-Download).

Nur aufrufen, wenn der Mensch die Datenübersicht gesehen und ausdrücklich freigegeben hat. Gesperrt, wenn das Portal Fehler meldet (FehlerDa) oder nicht freigegebene Warnungen offen sind. Die Datei wird schreibgeschützt unter ihrem Portal-Namen gespeichert und gehasht, aber nie verändert. Zielordner: Umgebungsvariable MAHNANTRAG_AUSGABE, sonst ~/Documents/Mahnantraege. (destructiveHint, damit Clients vor dem Aufruf beim Menschen nachfragen.)

Inputs: uebersicht_vom_menschen_freigegeben (required).

kataloge_suchenA
Read-only

Katalogwerte des Portals nachschlagen.

katalog: 'anspruchsart' | 'rechtsform' | 'belegart' | 'auslage' suchbegriff: Teil des Namens (z. B. 'Kauf', 'GmbH') oder exakter Code; leer = alles.

Inputs: katalog (required), suchbegriff.

portal_ausfuellenA

Füllt online-mahnantrag.de aus und hält an der Datenübersicht an. Es wird nichts eingereicht.

Haltepunkt Prozessgericht: Ist entscheidungen.prozessgericht_bestaetigt leer oder passt es nicht zum vom Portal abgeleiteten Gericht, endet der Aufruf mit status 'gericht_bestaetigen'.

datenschutzhinweis_akzeptiert: Der Mensch hat den Datenschutzhinweis des Portals gelesen und stimmt zu (der Ausfüller klickt dort 'Ich stimme zu'). Muss True sein. sichtbar: Browserfenster zeigen (empfohlen), damit der Mensch mitlesen und übernehmen kann. Die Portal-Sitzung läuft nach ca. 30 Minuten ohne Aktivität ab.

Inputs: antrag (required), datenschutzhinweis_akzeptiert (required), sichtbar.

portal_schliessenA
Destructive

Browser schließen. Nicht heruntergeladene Eingaben im Portal gehen verloren.

Inputs: no named parameters.

portal_statusA
Read-only

Aktuelle Maske der offenen Portal-Sitzung, Minuten seit der letzten Aktivität und Protokoll.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 8 tools

    Disambiguation4/5

    The tools map cleanly onto distinct workflow stages (catalog lookup, schema, validation, form fill, resume, download, status, close). The only real risk is portal_ausfuellen versus ausfuellen_fortsetzen, which share the filling purpose, but the description explicitly gates the latter on status 'gericht_bestaetigen'. kataloge_suchen and antrag_schema both return metadata but for clearly different purposes.

    Naming Consistency4/5

    All names are lowercase snake_case following the German object_verb convention (kataloge_suchen, antrag_pruefen, portal_ausfuellen, eda_herunterladen, portal_schliessen). Two tools are noun_noun (antrag_schema, portal_status) and one inverts the order (ausfuellen_fortsetzen), which are minor deviations that remain readable.

    Tool Count5/5

    Eight tools is well-scoped for a single guided workflow: lookup, schema, validate, fill, resume, fetch, inspect, close. Each has a clear place and none appears redundant boilerplate.

    Completeness4/5

    The lifecycle is nearly closed: schema discovery, catalog lookup, pre-validation, portal filling with an explicit human-confirmation breakpoint, resume, file download, status polling and teardown. Minor gaps: there is no explicit tool to open/start a portal session (implicitly bundled into portal_ausfuellen) and no separate way to surface detailed portal error listings beyond portal_status, though agents can work around both.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables AI-driven browser automation with advanced form testing, batch operations, and intelligent element extraction for MCP-compatible applications.
      14
      6 npm
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Local-first MCP server that assists users with preparing and reviewing Italian tax declarations (Dichiarazioni) inside a controlled, user-authenticated Agenzia delle Entrate browser session, with a hard approval boundary preventing any external legal or financial action without explicit local approval.
      7
      Apache 2.0
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI assistants to prepare German freedom-of-information requests on FragDenStaat.de: identify the responsible authority with evidence, the applicable act and deadline, track requests, collect replies and attachments, and draft new requests locally before anything is sent.
      15
      24 PyPI
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables MCP clients to drive the German ELSTER tax portal by filling forms by Kennzahl, running checks, and reviewing exactly what would be sent, with final submission left to the user. It also supports read-only access to submissions, history, and inbox data plus draft and session management.
      32
      56 npm
      2
      MIT