NAV

Lexware MCP Server Documentation

Introduction

The Lexware MCP server exposes Lexware Office capabilities (contacts, invoices, quotations, bookkeeping vouchers and more) as tools via the Model Context Protocol (MCP). It lets AI assistants such as Claude, ChatGPT, Gemini etc. act on your Lexware Office account directly from a chat, without you writing any integration code.

This is a different way of using the same data as the Lexware API: the Public API is for developers who build an integration, while the MCP server lets an AI host call the same capabilities conversationally. The host decides which tool to call and asks you to confirm anything that writes or finalizes data.

What you can do with the Lexware Office MCP server depends on your contract and on the role of the user who sets up the connection. Currently, the MCP server is only available with Lexware Office XL.

The MCP server is reachable at: https://app.lexware.de/mcp

Typical Tasks

Using the Lexware MCP Server you can describe what you want in plain language and the AI assistant carries it out in your Lexware Office account. Typical tasks:

Some areas are read-only, such as down payment invoices and recurring invoice templates. See Available Tools for every tool with its scope and an example prompt, and Known Limitations for what the MCP server cannot do.

Prerequisites

Quickstart

This gets you from nothing to a first successful prompt, using an AI-based chatbot of your choice.

1. Connect

Add the Lexware MCP server to your host, pointing it at: https://app.lexware.de/mcp

Detailed instructions for connectors to the popular major clients can be found here.

2. Authenticate

Your host redirects you to log in with your Lexware Office account (standard OAuth2, see Authentication and Security). You then approve the requested scopes and accept the terms of use (Nutzungsbedingungen) for the Lexware MCP server by ticking the checkbox and clicking Zugriff erlauben. After that, control returns to your host and the connection is ready. The AI tool you connect is operated by a third party, and data returned to it is no longer covered by Lexware's data processing. Be aware of the risks and check the provider's terms of service and privacy policy carefully. See Data Handling for details.

3. Run a First Prompt

Try something like:

Zeige meine 5 neusten Rechnungen.

4. Expected Result

Your host recognizes that this requires Lexware data, calls the matching tool (search_vouchers), and replies with a summary of your 5 most recent invoices, their voucher numbers, dates and amounts.

Client Guides

Currently, Claude Desktop and ChatGPT are the supported MCP hosts. Other hosts do not work with the Lexware MCP server yet. The step-by-step guide below walks you through setting up the connection.

Claude Desktop

Add the Lexware MCP server to Claude Desktop as a custom connector.

  1. Install Claude Desktop.

  2. Open the Claude Desktop settings.

    Claude Desktop settings

  3. Go to Konnektoren (Connectors), click Hinzufügen (Add) and choose Benutzerdefinierten Connector hinzufügen (Add custom connector).

    Add custom connector

  4. Enter a name, e.g. Lexware, and https://app.lexware.de/mcp as the MCP server URL, then click Weiter (Next).

    Name and MCP server URL

  5. Under OAuth-Client, select Eigenen OAuth-Client verwenden (Use your own OAuth client). Enter lexware-claude as the client ID and the client secret public-zxPYkqfoQbHgp4tf, then click Hinzufügen (Add).

    OAuth client

  6. Click Verbinden (Connect) to start the authorization.

    Connect

  7. Your browser opens and asks you to confirm the connection. Click Verbindung fortsetzen (Continue connection).

    Confirm connection

  8. Log in with your Lexware Office account.

    Lexware login

  9. Review the requested scopes and click Zugriff erlauben (Allow access). You also need to accept the terms of use (Nutzungsbedingungen) for the Lexware MCP Server.

    Authorization request

  10. Your browser reports that the connection is established and asks to open Claude. Click Claude.app öffnen (Open Claude.app).

    Open Claude.app

  11. Back in Claude Desktop, the connector shows the available Lexware tools. By default, Genehmigung erforderlich (Approval required) is set, so Claude asks for your permission before using them.

    Connection established

  12. Start a chat and ask something that needs your Lexware data, e.g. Zeige meine offenen Rechnungen.

For connection issues, see Troubleshooting & FAQ.

ChatGPT

Add the Lexware MCP server to ChatGPT as a custom MCP server plugin.

  1. Open ChatGPT in your browser and log in.

    ChatGPT start screen

  2. Click your profile at the bottom left and choose Einstellungen (Settings).

    ChatGPT settings

  3. Under Integrationen (Integrations), click Plugins.

    Plugins in settings

  4. Click Katalog durchsuchen (Browse catalog).

    Browse catalog

  5. Click Hinzufügen (Add) and choose Benutzerdefinierten MCP-Server hinzufügen (Add custom MCP server).

    Add custom MCP server

  6. Enter a name, e.g. Lexware, and https://app.lexware.de/mcp as the Server-URL. Select OAuth as the Authentifizierung (Authentication), then open Erweiterte OAuth-Einstellungen (Advanced OAuth settings).

    Name, server URL and authentication

  7. Enter lexware-chatgpt as the OAuth-Client-ID and the client secret public-ZvKkI9Homkj5hHU7 as the Geheimer OAuth-Clientschlüssel. For the Authentifizierungsmethode für den Token-Endpunkt (Authentication method for the token endpoint), select client_secret_post.

    OAuth client settings

  8. Check that the Ressource (Resource) is https://app.lexware.de/mcp and uncheck OIDC aktiviert (OIDC enabled), which is checked by default.

    Resource and OIDC settings

  9. Tick Ich habe das verstanden und möchte weitermachen (I understand and want to continue) and click Als Plugin erstellen (Create as plugin). This can take a few seconds.

    Confirm risk notice and create plugin

  10. Click Lexware verbinden (Connect Lexware) to start the authorization.

    Connect Lexware

  11. Your browser opens the Lexware login. Log in with your Lexware Office account.

    Lexware login

  12. Review the requested scopes, accept the terms of use (Nutzungsbedingungen) for the Lexware MCP Server and click Zugriff erlauben (Allow access).

    Authorization request

  13. Back in ChatGPT, Lexware is listed under Installiert (Installed).

    Connection established

  14. Start a chat, select the plugin by typing @Lexware and ask something that needs your Lexware data, e.g. Zeige meine offenen Rechnungen.

If you also use the ChatGPT desktop app, you can check there that the plugin is active.

For connection issues, see Troubleshooting & FAQ.

Available Tools

Below you find all available tools of the Lexware MCP server. Each tool is marked Read (safe, read-only) or Write (creates or changes data). Where a write action finalizes a document, the host application is expected to confirm with the user before the model calls it.

Each tool lists the OAuth scope it needs, together with the German message you see when approving the connection (see Authentication and Security). Reading and writing are separate scopes, so a tool marked Write needs the matching .write scope. With the Lexware Office XL contract, all required scopes and features are included, so you do not need to select or configure anything yourself.

Each tool description comes with an example prompt. Use the copy icon of the prompt to paste it straight into your MCP client and adapt it to your data.

Articles

Tool What it does Example Prompt
list_articles
Read
Search the product/service article catalog, filterable by article number, GTIN or type (PRODUCT/SERVICE).
Scope: articles.read ('Artikel abrufen').
Liste alle Artikel vom Typ SERVICE auf.
get_article
Read
Get a single catalog article by id, including price and tax rate.
Scope: articles.read ('Artikel abrufen').
Welcher Preis ist für Artikel ART-1001 hinterlegt?
create_article
Write
Create a product or service article for use in line items.
Scope: articles.write ('Artikel speichern').
Lege einen neuen Service-Artikel 'Beratungsstunde' für 120 EUR netto mit 19 % USt an.
update_article
Write
Replace an existing article's data.
Scope: articles.write ('Artikel speichern').
Ändere den Preis von Artikel 'Beratungsstunde' auf 130 EUR netto.
delete_article
Write
Permanently delete an article.
Scope: articles.write ('Artikel speichern').
Lösche den Artikel 'Beratungsstunde'.

Contacts

Tool What it does Example Prompt
list_contacts
Read
Search contacts by name, email or contact number (customer or vendor number). Contacts can also be filtered by whether they are a customer or a vendor.
Scope: contacts.read ('Kontakte abrufen').
Finde den Kontakt zur Müller GmbH.
get_contact
Read
Get a contact's full details (addresses, roles, contact persons) by id.
Scope: contacts.read ('Kontakte abrufen').
Zeige mir die Details von Kontakt Sabine Müller.
create_contact
Write
Create a new customer and/or vendor contact.
Scope: contacts.write ('Kontakte speichern').
Lege einen neuen Firmenkontakt für Schmidt & Söhne OHG an.
update_contact
Write
Replace an existing contact's data.
Scope: contacts.write ('Kontakte speichern').
Aktualisiere die Rechnungsadresse von Kontakt Schmidt & Söhne OHG.

Account & Reference Data

Tool What it does Example Prompt
get_profile
Read
Get the connected account's organization data, tax settings and enabled business features.
Scope: profile.read ('Allgemeine Profilinformationen abrufen').
Welche Business-Features sind für mein Konto aktiviert?
list_countries
Read
List countries with their tax classification (domestic, intra-community, third country).
No scope required.
Gilt Frankreich als innergemeinschaftliches Land?
list_payment_conditions
Read
List the configured payment terms.
No scope required.
Welche Zahlungsbedingungen kann ich auf einer Rechnung verwenden?
list_posting_categories
Read
List bookkeeping posting categories for use on vouchers.
No scope required.
Welche Buchungskategorie soll ich für einen Tankbeleg verwenden?
list_print_layouts
Read
List the organization's print layouts.
Scope: the read scope of any sales document type, e.g. invoices.read ('Rechnungen abrufen').
Welche Druckvorlagen stehen für meine Rechnungen zur Verfügung?

Invoices

Tool What it does Example Prompt
create_invoice
Write
Create a sales invoice ('Rechnung'), optionally finalized directly.
Scope: invoices.write ('Rechnungen speichern').
Erstelle eine Rechnung für die Schmidt & Söhne OHG über 2 Beratungsstunden. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
pursue_invoice
Write
Create an invoice as a follow-up to an existing quotation, order confirmation or delivery note.
Scope: invoices.write ('Rechnungen speichern').
Erstelle aus dem Angebot AG0003 eine Rechnung. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
get_invoice
Read
Get an invoice's status, line items and totals by id.
Scope: invoices.read ('Rechnungen abrufen').
Welchen Status hat die Rechnung RE0117?

Quotations

Tool What it does Example Prompt
create_quotation
Write
Create a quotation ('Angebot') for an existing or new contact.
Scope: quotations.write ('Angebote speichern').
Erstelle ein Angebot für Sabine Müller über 5 Stück des Artikels ART-1001. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle es als abgeschlossen.
get_quotation
Read
Get a quotation's status, line items and totals by id.
Scope: quotations.read ('Angebote abrufen').
Wurde das Angebot AG0003 angenommen?

Credit Notes

Tool What it does Example Prompt
create_credit_note
Write
Create a standalone credit note ('Gutschrift') not linked to an invoice.
Scope: credit-notes.write ('Rechnungskorrekturen speichern').
Erstelle eine Gutschrift für die Müller GmbH über 50 EUR für einen zurückgegebenen Artikel. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
pursue_credit_note
Write
Create a credit note as a (partial or full) refund of an existing invoice.
Scope: credit-notes.write ('Rechnungskorrekturen speichern').
Erstelle eine Gutschrift über die Hälfte des Betrags der Rechnung RE0117. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
get_credit_note
Read
Get a credit note's status, line items and totals by id.
Scope: credit-notes.read ('Rechnungskorrekturen abrufen').
Welchen Status hat die Gutschrift GS010?

Delivery Notes

Tool What it does Example Prompt
create_delivery_note
Write
Create a delivery note ('Lieferschein') without a preceding document.
Scope: delivery-notes.write ('Lieferscheine speichern').
Erstelle einen Lieferschein für die Müller GmbH mit den Positionen aus Angebot AG0003. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle ihn als abgeschlossen.
pursue_delivery_note
Write
Create a delivery note as a follow-up to an existing sales voucher.
Scope: delivery-notes.write ('Lieferscheine speichern').
Erstelle aus dem Angebot AG0003 einen Lieferschein. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle ihn als abgeschlossen.
get_delivery_note
Read
Get a delivery note's line items and status by id.
Scope: delivery-notes.read ('Lieferscheine abrufen').
Zeige mir den Lieferschein LS005.

Order Confirmations

Tool What it does Example Prompt
create_order_confirmation
Write
Create an order confirmation ('Auftragsbestätigung') without a preceding document.
Scope: order-confirmations.write ('Auftragsbestätigungen speichern').
Erstelle eine Auftragsbestätigung für die Müller GmbH über 3 Stück des Artikels ART-1001. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
pursue_order_confirmation
Write
Create an order confirmation from an existing quotation.
Scope: order-confirmations.write ('Auftragsbestätigungen speichern').
Erstelle aus dem Angebot AG0003 eine Auftragsbestätigung. Zeige mir zuerst eine Vorschau. Erst wenn alles passt, erstelle sie als abgeschlossen.
get_order_confirmation
Read
Get an order confirmation's status and line items by id.
Scope: order-confirmations.read ('Auftragsbestätigungen abrufen').
Zeige mir die Auftragsbestätigung AB003.

Down Payment Invoices

Down payment invoices ('Abschlagsrechnungen') are read-only via the MCP server. They cannot be created or changed.

Tool What it does Example Prompt
get_down_payment_invoice
Read
Get a down payment invoice by id.
Scope: invoices.read ('Rechnungen abrufen').
Zeige mir die Abschlagsrechnung RE002.

Dunnings

Tool What it does Example Prompt
pursue_dunning
Write
Create a payment reminder (dunning - 'Mahnung') for an existing invoice or down payment invoice.
Scope: dunnings.write ('Mahnungen speichern').
Erstelle eine Mahnung für die überfällige Rechnung RE0117.
get_dunning
Read
Get a dunning's line items and totals by id.
Scope: dunnings.read ('Mahnungen abrufen').
Zeige mir die Mahnung zur Rechnung RE0117.

Recurring Templates

Recurring invoice ('Serienrechnung') templates are read-only via the MCP server. Lexware creates the actual invoices from a template automatically, nightly from 3 am CET.

Tool What it does Example Prompt
list_recurring_templates
Read
List templates for recurring invoices.
Scope: recurring-templates.read ('Serienvorlagen abrufen').
Liste meine Vorlagen für wiederkehrende Rechnungen auf.
get_recurring_template
Read
Get a recurring invoice template by id.
Scope: recurring-templates.read ('Serienvorlagen abrufen').
Zeige mir die Vorlage für die monatliche Pauschale der Müller GmbH.

Payments

Tool What it does Example Prompt
get_payments
Read
Get the payment status (open amount, paid date, payment items) of an invoice, down payment invoice, credit note or bookkeeping voucher.
Scope: payments.read ('Zahlungsinformationen von Belegen abrufen').
Wurde die Rechnung RE0117 bezahlt?

Bookkeeping Vouchers & Files

Bookkeeping vouchers (Belege) hold bookkeeping data with an attached receipt. They are distinct from sales documents such as invoices.

Tool What it does Example Prompt
search_vouchers
Read
Search across sales documents and bookkeeping vouchers by type, status, contact and date range.
Scope: voucherlist.read ('Belegliste filtern und abrufen').
Liste alle offenen Rechnungen dieses Monats auf.
create_bookkeeping_voucher
Write
Create a bookkeeping voucher (status open or unchecked).
Scope: vouchers.write ('Belege speichern').
Erstelle einen Eingangsbeleg über 150 EUR für Büromaterial auf den Lieferanten Heinz Müller GmbH.
get_bookkeeping_voucher
Read
Get a bookkeeping voucher's items, totals and contact by id.
Scope: vouchers.read ('Belege abrufen').
Zeige mir den Beleg DE-2026-10-001.
update_bookkeeping_voucher
Write
Replace a bookkeeping voucher's data.
Scope: vouchers.write ('Belege speichern').
Ändere die Buchungskategorie von Beleg DE-2026-10-001, es ist ein Tankbeleg

These two tools cover all document types. The type is selected via a parameter (document_type or link_type): invoice, quotation, credit note, delivery note, order confirmation, down payment invoice, dunning and bookkeeping voucher.

Tool What it does Example Prompt
download_document
Read
Download the file of a sales document or the attached receipt of a bookkeeping voucher. Invoices, credit notes and down payment invoices are returned as PDF by default, or as XRechnung XML if requested; all other document types are PDF only.
Scope: for sales documents the read scope of the document type, e.g. invoices.read ('Rechnungen abrufen'); for the receipt of a bookkeeping voucher files.read ('Belege herunterladen').
Lade das PDF der Rechnung RE0117 herunter.
get_app_deep_link
Read
Get the link to view or edit an entity in the Lexware web app: a contact, any of the document types above, or a recurring invoice template (edit only). It can also return the link to the Lexware upload area for bookkeeping receipts. The MCP server cannot upload files on the user's behalf. Use this link to upload manually.
No scope required.
Ich möchte einen Beleg hochladen.

Authentication and Security

Authentication

The Lexware MCP server acts on behalf of the Lexware Office user who authorized the connection, so every tool call runs with that user's access to the account. The MCP server authenticates clients with OAuth2, a widely used and supported standard. Every user in Lexware Office can connect an MCP client. No special role or setup by an administrator is required.

Bearer token

Every request to the MCP server requires a valid Bearer token in the Authorization header, i.e. Authorization: Bearer <token>.

The token is a signed JWT, obtained through the standard OAuth2 Authorization Code flow against Lexware's authorization server. This is what MCP hosts like Claude Desktop use.

Your MCP host does not need to be preconfigured with Lexware-specific endpoints: it discovers the authorization server automatically via a well-known metadata endpoint (per RFC 8414/9728), then runs the standard Authorization Code flow. You approve the connection by logging in with your Lexware Office account in your browser. After logging in, you also need to approve the requested scopes and accept the Nutzungsbedingungen (terms of use) for the Lexware MCP server.

Token Validation

Every incoming token is introspected against Lexware's OAuth2 authorization server before it is accepted (per RFC 7662). A token that is inactive or expired is rejected with 401 Unauthorized. The MCP server never performs a request against your Lexware Office data with a token it has not independently verified.

Token Lifetime

Token Validity
Access token 5 minutes
Refresh token 30 days

When the access token expires, your MCP host uses the refresh token to obtain a new one without asking you to log in again. Every time a new access token is retrieved, a new refresh token is issued along with it, so the host always continues with the latest refresh token. Once the refresh token has expired, you need to log in and approve the connection again.

Revoking Access

You can revoke an MCP connection's access at any time. Open https://app.lexware.de/addons/ and click Verwalten on the respective add-on, e.g. ChatGPT. This takes you to the connections of the specific client, where you click Verbindung trennen.

Manage the ChatGPT add-on

Confirmation of Write Actions

Tools that create, change or finalize data are marked with Write in Available Tools. MCP hosts should surface these to you for confirmation before calling them, particularly anything that finalizes a document, since a finalized document can no longer be edited via the MCP server in a prompt. Always review what the assistant is about to do before confirming a write action.

Data Handling

Tool calls read and write Lexware Office data: contacts, invoices, quotations and vouchers. This includes personal data of your customers and business partners, such as names and address data. The results of every tool call are returned to your MCP host (e.g. Claude Desktop) and from there to the LLM provider behind it. This transfer takes place at your instruction, because you decide to connect the host to your Lexware Office account.

Before connecting a host, make sure that its use is covered by your own data protection obligations, for example your privacy notice and a data processing agreement with the provider. Only connect hosts you trust with the data in your Lexware Office account, and review which data an assistant is about to read or write before confirming an action.

Rate Limiting

The MCP Server allows a maximum of 2 tool calls per second. If the limit is exceeded, the server responds with HTTP status code 429 and the tool call is not executed. The limit values are not exposed in the response.

You do not need to do anything about this: the MCP client (e.g. Claude) is expected to handle the rate limit itself, for example by retrying a call that was answered with 429 after a short wait. Just keep sending your prompts.

Known Limitations

The following use cases are not supported by the MCP Server yet.

Troubleshooting & FAQ

My Prompt Didn't Trigger Any Tool

You cannot invoke a tool by its name directly, describe what you want to achieve (e.g. "create an invoice for ..."), and your host matches it to the right tool. See Available Tools for what you can ask for.

If your host asks for approval before using a tool (Genehmigung erforderlich), the tool only runs after you have confirmed it. Some hosts also require the Lexware connector to be enabled for each conversation.

My Host Doesn't Show Any Lexware Tools

My Host Doesn't Show Any Updates on the Lexware Tools

The Login Window Doesn't Finish

Getting HTTP Status Code 401

A 401 Unauthorized means the token was rejected because it is inactive, expired or revoked (see Token Validation). The access token is only valid for 5 minutes and is renewed by your host automatically. If the refresh token has expired or the access was revoked, invoke any Lexware MCP tool with a corresponding prompt to trigger the browser authentification flow again.

I Cannot Connect My AI Chatbot to the Lexware MCP Server

Getting HTTP Status Code 429

You exceeded the limit of 2 tool calls per second, and the tool call was not executed. Your host is expected to retry it after a short wait. See Rate Limiting.

My Assistant Cannot Do What I Asked

Some actions are not supported by the MCP server yet, e.g. deleting contacts, changing invoices or finalizing existing drafts. See Known Limitations for the complete list.

Still Stuck?

Contact Lexware support.

Change Log

Change log of the Lexware MCP Server

MCP Server Changes

Disclaimer

Tool changes, especially breaking changes, will be documented in the Change Log.