Skip to main content
Glama

BuchPilot MCP Server

MCP Server for DACH accounting — manage contacts, invoices, vouchers, and quotes directly from Claude, Cursor, or any MCP-compatible client.

npm version License: MIT

What is this?

BuchPilot MCP is a Model Context Protocol server that connects your accounting system (currently Lexoffice) with AI assistants. You can create invoices, manage contacts, and check overdue payments using natural language — directly in Claude Desktop, Cursor, or any other MCP client.

Related MCP server: @centry-digital/bukku-mcp

Features

  • 15 tools for complete accounting automation

  • Contacts: create, retrieve, list, update

  • Invoices: create, retrieve, list, update, download PDF

  • Vouchers: create, retrieve, list (incoming invoices, credit notes)

  • Quotes: create, retrieve

  • Overdue invoices: with amounts and days overdue

  • Backend architecture — currently Lexoffice, extensible for sevDesk, Billomat, etc.

  • Plugin-ready — can integrate E-Invoice MCP tools (einvoice-mcp)

  • No database, no state — pure API proxy

Installation

Prerequisites

  • Node.js >= 18

  • A Lexoffice account with an API key

npm (global)

npm install -g buchpilot-mcp

From source

git clone https://github.com/makririch/buchpilot-mcp.git
cd buchpilot-mcp
npm install
npm run build

Configuration

Create a configuration file .buchpilot.json in one of the following locations:

  1. Path from environment variable BUCHPILOT_CONFIG

  2. ~/.buchpilot.json (home directory)

  3. ./.buchpilot.json (current directory)

Content of .buchpilot.json

{
  "backends": {
    "lexoffice": {
      "api_key": "DEIN_LEXOFFICE_API_KEY"
    }
  },
  "default_backend": "lexoffice"
}

Create Lexoffice API key

  1. Go to Lexoffice Public API

  2. Click on Create API key

  3. Copy the key and paste it into .buchpilot.json

Security note: Never store the API key in Git. Add .buchpilot.json to your .gitignore.

Usage

Start server (standalone)

# Nach npm install -g:
buchpilot-mcp

# Oder von Source:
npm start

# Entwicklung mit Auto-Reload:
npm run dev

The server runs via stdio and waits for MCP messages.

Use in Claude Desktop

See Claude Desktop Setup Guide for detailed instructions.

Quick version — add to claude_desktop_config.json:

{
  "mcpServers": {
    "buchpilot": {
      "command": "npx",
      "args": ["-y", "buchpilot-mcp"],
      "env": {
        "BUCHPILOT_CONFIG": "/Users/DEIN_NAME/.buchpilot.json"
      }
    }
  }
}

Examples (natural language in Claude)

After configuring the server, you can ask Claude, for example:

  • "Create a contact for the company Beispiel GmbH with the email info@beispiel.de"

  • "Show me all open invoices"

  • "Create an invoice for contact XYZ: 10 hours of consulting at 150 EUR each"

  • "Which invoices are overdue?"

  • "Download the PDF for invoice ABC"

  • "Create a quote for 5 licenses at 49 EUR/month"

Tool Reference

A full reference of all 15 tools with parameters, example inputs, and example outputs can be found in docs/tool-reference.md.

Quick Overview

Tool

Description

create_contact

Create a new contact (person or company)

get_contact

Retrieve contact by ID

list_contacts

List contacts with filters

update_contact

Update contact

create_invoice

Create a new invoice with line items

get_invoice

Retrieve invoice by ID

list_invoices

List invoices (filterable by status)

get_invoice_pdf

Download invoice as PDF (Base64)

update_invoice

Update draft invoice

create_voucher

Create a new voucher

get_voucher

Retrieve voucher by ID

list_vouchers

List vouchers

create_quotation

Create a new quote with line items

get_quotation

Retrieve quote by ID

get_overdue_invoices

Overdue invoices with analysis

E-Invoice Integration

BuchPilot MCP can optionally integrate the E-Invoice MCP package to generate XRechnung and ZUGFeRD directly from the accounting system:

// In deinem eigenen MCP-Server:
import { registerEInvoiceTools } from "einvoice-mcp";
registerEInvoiceTools(server);
// Ergebnis: 15 + 4 = 19 Tools

FAQ / Troubleshooting

"No .buchpilot.json found"

The server cannot find a configuration file. Create a .buchpilot.json in your home directory:

echo '{"backends":{"lexoffice":{"api_key":"DEIN_KEY"}},"default_backend":"lexoffice"}' > ~/.buchpilot.json

"401 Unauthorized" with Lexoffice

  • Is the API key correct in .dachflow.json?

  • Is the key still active? Check under Lexoffice Public API

  • API keys can expire — create a new one if necessary

"429 Too Many Requests"

Lexoffice allows a maximum of 2 requests per second. If you perform many operations in succession, wait a moment between requests.

Server starts, but Claude does not recognize the tools

  • Check if claude_desktop_config.json is correct

  • Restart Claude Desktop after configuration changes

  • Check the logs: ~/Library/Logs/Claude/mcp.log (macOS)

Invoice cannot be updated

Only invoices with the status draft can be updated. Finalized invoices are immutable.

Backend "sevDesk" not available

Currently, only Lexoffice is supported as a backend. sevDesk support is planned. You can use the n8n nodes (n8n-nodes-buchpilot) for sevDesk.

License

MIT — Free to use, including commercially.

Author

MaKri — GitHub

Available Tools

15 tools
create_contactB

Erstellt einen neuen Kontakt (Person oder Firma) im Buchhaltungssystem. Creates a new contact (person or company).

Inputs: type (required), name (required), firstName, email, +2 more.

create_invoiceB

Erstellt eine neue Rechnung mit Positionen. Creates a new invoice with line items.

Inputs: contactId (required), date (required), lineItems (required), title, +5 more.

create_quotationB

Erstellt ein neues Angebot mit Positionen. Creates a new quotation with line items.

Inputs: contactId (required), date (required), lineItems (required), expirationDate, +5 more.

create_voucherC

Erstellt einen neuen Beleg (Eingangsrechnung, Gutschrift). Creates a new voucher (purchase invoice, credit note).

Inputs: type (required), date (required), totalGross (required), taxRate, +3 more.

get_contactC

Ruft einen Kontakt per ID ab. Gets a contact by ID.

Inputs: id (required), backend.

get_invoiceC

Ruft eine Rechnung per ID ab. Gets an invoice by ID.

Inputs: id (required), backend.

get_invoice_pdfA

Laedt eine Rechnung als PDF herunter (Base64-kodiert). Downloads an invoice as PDF (base64-encoded).

Inputs: id (required), backend.

get_overdue_invoicesC

Listet alle ueberfaelligen Rechnungen mit Betrag und Faelligkeitsdatum. Lists all overdue invoices with amount and due date.

Inputs: days_overdue, limit, backend.

get_quotationC

Ruft ein Angebot per ID ab. Gets a quotation by ID.

Inputs: id (required), backend.

get_voucherC

Ruft einen Beleg per ID ab. Gets a voucher by ID.

Inputs: id (required), backend.

list_contactsC

Listet Kontakte auf mit optionalen Filtern. Lists contacts with optional filters.

Inputs: name, email, role, limit, +1 more.

list_invoicesC

Listet Rechnungen auf. Kann nach Status filtern (draft, open, paid, overdue). Lists invoices with optional status filter.

Inputs: status, contactId, limit, backend.

list_vouchersB

Listet Belege auf mit optionalen Filtern. Lists vouchers with optional filters.

Inputs: type, limit, backend.

update_contactB

Aktualisiert einen bestehenden Kontakt. Updates an existing contact.

Inputs: id (required), name, firstName, email, +1 more.

update_invoiceB

Aktualisiert eine bestehende Rechnung (nur Entwuerfe). Updates a draft invoice.

Inputs: id (required), title, introduction, remark, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool targets a distinct resource (contact, invoice, quotation, voucher) with separate actions (create, get, list, update). No overlap in purpose.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_contact, get_invoice_pdf). No mixed conventions.

    Tool Count5/5

    15 tools are appropriate for an accounting server covering contacts, invoices, quotations, and vouchers. Not too few or too many.

    Completeness4/5

    Core CRUD operations are present for contacts and invoices, with additional features like PDF download and overdue listing. However, missing updates for quotations and vouchers, and missing deletions for all resources are minor gaps.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for German e-invoice compliance (XRechnung 3.0 & ZUGFeRD 2.x) enabling AI agents to validate, generate, parse, and check compliance of electronic invoices per EN 16931.
      6
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      MCP server for the Elorus invoicing and accounting platform, enabling AI assistants to create invoices, manage contacts, and query financial data through natural language.
      43
      4
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server for Spanish accounting for freelancers and SMEs, enabling AI agents to issue invoices, OCR expense PDFs, reconcile bank transactions, and prepare quarterly VAT (Modelo 303).
      23
      4
      MIT