MCP server wrapping the BuchhaltungsButler REST API for invoice/accounting automation.
-
Copy
.env.exampleto.envand fill in your credentials:cp .env.example .env
-
Install dependencies:
pip install -r requirements.txt
-
Run the server:
# stdio mode (for MCP clients) python server.py --transport stdio # HTTP/SSE mode (port 8000) python server.py
- Docs: https://app.buchhaltungsbutler.de/docs/api/v1/
- Swagger: https://app.buchhaltungsbutler.de/docs/api/v1.de.json
- API version: 1.9.1
Uses HTTP Basic Auth (API Client + API Secret) plus api_key in the JSON body for customer selection.
bb_list_receipts— List receipts (inbound/outbound)bb_get_receipt— Get single receipt by id_by_customerbb_upload_receipt— Upload receipt file (PDF/image)
bb_create_invoice— Create an invoice
bb_list_accounts— List all accounts
bb_list_postings— List postingsbb_create_posting— Create posting (free/receipt/transaction)
bb_list_debtors— List debtors (Debitoren)bb_list_creditors— List creditors (Kreditoren)bb_list_postingaccounts— List posting accounts
bb_add_comment— Add comment to receipt or transaction
receipts/add— Add receipt without filereceipts/delete/id_by_customer— Delete receiptreceipts/restore/id_by_customer— Restore deleted receiptreceipts/addBatch— Batch add receiptsreceipts/assigned-transactions/get— Get transactions for receipttransactions/get— List transactionstransactions/get/id_by_customer— Get single transactiontransactions/assign/receipt— Assign receipt to transactiontransactions/unassign/receipt— Unassign receipt from transactiontransactions/assigned-receipts/get— Get receipts for transactionpostings/unconfirm/free— Unconfirm free postingpostings/unconfirm/receipt— Unconfirm receipt postingpostings/assign/receipt-to-free-posting— Assign receipt to free posting
invoices/create/draft— Create invoice draftinvoices/create/e-invoice— Create e-invoiceaccounts/add— Add a basic accountsettings/add/creditor— Create creditorsettings/add/debtor— Create debtorsettings/update/creditor— Update creditorsettings/update/debtor— Update debtorsettings/add/postingaccount— Add posting accountsettings/update/postingaccount— Update posting accountpostings/add-batch/free— Batch add free postingspostings/add-batch/receipts— Batch add receipt postingspostings/add-batch/transactions— Batch add transaction postingstransactions/add— Add transactiontransactions/addBatch— Batch add transactionstransactions/assign-batch/receipt— Batch assign receipts
cost-locations/add— Add cost locationcost-locations/get— Get cost locationscost-locations/update— Update cost locationcost-locations/delete— Delete cost locationsettings/add-batch/creditors— Batch create creditorssettings/add-batch/debtors— Batch create debtors
bb_get_receipt: Missingget_fileparameter (to download file as base64)bb_list_receipts: Missingorder,include_offers,deleted,invoicenumber,due_dateparamsbb_list_postings: Missingdate_last_action_from,date_last_action_to,postingaccount,cost_location,orderparamsbb_create_posting(free): Missingpostingtext,postingaccount_debit,postingaccount_credit,vat,cost_location_twoparamsbb_create_posting(receipt/transaction): Missing multi-posting support (postingtexts,vats,amounts,creditor,debtor)- No error handling for API rate limits (100 req/min)
- No retry logic for transient failures
- No logging
- No tests