Zum Inhalt springen
v1.1.0EN

Referenz

Konfiguration

Auf dieser Seite

Alle Einstellungen sind Umgebungsvariablen. Über stdio setzen Sie sie im env des Servereintrags Ihres MCP-Clients (Clients); im Fernzugriff gehören sie in die Umgebung des Servers. Nur ein Token ist Pflicht. Alles andere steht standardmäßig auf der sichersten Option: nur lesend, Bestätigung durch einen Menschen für bindende Schritte, kein Zugriff auf lokale Dateien.

Der Server liest die Variablen einmal beim Start, meldet alle Probleme auf einmal und startet erst, wenn alle behoben sind. Starten Sie nach einer Änderung den Client (oder den Server) neu.

Formate der Werte:

  • Schalter nehmen 1, true, yes oder on sowie 0, false, no oder off.
  • Listen sind durch Kommas getrennt, Groß- und Kleinschreibung spielt keine Rolle, zum Beispiel write,commit.
  • Ordnerlisten werden wie PATH getrennt: : unter macOS und Linux, ; unter Windows. Jeder Eintrag muss ein absoluter Pfad sein.
  • Ein leerer Wert gilt als nicht gesetzt. Clients, die jede Variable übergeben (wie das Claude-Code-Plugin), können die nicht benötigten leer lassen.

Variablen#

Token#

Setzen Sie genau eine dieser drei, es sei denn, das Profil, das Sie verwenden, gibt an, wo das Token liegt.

VariableStandardBedeutung
SEVDESK_API_TOKENIhr sevDesk-API-Token (sevDesk: Einstellungen → Benutzer → API-Token), am besten eines eigenen Benutzers. Das reine Token, ohne vorangestelltes Bearer . Pflicht über stdio und im Bearer-Modus; im OAuth-Modus nicht verwendet, dort fügt jeder Benutzer sein eigenes auf der Zustimmungsseite ein.
SEVDESK_API_TOKEN_FILEDas Token stattdessen aus dieser Datei lesen (ohne umgebende Leerzeichen). Für Docker- und Kubernetes-Secrets oder eine Datei, die nur Sie lesen können (chmod 600).
SEVDESK_API_TOKEN_KEYCHAINÜber stdio: das Token aus dem Schlüsselbund des Betriebssystems lesen, abgelegt unter dieser Bezeichnung mit token set. macOS und Linux; unter Windows noch nicht verfügbar. Eine Bezeichnung hat bis zu 64 Buchstaben, Ziffern, ., _ oder - und beginnt mit einem Buchstaben oder einer Ziffer.

Berechtigungen#

VariableStandardBedeutung
SEVDESK_ALLOWreadDie Berechtigungsstufen, die aktiviert werden: eine Liste aus read, write, commit, external oder all. read ist immer aktiv.
SEVDESK_READ_ONLY01 erlaubt nur Lesewerkzeuge, unabhängig davon, was in SEVDESK_ALLOW steht.
SEVDESK_DRY_RUN01 macht jeden Schreibvorgang zum Probelauf: Schreibwerkzeuge prüfen den Aufruf und geben eine Vorschau zurück (Status dry_run); nichts wird gesendet, niemand wird gefragt. Pro Aufruf: dryRun: true.
SEVDESK_CONFIRMelicitWie ein Mensch Aufrufe der Stufen commit und external bestätigt: elicit (eine Abfrage in Ihrem Client), browser (eine Freigabeseite in Ihrem Browser) oder off. Siehe Bestätigungsarten.
SEVDESK_I_UNDERSTAND_NO_CONFIRM0Muss 1 sein, damit SEVDESK_CONFIRM=off angenommen wird.
SEVDESK_CONFIRM_OPEN1 (HTTP: 0)Browser-Modus über stdio: jede Freigabeseite in Ihrem Standardbrowser öffnen. 0 schreibt nur ihren Link in das Log des Servers (stderr). Der Link wird dem Modell nie gezeigt. Ohne Wirkung im Fernzugriff; dort wird 1 abgelehnt, außer der Server lauscht nur auf Loopback.

Werkzeuge und Ausgabe#

VariableStandardBedeutung
SEVDESK_TOOLSETSdefaultDie Werkzeuggruppen, die geladen werden: eine Liste aus meta, contacts, invoices, credit-notes, orders, vouchers, banking, parts, reports, advanced oder default (alles außer advanced) oder all. meta wird immer geladen.
SEVDESK_STRUCTURED_OUTPUTautoauto, on oder off: ob Werkzeuge ein Ausgabeschema angeben und neben dem JSON-Text typisierten structuredContent zurückgeben. Siehe Strukturierte Ausgabe.

Dateien und Audit-Log#

VariableStandardBedeutung
SEVDESK_FILE_DIRSOrdner, aus denen Belege und E-Rechnungen gelesen werden dürfen: für Belegentwürfe (sevdesk_voucher_create_draft, sevdesk_voucher_update_draft), sevdesk_einvoice_parse und sevdesk_voucher_import_einvoice. Symbolische Links müssen innerhalb bleiben; sonst kann nichts auf Ihrer Festplatte gelesen werden. Ohne die Variable nehmen diese Werkzeuge keine lokalen Dateien an (und die beiden E-Rechnungs-Werkzeuge werden nicht angeboten).
SEVDESK_OUTPUT_DIRDer Ordner, in den sevdesk_document_save, sevdesk_csv_export und sevdesk_datev_export Dateien schreiben dürfen (PDFs, E-Rechnungs-XML, CSV- und DATEV-Exporte). Diese Werkzeuge werden nur angeboten, wenn die Variable gesetzt ist. Sie legen nur neue Dateien an, mit Modus 0600, und überschreiben nie eine.
SEVDESK_AUDIT_LOGPfad eines Protokolls im Format JSON Lines, an das nur angehängt wird, für jeden schreibenden Aufruf (Modus 0600): Vorschauen, Bestätigungen, Ausführungen und Fehlschläge. Ist die Variable gesetzt, die Datei aber nicht beschreibbar, werden Schreibvorgänge abgelehnt. Siehe Audit-Log.

Im Fernzugriff liegen die Ordner auf dem Server. Der OAuth-Modus lehnt beide Ordnervariablen ab und verwendet stattdessen Seiten zum Hochladen und Download-Links (remote.de.md).

Verbindung#

VariableStandardBedeutung
SEVDESK_RATE_LIMIT4Anfragen pro Sekunde an sevDesk, 0,1–50. sevDesk veröffentlicht keine Grenze.
SEVDESK_TIMEOUT_MS30000Zeitlimit einer Anfrage in Millisekunden, 1000–300000.
SEVDESK_BASE_URLhttps://my.sevdesk.de/api/v1Die Basis-URL der API. Nur https, ohne Benutzername, Passwort, Query-String oder Fragment. Selten nötig.

Profilauswahl#

VariableStandardBedeutung
SEVDESK_PROFILEÜber stdio: dieses Profil aus der Profildatei verwenden (Profile).
SEVDESK_PROFILES_PATH~/.config/mcp-server-sevdesk/profiles.jsonWo die Profildatei liegt, als absoluter Pfad. Standard unter Linux und macOS: $XDG_CONFIG_HOME/mcp-server-sevdesk/profiles.json, wenn diese Variable gesetzt ist; unter Windows %APPDATA%\mcp-server-sevdesk\profiles.json.

SEVDESK_PROFILE, SEVDESK_PROFILES_PATH und SEVDESK_API_TOKEN_KEYCHAIN funktionieren nur über stdio; der HTTP-Server startet mit ihnen nicht.

HTTP-Modus#

--http liest weitere Variablen (SEVDESK_HTTP_*, SEVDESK_OAUTH_*) und ändert die Bedeutung einiger der oben genannten Variablen. Beides beschreibt die Konfigurationsreferenz des Fernzugriffs.

Werkzeuggruppen#

Eine Werkzeuggruppe fasst die Werkzeuge für einen Bereich zusammen. SEVDESK_TOOLSETS wählt die Werkzeuggruppen, SEVDESK_ALLOW die Stufen darin: Ein Werkzeug wird nur angeboten, wenn beide es zulassen. Weniger Werkzeuggruppen machen die Werkzeugliste kürzer; das hilft Modellen bei der Wahl und spart Tokens.

WerkzeuggruppeUmfang
metaKontoübersicht, Stammdaten (Steuerregeln, Buchungskonten, Einheiten, Länder, …), Dokumente als Datei speichern, Upload-Anfragen im Fernzugriff. Wird immer geladen.
contactsKunden und Lieferanten: suchen, abrufen, anlegen, ändern, nächste Kundennummer.
invoicesRechnungen: auflisten, abrufen, Entwürfe, Rechnungen aus Aufträgen, Mahnungen, Fertigstellen bis Festschreiben, PDF, E-Rechnungs-XML und Tauglichkeitsprüfung.
credit-notesGutschriften: auflisten, abrufen, Entwürfe, Gutschriften aus Rechnungen, Fertigstellen bis Festschreiben, PDF.
ordersAufträge (Angebote, Auftragsbestätigungen, Lieferscheine): auflisten, abrufen, Entwürfe, fertigstellen, versenden, PDF.
vouchersBelege: auflisten, abrufen, Entwürfe mit angehängter Belegdatei, E-Rechnungen auslesen und importieren, Fertigstellen bis Festschreiben.
bankingZahlungskonten und Kontoumsätze, Zuordnungsvorschläge, Kontoumsätze Dokumenten zuordnen, private Umsätze.
partsArtikel einschließlich Lagerbestand: auflisten, abrufen, anlegen, ändern.
reportsZusammenfassungen, Altersstruktur offener Forderungen und Verbindlichkeiten, Liquidität, Änderungen seit einem Datum, Umsatzsteuer-Auswertung, Gewinn und Verlust, CSV- und DATEV-Exporte.
advancedsevdesk_api_get, ein reines Lese-GET auf jeden sevDesk-Endpunkt. Standardmäßig aus.

Jedes Werkzeug mit seiner Werkzeuggruppe, Stufe und seinen Argumenten steht in der Werkzeugreferenz.

Die Werkzeuggruppe advanced#

advanced ist aus, solange Sie die Gruppe nicht nennen (SEVDESK_TOOLSETS=default,advanced) oder all laden. Sie enthält ein Werkzeug, sevdesk_api_get: ein reines Lese-GET auf einen sevDesk-Endpunkt, den kein anderes Werkzeug abdeckt, zum Beispiel die Textvorlagen (/TextTemplate), die Einheiten von Artikeln (/PartUnity) oder angehängte Dokumente (/Document).

  • Es lehnt alles ab, was Daten ändern, Dateien liefern oder Hintergrundaufgaben starten könnte (getPdf, sendBy, bookAmount, enshrine, die Endpunkte für die nächste Nummer, Exporte und Berichte, …), bevor etwas gesendet wird, und es setzt nie ein Token in die URL.
  • Antworten sind die rohen Objekte von sevDesk, bereinigt wie nicht vertrauenswürdiger Text: unsichtbare Zeichen entfernt, lange Zeichenketten gekürzt, Binärinhalte (Dateien in Base64, Vorschaubilder) entfernt und aufgeführt. Pro Aufruf werden höchstens etwa 100 KB zurückgegeben (Antworten über 1 MiB werden abgelehnt); nextOffset setzt eine längere Liste fort.
  • Bevorzugen Sie die kuratierten Werkzeuge: Sie prüfen Eingaben, erklären Felder und formatieren Beträge und Datumsangaben.

Die Werkzeuggruppe ist standardmäßig aus, weil ein allgemeiner Lesezugriff nicht jeden Endpunkt so gut kennen kann wie ein kuratiertes Werkzeug; siehe SECURITY.de.md.

Strukturierte Ausgabe#

Jedes Werkzeug gibt sein Ergebnis als JSON-Textblock zurück. Mit strukturierter Ausgabe gibt es außerdem ein outputSchema in tools/list an und liefert dieselben Daten als typisierten structuredContent, den Clients prüfen und anzeigen können.

WertVerhalten
autoStrukturierte Ausgabe nur für Clients mit MCP-Protokollrevision 2026-07-28 oder neuer, weil einige ältere Clients damit falsch umgehen.
onImmer.
offNie; nur der JSON-Text.

Grenzen#

WasGrenze
ListenwerkzeugeSeiten mit 1–100 Datensätzen (Standard 25); Ergebnisse nennen, wie viele Datensätze ausgelassen wurden.
Anfragen an sevDeskSEVDESK_RATE_LIMIT pro Sekunde (Standard 4) und höchstens 4 gleichzeitig; Lesezugriffe können wiederholt werden, Schreibvorgänge nie.
Belege und E-Rechnungen aus einem Ordner20 MiB pro Datei; das XML in einem E-Rechnungs-PDF 5 MiB.
Dokumentdateien (PDF, XML)20 MiB.
sevdesk_api_get1–1000 Zeilen pro Aufruf, etwa 100 KB Rückgabe, Antworten über 1 MiB abgelehnt.
Freigaben im Browserje 10 Minuten, einmal verwendbar, höchstens 5 wartend.
Anweisungen des ServersHöchstens 1.500 Zeichen.

Der Fernzugriff hat eigene Grenzen (Größe von Anfragen, Ratenbegrenzung je Client, Größe von Uploads): siehe remote.de.md.

Das Token im Schlüsselbund ablegen#

Statt das Token in die Konfiguration Ihres Clients zu schreiben, legen Sie es einmal im Schlüsselbund Ihres Betriebssystems ab und geben dem Server nur seine Bezeichnung:

Terminal
npx -y mcp-server-sevdesk token set work

Der Befehl fragt nach dem Token (die Eingabe ist verdeckt), prüft es bei sevDesk, legt es unter der Bezeichnung work ab und gibt die Konto-ID aus. Lehnt sevDesk das Token ab, wird nichts abgelegt; ist sevDesk nicht erreichbar, wird es mit einer Warnung abgelegt. Konfigurieren Sie den Server dann mit "SEVDESK_API_TOKEN_KEYCHAIN": "work" statt SEVDESK_API_TOKEN.

  • token check work prüft das abgelegte Token bei sevDesk; token delete work entfernt es.
  • Das Token wird nie von der Kommandozeile übernommen, wo es in Ihrer Shell-Historie bliebe. Um es aus einer Datei abzulegen, leiten Sie es per Pipe ein: npx -y mcp-server-sevdesk token set work < token.txt, und löschen Sie die Datei danach.
  • macOS: der Anmeldeschlüsselbund, Objekt mcp-server-sevdesk, Account = Ihre Bezeichnung.
  • Linux: der Secret Service über secret-tool (Paket libsecret-tools unter Debian und Ubuntu, libsecret unter Fedora), mit laufendem und entsperrtem GNOME Keyring oder KWallet. Auf einem Server ohne grafische Oberfläche verwenden Sie SEVDESK_API_TOKEN_FILE.
  • Windows: noch nicht unterstützt. Verwenden Sie SEVDESK_API_TOKEN_FILE oder die Claude-Desktop-Erweiterung, die das Token in der Anmeldeinformationsverwaltung von Windows aufbewahrt.

Der Schlüsselbund hält das Token aus Konfigurationsdateien, Backups und Screenshots heraus. Er schützt nicht vor Programmen, die bereits unter Ihrem Benutzerkonto laufen (siehe SECURITY.de.md).

Profile#

Profile halten mehrere Einrichtungen in einer Datei, zum Beispiel zwei sevDesk-Konten oder eine nur lesende und eine buchende Einrichtung desselben Kontos, und wählen eine mit SEVDESK_PROFILE aus. Legen Sie ~/.config/mcp-server-sevdesk/profiles.json an (oder zeigen Sie mit SEVDESK_PROFILES_PATH auf einen anderen Ort):

JSON
{  "version": 1,  "profiles": {    "work": {      "token": { "keychain": "work" },      "allow": ["write"],      "fileDirs": ["/Users/me/Belege"],      "auditLog": "/Users/me/.local/state/sevdesk-work.jsonl"    },    "client-a": {      "token": { "file": "/Users/me/.config/sevdesk/client-a.token" },      "readOnly": true    }  }}

Setzen Sie dann "SEVDESK_PROFILE": "work" im env des Clients. Der Server schreibt beim Start using profile "work" in sein Log.

SchlüsselSetztWert
tokendie Token-Quelle{"keychain": "<label>"}, {"file": "/absolute/path"} oder {"env": "SEVDESK_TOKEN_<NAME>"}
allowSEVDESK_ALLOWeine Liste oder eine durch Kommas getrennte Zeichenkette
readOnlySEVDESK_READ_ONLYtrue oder false
dryRunSEVDESK_DRY_RUNtrue oder false
confirmSEVDESK_CONFIRMeine Zeichenkette
toolsetsSEVDESK_TOOLSETSeine Liste oder eine durch Kommas getrennte Zeichenkette
fileDirsSEVDESK_FILE_DIRSeine Liste absoluter Pfade
outputDirSEVDESK_OUTPUT_DIReine Zeichenkette
auditLogSEVDESK_AUDIT_LOGeine Zeichenkette
baseUrlSEVDESK_BASE_URLeine Zeichenkette
rateLimitSEVDESK_RATE_LIMITeine Zahl
timeoutMsSEVDESK_TIMEOUT_MSeine Zahl

Jeder Schlüssel setzt die Variable mit derselben Bedeutung und wird genauso geprüft. Regeln:

  • Die Datei enthält nie ein Token. token sagt, wo es aufbewahrt wird: eine Bezeichnung im Schlüsselbund, ein absoluter Dateipfad oder eine Variable namens SEVDESK_TOKEN_<NAME>, die Sie im env des Clients setzen. Ohne token gelten die üblichen Token-Variablen.
  • Kein stilles Überschreiben. Eine Variable, die sowohl in der Umgebung als auch im Profil gesetzt ist, ist ein Fehler, der beide nennt. Erlaubt ist nur das Verschärfen: SEVDESK_READ_ONLY=1 und SEVDESK_DRY_RUN=1 in der Umgebung haben immer Vorrang.
  • Die Datei muss Ihnen gehören. Unter macOS und Linux müssen die Datei und ihr Ordner Ihnen (oder root) gehören und dürfen für Gruppe und andere nicht beschreibbar sein (chmod go-w), weil ein Profil Stufen und Ordner erweitern kann. Unter Windows wird das nicht geprüft.
  • Die Datei ist striktes JSON mit höchstens 64 KiB und "version": 1; unbekannte Schlüssel werden abgelehnt.
  • npx -y mcp-server-sevdesk profiles list zeigt jedes Profil mit dem Ort seines Tokens, seinen Stufen und Werkzeuggruppen und markiert das Profil, das SEVDESK_PROFILE nennt. Es gibt nie ein Token aus.
  • Profile funktionieren nur über stdio, nicht mit --http.

Kommandozeile#

mcp-server-sevdesk ohne Argumente stellt MCP über stdio bereit; das führen MCP-Clients aus. Die übrigen Befehle sind für Sie. Führen Sie sie mit npx -y mcp-server-sevdesk <command> aus oder mit Docker als docker run --rm ghcr.io/jaylann/mcp-server-sevdesk:<version> <command>.

BefehlWas er tut
--stdioMCP über stdio bereitstellen (Standard).
--httpMCP über Streamable HTTP bereitstellen; braucht SEVDESK_HTTP_AUTH (remote.de.md).
token set <label>Ein sevDesk-Token im Schlüsselbund des Betriebssystems ablegen; fragt danach oder liest es von stdin. Siehe oben.
token check <label>Das unter der Bezeichnung abgelegte Token bei sevDesk prüfen.
token delete <label>Das unter der Bezeichnung abgelegte Token löschen.
profiles listDie Profile der Profildatei auflisten.
account-idDie sevDesk-Konto-ID des konfigurierten Tokens ausgeben (jede Token-Quelle oder ein Profil), für SEVDESK_OAUTH_ACCOUNTS.
grants list [--json]Fernzugriff: die OAuth-Zugänge (Grants) in SEVDESK_HTTP_STATE_DIR auflisten.
grants revoke <grant-id>Fernzugriff: einen Zugang widerrufen; --account <id> widerruft alle Zugänge eines Kontos, --all alle.
generate-secret32 zufällige Bytes für SEVDESK_HTTP_SECRET oder ein Bearer-Geheimnis ausgeben.
healthcheckDen lokalen HTTP-Server nach /healthz fragen (die Zustandsprüfung des Containers).
--version (-v), --help (-h)Die Version oder die Hilfe ausgeben.

Exit-Codes: 0 Erfolg, 1 Fehlschlag (der Grund steht in stderr), 2 unbekannter Befehl oder unbekanntes Argument. Die Befehle für den Fernzugriff beschreibt remote.de.md ausführlich.

Bei einer ungültigen Konfiguration schreibt der stdio-Server die Probleme nach stderr und startet trotzdem, weil manche Clients (Claude Desktop) stderr nicht zeigen und nur „Server disconnected“ melden würden. Er bietet dann kein sevDesk-Werkzeug an, sendet nichts an sevDesk und nennt die Probleme in seinen Anweisungen und in seinem einzigen Werkzeug, sevdesk_setup_problem, damit der Assistent Ihnen sagen kann, welche Einstellung Sie korrigieren müssen. Der HTTP-Modus startet weiterhin nicht.