Lexware Office MCP Server
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
Jump to
- 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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Lexware Office MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- 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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



