lexware-mcp-server
lexware-mcp-server
MCP-Server für die Lexware Office API. Verwalten Sie Rechnungen, Kontakte, Artikel, Belege und mehr über das Model Context Protocol.
Inoffiziell — Community-Projekt. Nicht verbunden mit, empfohlen von oder unterstützt durch die Lexware GmbH oder die Haufe Group. „Lexware“ und „Lexware Office“ sind Marken der jeweiligen Inhaber; sie werden hier nur zur Identifizierung der API verwendet, die dieser Client anspricht (nominative faire Nutzung).
66 Tools in 20 Ressourcen-Domänen, mit 6 Einstiegspunkten, damit Sie den passenden Server für das Tool-Limit Ihres MCP-Clients auswählen können.
Installation
npm install -g @lazyants/lexware-mcp-serverOder direkt ausführen:
npx @lazyants/lexware-mcp-serverRelated MCP server: e-rechnung-mcp
Konfiguration
Das API-Token wird in dieser Reihenfolge ermittelt:
OS-Schlüsselbund (empfohlen — das Token wird nie im Klartext auf die Festplatte geschrieben)
Umgebungsvariable
LEXWARE_API_TOKEN
Token im OS-Schlüsselbund speichern
Holen Sie Ihr Token aus den Lexware Office API-Einstellungen und speichern Sie es dann mit dem nativen Anmeldedaten-Manager Ihres Betriebssystems.
[!IMPORTANT] Die folgenden Befehle lesen das Token über eine interaktive Eingabeaufforderung, statt es als Argument zu übernehmen, sodass es nie in Ihrem Shell-Verlauf oder in der Prozessliste landet. Vermeiden Sie es, das Token direkt in die Befehlszeile einzufügen.
macOS
Wenn Sie den Wert nach -w weglassen, fordert security zur Eingabe des Tokens auf (mit Bestätigung):
security add-generic-password -s "lexware-mcp" -a "api-token" -wWindows (PowerShell)
cmdkey kann das Token nur als Befehlszeilenargument entgegennehmen, wodurch es in der Prozessliste sichtbar wird. Lesen Sie es stattdessen über eine versteckte Eingabeaufforderung und schreiben Sie es direkt über CredWrite in den Windows-Anmeldedaten-Manager, sodass das Token nie in argv landet. Der Zielname der Anmeldedaten ist <account>.<service> — api-token.lexware-mcp für den Standarddienst — genau das, was der Server zurückliest:
$secure = Read-Host -AsSecureString "Lexware API token"
Add-Type -Namespace LexwareKeyring -Name Native -MemberDefinition @'
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CREDENTIAL {
public uint Flags;
public uint Type;
[MarshalAs(UnmanagedType.LPWStr)] public string TargetName;
[MarshalAs(UnmanagedType.LPWStr)] public string Comment;
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
public uint CredentialBlobSize;
public IntPtr CredentialBlob;
public uint Persist;
public uint AttributeCount;
public IntPtr Attributes;
[MarshalAs(UnmanagedType.LPWStr)] public string TargetAlias;
[MarshalAs(UnmanagedType.LPWStr)] public string UserName;
}
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool CredWriteW(ref CREDENTIAL credential, uint flags);
'@
$blob = [Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($secure)
try {
$cred = New-Object LexwareKeyring.Native+CREDENTIAL
$cred.Type = 1 # CRED_TYPE_GENERIC
$cred.Persist = 2 # CRED_PERSIST_LOCAL_MACHINE
$cred.TargetName = 'api-token.lexware-mcp' # "<account>.<service>"
$cred.UserName = 'api-token'
$cred.CredentialBlob = $blob
$cred.CredentialBlobSize = $secure.Length * 2 # UTF-16 bytes, no terminator
if (-not [LexwareKeyring.Native]::CredWriteW([ref]$cred, 0)) {
throw "CredWrite failed (Win32 error $([Runtime.InteropServices.Marshal]::GetLastWin32Error()))"
}
Write-Host 'Stored Lexware API token in Windows Credential Manager.'
} finally {
[Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($blob)
$secure.Dispose()
Remove-Variable secure, blob
}Sie verwenden einen benutzerdefinierten
LEXWARE_KEYRING_SERVICE(z. B.acme)? Setzen SieTargetNameaufapi-token.acme, damit es übereinstimmt — der Server sucht das Token unter<account>.<service>.
Linux
secret-tool store --label="Lexware Office API" service lexware-mcp username api-token
# (prompts for the token value)Sobald das Token gespeichert ist, benötigen MCP-Konfigurationsdateien keinerlei Anmeldedaten — der Server liest das Token beim Start aus dem Schlüsselbund.
Stattdessen eine Umgebungsvariable verwenden
Wenn Sie den Schlüsselbund nicht verwenden möchten, setzen Sie LEXWARE_API_TOKEN in Ihrer Shell oder in der MCP-Client-Konfiguration:
export LEXWARE_API_TOKEN=your-token-hereUmgebungsvariablen
Variable | Standard | Beschreibung |
| — | API-Token; wird verwendet, wenn der Schlüsselbund keinen Eintrag für den konfigurierten Dienst enthält |
|
| Name des Schlüsselbund-Dienstes. Überschreiben Sie diesen, wenn Sie gleichzeitig mit mehreren Lexware-Konten verbinden möchten — führen Sie pro Konto eine Serverinstanz aus, jeweils mit eigenem Dienstnamen |
Optional können Sie den öffentlichen Schlüssel für die Webhook-Signatur überschreiben, der von lexware_verify_webhook_signature verwendet wird (standardmäßig von Lexware abgerufen und zwischengespeichert):
export LEXWARE_WEBHOOK_PUBLIC_KEY="$(cat lexware-webhook-public.pem)"Einstiegspunkte
Befehl | Domänen | Tools |
| Alle 20 Domänen | 66 |
| Invoices, Credit Notes, Quotations, Order Confirmations, Delivery Notes, Down Payment Invoices, Dunnings, Voucherlist | 32 |
| Contacts, Articles | 10 |
| Vouchers, Voucherlist, Payments | 8 |
| Countries, Payment Conditions, Posting Categories, Profile, Print Layouts | 5 |
| Event Subscriptions, Files, Recurring Templates | 12 |
Verwenden Sie Split-Server, um die Kontextgröße zu reduzieren — wählen Sie nur die Splits, die Sie benötigen.
Claude Code
Fügen Sie dies zu ~/.claude/settings.json hinzu. Wenn Sie das Token im OS-Schlüsselbund unter dem Standard-Dienstnamen lexware-mcp gespeichert haben (empfohlen), wird kein env-Schlüssel benötigt:
{
"mcpServers": {
"lexware": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"]
}
}
}Wenn Sie den Ansatz mit der Umgebungsvariable bevorzugen:
{
"mcpServers": {
"lexware": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"],
"env": { "LEXWARE_API_TOKEN": "your-token-here" }
}
}
}Split-Server
Verwenden Sie Split-Server, um die Kontextgröße zu reduzieren — wählen Sie nur die Einstiegspunkte, die Sie benötigen. Das Flag -p @lazyants/lexware-mcp-server teilt npx mit, aus welchem Paket der Befehl stammt; das letzte Argument (z. B. lexware-mcp-sales) ist die spezifische Einstiegspunkt-Binärdatei, die in diesem Paket definiert ist (siehe Einstiegspunkte):
{
"mcpServers": {
"lexware-sales": {
"command": "npx",
"args": ["-y", "-p", "@lazyants/lexware-mcp-server", "lexware-mcp-sales"]
},
"lexware-contacts": {
"command": "npx",
"args": ["-y", "-p", "@lazyants/lexware-mcp-server", "lexware-mcp-contacts"]
}
}
}Beispiel für mehrere Konten (zwei Lexware-Unternehmen, Tokens unter separaten Schlüsselbund-Dienstnamen gespeichert):
{
"mcpServers": {
"lexware-company-a": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"],
"env": { "LEXWARE_KEYRING_SERVICE": "lexware-company-a" }
},
"lexware-company-b": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"],
"env": { "LEXWARE_KEYRING_SERVICE": "lexware-company-b" }
}
}
}Claude Desktop
Fügen Sie dies zu claude_desktop_config.json hinzu. Mit dem OS-Schlüsselbund (empfohlen — setzt voraus, dass das Token unter dem Standard-Dienstnamen lexware-mcp gespeichert ist):
{
"mcpServers": {
"lexware": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"]
}
}
}Stattdessen mit einer Umgebungsvariable:
{
"mcpServers": {
"lexware": {
"command": "npx",
"args": ["-y", "@lazyants/lexware-mcp-server"],
"env": { "LEXWARE_API_TOKEN": "your-token-here" }
}
}
}Tools
Invoices (5 Tools) — Vertrieb
lexware_create_invoice (supports finalize=true at creation), lexware_get_invoice, lexware_download_invoice_file, lexware_pursue_invoice, lexware_deeplink_invoice
Credit Notes (5 Tools) — Vertrieb
lexware_create_credit_note, lexware_get_credit_note, lexware_download_credit_note_file, lexware_pursue_credit_note, lexware_deeplink_credit_note
Quotations (4 Tools) — Vertrieb
lexware_create_quotation, lexware_get_quotation, lexware_download_quotation_file, lexware_deeplink_quotation
Order Confirmations (5 Tools) — Vertrieb
lexware_create_order_confirmation, lexware_get_order_confirmation, lexware_download_order_confirmation_file, lexware_pursue_order_confirmation, lexware_deeplink_order_confirmation
Delivery Notes (5 Tools) — Vertrieb
lexware_create_delivery_note, lexware_get_delivery_note, lexware_download_delivery_note_file, lexware_pursue_delivery_note, lexware_deeplink_delivery_note
Down Payment Invoices (3 Tools) — Vertrieb
lexware_get_down_payment_invoice, lexware_download_down_payment_invoice_file, lexware_deeplink_down_payment_invoice
Dunnings (4 Tools) — Vertrieb
lexware_get_dunning, lexware_download_dunning_file, lexware_pursue_dunning, lexware_deeplink_dunning
Voucherlist (1 Tool) — Vertrieb, Buchhaltung
lexware_list_voucherlist
Standardmäßig ist dies eine einseitige Durchreichung der API-Antwort. Zwei Ergänzungen sind optional:
fetchAllPages: truefolgt der Paginierung, bis jede Seite abgerufen ist, begrenzt auf 100 Anfragen. Das Ergebnis fügtfetchedPagesundtruncatedhinzu, wobei Letzteres einen Satz markiert, der durch die Begrenzung abgeschnitten wurde — API-Felder wietotalElementsbleiben erhalten.contactName(SQL-artige%/_-Platzhalter, ohne Beachtung der Groß-/Kleinschreibung) undhasOpenAmountfiltern nach dem Abruf clientseitig, und beide implizierenfetchAllPages. Sie werden hier statt auflexware_list_vouchersangewendet, weil/voucherlistdie Antwortform ist, diecontactNameundopenAmountenthält.
page kann mit keiner der drei Optionen kombiniert werden — diese Modi lesen jede Seite, daher ist ein Start-Offset bedeutungslos. Verwenden Sie stattdessen size, um die Batch-Größe zu steuern. Die Kombination wird abgelehnt und nicht stillschweigend ignoriert, sodass niemand annehmen kann, ein Offset sei berücksichtigt worden, obwohl er es nicht wurde.
Contacts (5 Tools) — Kontakte
lexware_list_contacts, lexware_get_contact, lexware_create_contact, lexware_update_contact, lexware_deeplink_contact
Articles (5 Tools) — Kontakte
lexware_list_articles, lexware_get_article, lexware_create_article, lexware_update_article, lexware_delete_article
Vouchers (6 Tools) — Buchhaltung
lexware_list_vouchers, lexware_get_voucher, lexware_create_voucher, lexware_update_voucher, lexware_upload_voucher_file, lexware_deeplink_voucher
lexware_list_vouchers erfordert voucherNumber. GET /vouchers ist ein Lookup-Endpunkt und keine durchsuchbare Sammlung — die API antwortet ohne ihn mit 400 "voucherNumber parameter is required". Zum Durchsuchen oder Filtern von Belegen verwenden Sie lexware_list_voucherlist, den Sammlungs-Endpunkt, der auch die Zusammenfassungsfelder (contactName, openAmount) enthält, die /vouchers nicht hat.
lexware_get_voucher normalisiert voucherStatus in Kleinbuchstaben und wiederholt eine 404 dreimal (1 s / 2 s / 4 s), um die Indexierungsverzögerung nach einem Upload abzudecken; wenn der Beleg immer noch fehlt, gibt es { voucherId, status: "processing", message } zurück. Andere Fehler werden als Fehler gemeldet.
Payments (1 Tool) — Buchhaltung
lexware_get_payments
Countries (1 Tool) — Referenz
lexware_list_countries
Payment Conditions (1 Tool) — Referenz
lexware_list_payment_conditions
Posting Categories (1 Tool) — Referenz
lexware_list_posting_categories
Profile (1 Tool) — Referenz
lexware_get_profile
Print Layouts (1 Tool) — Referenz
lexware_list_print_layouts
Event Subscriptions (5 Tools) — System
lexware_create_event_subscription, lexware_list_event_subscriptions, lexware_get_event_subscription, lexware_delete_event_subscription, lexware_verify_webhook_signature
Files (4 Tools) — System
lexware_upload_file, lexware_download_file, lexware_get_file_status, lexware_deeplink_file
lexware_get_file_status ruft GET /files/{id}/status auf. Das bloße GET /files/{id} ist die Binär-Download-Route — mit Accept: application/json antwortet es weiterhin mit 200 und dem base64-kodierten Dateiinhalt, sodass es niemals Status-Metadaten liefern kann. Die Status-Route ist scope-basiert: API-Schlüssel ohne die erforderliche Berechtigung erhalten von Lexware access_denied statt eines Status.
Beide Upload-Tools (lexware_upload_file und lexware_upload_voucher_file) akzeptieren die Datei entweder als contentBase64 oder als filePath — einen absoluten Pfad, der vom MCP-Serverprozess gelesen werden kann. Bevorzugen Sie filePath für alles Größere: Base64 bläht die Nutzlast um etwa ein Drittel auf und muss durch das Kontextfenster des Modells reisen. Mit filePath wird fileName standardmäßig auf den Basisnamen der Datei gesetzt und contentType wird für .png, .jpg/.jpeg, .tiff/.tif und .xml automatisch erkannt, mit Rückfall auf application/pdf. Geben Sie genau eine der beiden Optionen an — die Angabe beider oder keiner ist ein Validierungsfehler.
Uploads sind auf 5 MB begrenzt. Bei filePath wird die Größe aus dem geöffneten Deskriptor vor dem Lesen der Datei ermittelt, sodass eine zu große Datei nur einen stat kostet statt eines vollständigen Ladens in den Speicher, und alles, was keine reguläre Datei ist, wird sofort abgelehnt (das Lesen von /dev/zero würde sonst nie zurückkehren). Die dekodierte Byte-Anzahl wird danach erneut geprüft, was auch contentBase64 abdeckt. Fehler enthalten einen file_too_large-Fehler mit der tatsächlichen und der maximalen Größe.
Recurring Templates (3 Tools) — System
lexware_list_recurring_templates, lexware_get_recurring_template, lexware_deeplink_recurring_template
Sicherheit
Nutzen Sie den OS-Keyring, um Ihr API-Token vollständig aus Konfigurationsdateien und der Shell-Historie herauszuhalten (siehe Konfiguration)
Committen Sie Ihr API-Token niemals in die Versionskontrolle
Verwenden Sie Nur-Lese-Zugriff, wenn Sie nur Ressourcen auflisten/abrufen müssen
Create-, Update- und Delete-Tools verändern echte Geschäftsdaten — Rechnungen, Kontakte und Buchhaltungsdatensätze in Ihrem Lexware-Konto
Das Raten-Limit wird automatisch behandelt: Anfragen werden bei 429 mit exponentiellem Backoff wiederholt, einschließlich Datei-Uploads — der Multipart-Body wird bei jedem Wiederholungsversuch neu aufgebaut, sodass er sicher erneut abgespielt werden kann
Veröffentlichung (Releasing)
Releases werden über das GitHub-Release-Ereignis ausgeliefert. Ablauf für Maintainer:
Version in
package.json,package-lock.jsonundserver.jsonerhöhen (npm version <x.y.z> --no-git-tag-versionaktualisiert die ersten beiden zusammen).npm run check-versionsschlägt hart fehl, es sei denn,package.json#/version,server.json#/packages[0].versionund beidepackage-lock.json-Versionfelder (Root undpackages[""]) stimmen überein.server.json#/versionwird lockerer geprüft: Es muss vorhanden sein, wird aber nur als Regressionsprüfung gegenpackages[0].versionverglichen — es darf legitimerweise voraus sein (Registry-Neuveröffentlichungen erhöhen nur dieses Feld), sodass ein auf der vorherigen Version zurückgelassener Wert mit einerWARN:-Zeile und ohne Fehler durchgeht. Bei einer normalen Veröffentlichung sollten sich beide zusammen bewegen, lesen Sie also die Ausgabe des Skripts, statt sich auf den Exit-Code zu verlassen.CHANGELOG.mdwird überhaupt nicht geprüft.CHANGELOG.mdaktualisieren.Committen und den Versionssprung vor der Release-Erstellung in
mainmergen. Erstellen Sie dann den Tag selbst, auf einem SHA, den Sie geprüft haben, und erst danach das Release daraus:V=X.Y.Z && PR=<release-pr-number> && SHA="$(gh pr view "$PR" --json mergeCommit -q .mergeCommit.oid)" && test -n "$SHA" && git fetch origin main && git merge-base --is-ancestor "$SHA" origin/main && PKG="$(git show "$SHA:package.json")" && test "$(printf '%s' "$PKG" | node -pe 'JSON.parse(require("fs").readFileSync(0,"utf8")).version')" = "$V" && CL="$(git show "$SHA:CHANGELOG.md")" && printf '%s\n' "$CL" | awk -v v="$V" 'index($0,"## ["v"]")==1{f=1;next} /^## \[/{f=0} /^\[[0-9]+\.[0-9]+\.[0-9]+\]:/{f=0} f' > "/tmp/notes-v$V.md" && grep -q '[^[:space:]]' "/tmp/notes-v$V.md" && git tag -a "v$V" "$SHA" -m "v$V" && git push origin "v$V" && gh release create "v$V" --verify-tag --notes-file "/tmp/notes-v$V.md"Der Fehler, den das verhindert: Ohne vorhandenen Tag platziert
gh release createeinen auf der Spitze des Standard-Branches. Wenn der Bump also noch auf einem Release-Branch liegt, wird der Commit des vorherigen Releases getaggt. Der Workflow veröffentlicht dann die Version, die er in derpackage.jsondieses Commits findet, und Sie erhalten einvX.Y.Z-GitHub-Release, das stillschweigend die alte Version neu veröffentlicht. Seit 5.2.0 weigert sich der Veröffentlichungs-Workflow selbst, fortzufahren, wennGITHUB_REF_NAMEnichtv<package.json-Version>ist (#103), sodass ein falsch getaggtes Release jetzt vornpm publishfehlschlägt, statt stillschweigend neu zu veröffentlichen. Diese Absicherung greift jedoch erst, wenn der Workflow bereits läuft — die obige Reihenfolge ist es, die verhindert, dass der falsche Commit überhaupt erst getaggt wird. Verwenden Sie sie also weiterhin, statt sich darauf zu verlassen, dass der Workflow den Fehler abfängt.Jedes Element ist tragend:
gh pr view … .mergeCommit.oidbenennt den eigenen Squash-Commit des Release-PRs. Ersetzen Sie nicht durchgit rev-parse origin/main— das ist lediglich das, was sich zum Zeitpunkt Ihrer Betrachtung aufmainbefindet, sodass ein unabhängiger Merge in der Zwischenzeit getaggt und ausgeliefert würde.ghbeendet sich mit 0 und gibt nichts aus für einen nicht gemergten PR, daher das explizitetest -n.Die
&&-Kette stoppt beim ersten Fehler, statt zum irreversiblen Schritt durchzufallen. Beidegit show-Aufrufe werden einer Variablen zugewiesen statt direkt gepipet, damit ihr Exit-Status tatsächlich geprüft wird — eine Pipeline meldet nur den Status ihres letzten Befehls, sofernpipefailnicht gesetzt ist, was hier nicht vorausgesetzt wird.git merge-base --is-ancestorbeweist, dass der Commit tatsächlich vonmainaus erreichbar ist. Bloße Existenz reicht nicht — ein Commit kann lokal vorhanden sein, weil ein anderer Branch gefetcht wurde, und wenn seine Versionsdateien zufällig passen, würde er sonst alle übrigen Prüfungen passieren.Der Versionstest liest
package.jsonaus dem Ziel-Commit, nicht aus dem Arbeitsbaum, der die richtige Version anzeigen würde, während$SHAwoanders hinzeigt.Das
awkhebt den Abschnitt dieser Version aus derCHANGELOG.mddes Commits für--notes-file. Ohne das wäre der Release-Body das, was--notes-from-tagin der Annotation findet — in diesem Ablauf der Literal-StringvX.Y.Z, was für jede Version eine dürftige Release-Notiz ist und für ein Major mit Breaking Change aktiv irreführend. Es stoppt an der nächsten## [-Überschrift oder an der ersten Link-Referenz-Definition, weil der älteste Eintrag in der Datei keine Überschrift danach hat und sonst den gesamten Link-Referenz-Block verschlucken würde.grep -qstatttest -ssichert das Ergebnis ab: Ein Abschnitt, der abgesehen von seiner Leerzeile leer ist, erzeugt trotzdem eine Ein-Byte-Datei, dietest -sakzeptiert.--verify-taglässtghabbrechen, statt einen Tag zu erfinden, falls der Push nicht angekommen ist — die Absicherung gegen das oben beschriebene Zurückfallen vonghauf die Spitze-des-Standard-Branches-Verhalten.
Wenn
gh release createfehlschlägt, nachdem der Tag bereits gepusht wurde, führen Sie nicht den gesamten Block erneut aus — er stoppt beigit tag, was korrekt ist. Führen Sie nur den letzten Befehl erneut aus.Der Workflow
Publish to npm + MCP Registryläuft automatisch: Er führtnpm publishmit Provenance aus, pollt die Registry, bis das Tarball verfügbar ist, und pusht dann die passendeserver.jsonübermcp-publisheran die MCP Registry.
Der Workflow überspringt npm publish sauber, wenn die Version bereits auf npm ist (Cutover-Absicherung für teilweise manuell veröffentlichte Releases).
Publishing-Authentifizierung — npm Trusted Publishing (kein Token)
Das Publishing verwendet npm Trusted Publishing über OIDC — es gibt kein NPM_TOKEN-Secret. Die id-token: write-Berechtigung des Workflows wird zur Veröffentlichungszeit gegen ein kurzlebiges Einmal-Publishing-Token eingetauscht, unter Verwendung der Trusted-Publisher-Bindung, die für @lazyants/lexware-mcp-server in der npm-Web-UI konfiguriert ist. Die einzige erforderliche Einrichtung ist diese Trusted-Publisher-Bindung auf npm; in den Repository-Secrets muss nichts gespeichert werden.
Haftungsausschluss
Dies ist ein inoffizielles, unabhängiges Community-Projekt. Es ist weder mit der Lexware GmbH, der Haufe Group noch deren Tochtergesellschaften verbunden, von ihnen unterstützt oder gesponsert. Für offiziellen Lexware-Support wenden Sie sich direkt an Lexware — Probleme mit diesem MCP-Server sollten hier gemeldet werden, nicht an Lexware.
„Lexware" und „Lexware Office" sind Marken ihrer jeweiligen Inhaber und werden im Namen und in der Dokumentation dieses Projekts unter nominativer Fair-Use-Nutzung verwendet, ausschließlich zur Identifizierung der Drittanbieter-API, mit der dieser Client verbunden ist.
Create-, Update- und Delete-Operationen verändern echte Geschäftsdaten in Ihrem Lexware-Konto. Die Autoren stellen diese Software „wie besehen" bereit und übernehmen keine Verantwortung für unbeabsichtigte Änderungen, Datenverlust oder andere Schäden, die aus ihrer Nutzung entstehen. Testen Sie gegen ein Sandbox- oder nicht-kritisches Konto, bevor Sie Schreiboperationen gegen Produktionsdaten ausführen.
Lizenz
FSL-1.1-MIT — siehe LICENSE für die vollständigen Bedingungen.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityCmaintenanceMCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.1537
- FlicenseNot gradedqualityCmaintenanceMCP server for German e-invoicing with tools to generate and validate XRechnung CII XML locally, supporting German VAT rates and § 19 UStG.
- AlicenseAqualityBmaintenanceEnables MCP-capable assistants to query and manage Lexware Office contacts, sales documents, vouchers, files, payments, webhooks, and reference data via the Lexware Office public API. Adds bank reconciliation tools for matching bank statement CSVs against Lexware vouchers or scanned receipt PDFs.4MIT
- AlicenseAqualityBmaintenanceMCP server for Lexware Office that enables querying and managing contacts, sales documents, vouchers, files, payments, and webhooks through a sandboxed two-tool interface (search/execute) with read-only-by-default write safety.2MIT
Related MCP Connectors
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
A MCP server for the Frankfurter API for currency exchange rates.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lazyants/lexware-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server