Lexware Office MCP Server

by JannikWempe

43 stars
328 downloads
Not rated
GitHub

About

An MCP server for Lexware Office (formerly Lexoffice) that enables MCP-capable assistants to query and manage contacts, sales documents, vouchers, files, payments, webhooks, and reference data through the Lexware Office public API. It offers two entrypoints: a stable v1 with…

Details

Author
JannikWempe
GitHub stars
43
Downloads
328
Categories
Other

- Broad Lexware Office API coverage for read and write workflows.
- Sales documents: invoices, quotations, credit notes, delivery notes, and more.
- Contact management: create, read, and update customers and vendors.
- Bookkeeping: vouchers, posting categories, payments, and file uploads.
- Webhooks: create, list, inspect, and delete event subscriptions.
- v2 Code Mode with sandboxed JavaScript execution for complex workflows.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Lexware Office MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Requires Node.js 22+ and the LEXWARE_OFFICE_API_KEY environment variable. Configure your MCP client (e.g., Claude Desktop) to start one of the two entrypoints via npx, Docker, or local TypeScript source. For v2, write safety is read-only by default unless LEXWARE_OFFICE_ALLOW_WRITES=true is set.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "lexware office mcp server": {
            "mcp-lexware-office": {
                "command": "docker",
                "args": [
                    "run",
                    "-i",
                    "--rm",
                    "-e",
                    "LEXWARE_OFFICE_API_KEY",
                    "mcp-lexware-office"
                ],
                "env": {
                    "LEXWARE_OFFICE_API_KEY": "YOUR_API_KEY_HERE"
                }
            }
        }
    }
}

McpServers

{
    "mcp-lexware-office": {
        "command": "docker",
        "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "LEXWARE_OFFICE_API_KEY",
            "mcp-lexware-office"
        ],
        "env": {
            "LEXWARE_OFFICE_API_KEY": "YOUR_API_KEY_HERE"
        }
    }
}

Lexware Office MCP Server

An MCP server for Lexware Office (formerly Lexoffice). It lets MCP-capable assistants query and manage contacts, sales documents, vouchers, files, payments, webhooks, and reference data through the Lexware Office public API.

Which server should I use?

This package currently ships two MCP server entrypoints:

| Entrypoint | Status | Tool shape | Best for |
|---|---|---|---|
| lexware-office | Stable legacy v1 | Many endpoint-shaped tools such as get-contacts, create-invoice, upload-file | Existing users and conservative production setups |
| lexware-office-v2 | Preview / planned successor | Two Code Mode tools: search and execute | New evaluations, broad API coverage, complex workflows, and future migrations |

They are separate MCP server processes in the same npm package, not one server with internal routing. A client config chooses which entrypoint to start. You may run both side by side under different MCP server names while migrating, but long-term usage should prefer one to avoid duplicate capabilities confusing the model.

Roadmap: v2 is intended to replace v1. v1 remains supported in the current major release. Once v2 is declared stable, v1 will be formally deprecated, receive only critical fixes, and be removed in the next major release with a documented migration window.

For deeper details, see docs/version-guide.md.

Features

- Broad Lexware Office API coverage for read and write workflows exposed by this server
- Sales documents: invoices, quotations, order confirmations, credit notes, delivery notes, dunning notices, and down-payment invoices
- Contact management: create, read, and update customers and vendors
- Bookkeeping: vouchers, posting categories, payments, and file uploads
- Reference data: profile, countries, print layouts, payment conditions, recurring templates
- Webhooks: create, list, inspect, and delete event subscriptions
- v2 Code Mode: discover the API catalog with search, then execute constrained Lexware API workflows with execute

v1 vs v2 at a glance

v1: endpoint-shaped tools

The v1 server exposes one MCP tool per common Lexware workflow. This is easy to inspect and works well for simple tasks:

- get-contacts
- get-invoice-details
- create-voucher
- finalize-invoice
- upload-file-to-voucher

See the full v1 tool list in docs/version-guide.md#v1-tool-surface.

v2: Code Mode

The v2 server exposes a smaller MCP surface:

- search — runs a sandboxed JavaScript async arrow function against a curated OpenAPI-lite Lexware catalog.
- execute — runs a sandboxed JavaScript async arrow function with one host capability, lexware.request, for relative /v1/... Lexware API calls.

Example v2 execute call:

async () => {
  const response = await lexware.request({
    method: 'GET',
    path: '/v1/contacts',
    query: { name: 'Muster', page: 0, size: 10 }
  });

return response.data;
}

The sandbox does not receive the Lexware API key, Node globals, filesystem access, imports, fetch, or arbitrary network access. lexware.request only accepts relative /v1/... paths and sends the API key from the host process.

Binary-safe file uploads

v2 supports binary-safe uploads via bodyBase64 (raw binary body) and multipart with contentBase64 (binary FormData parts). The host decodes base64 and builds Buffer / Blob bodies outside the QuickJS sandbox:

async () => {
  const pdfBytes = 'JVBERi0x...'; // base64-encoded PDF
  return await lexware.request({
    method: 'POST',
    path: '/v1/files',
    multipart: [
      { name: 'file', filename: 'receipt.pdf', contentType: 'application/pdf', contentBase64: pdfBytes },
      { name: 'type', value: 'voucher' },
    ],
  });
}

See docs/version-guide.md for details and all supported modes.

Configuration

Get a Lexware Office API key

Create an API key at <https://app.lexoffice.de/addons/public-api>.

Prerequisites

- Node.js 22 or higher
- LEXWARE_OFFICE_API_KEY environment variable

Claude Desktop / MCP config with NPX

Recommended: consume the packaged server

For v2 preview from GitHub, run the packaged binary. The package builds itself during GitHub installs via prepare, so users do not need to clone the repository or commit build/ artifacts.

{
  "mcpServers": {
    "lexware-office-v2": {
      "command": "npx",
      "args": ["-y", "--package=github:JannikWempe/mcp-lexware-office#v2", "lexware-office-v2"],
      "env": {
        "LEXWARE_OFFICE_API_KEY": "YOUR_API_KEY_HERE",
        "LEXWARE_OFFICE_READ_ONLY": "true"
      }
    }
  }
}

Troubleshooting: If the npx command above fails during git-dependency preparation with an error mentioning --before, your npm user config may contain minimum-release-age, which conflicts with npm's internal --before flag. Two fixes:

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.