QuickBooks Desktop MCP
Provides read and write access to QuickBooks Desktop on the same machine, including searching customers, items, invoices, accounts and transactions, and (with two-step confirmation codes) creating invoices, customers, items, receive payments, deposits, checks, journal entries, and reverting its own runs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@QuickBooks Desktop MCPshow my open invoices for Acme Corp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QuickBooks Desktop MCP — fork van qbbridge
Lokale MCP-server waarmee een MCP-client (Claude Desktop) QuickBooks Desktop op dezelfde pc leest en, na akkoord per boeking, boekt: facturen, klanten, items, ontvangsten, stortingen, cheques/bankkosten en journaalposten. Alleen generieke QuickBooks-handelingen; bedrijfskennis (welke klant, welk item, welke rekening, welke koers) hoort in de skill van de gebruiker, niet hier.
Herkomst
Fork van lilfroog/qbbridge (MIT),
geïmporteerd op upstream-commit 65f409e4281683682436dbc34d370c7e00c39bcb.
De MIT-licentie van het origineel staat ongewijzigd in LICENSE. Wat deze
fork toevoegt of verandert:
qbXML-versie wordt per sessie bepaald (hoogste versie die QuickBooks ondersteunt en ≤
QBBRIDGE_QBXML_MAX, standaard 13.0 voor QuickBooks 2016) in plaats van hard 16.0.32-bit build (PyInstaller x86 + Inno Setup), nodig voor 32-bit QuickBooks.
Nieuwe tools voor facturen, klanten, items, betalingen, stortingen, journaalposten, cheques, valuta en status (zie hieronder).
Elke schrijf-tool werkt in twee stappen met een controlecode die de server zelf afdwingt.
Terugdraaien alleen van eigen runs; de upstream-tools die bestaande transacties wijzigen of verwijderen zijn niet meer als tool beschikbaar.
Logboek van elk qbXML-request en -antwoord.
Related MCP server: Accounting Ledger MCP Server
Tools
Lezen (altijd toegestaan):
Tool | Wat |
| Geopend bedrijfsbestand, product/versie/land, ondersteunde qbXML-versies en de gebruikte, multicurrency aan/uit, home currency |
| Pad van het geopende bedrijfsbestand |
| Klanten zoeken op (deel van) naam, bedrijfsnaam, contact, e-mail; met valuta en saldo |
| Items zoeken op naam, art.code (ManufacturerPartNumber) of omschrijving |
| Openstaande facturen, per klant of alles |
| Factuur op nummer, bedrag en/of datum(bereik) en klant, optioneel met regels |
| Rekeningschema met valuta en saldo; saldo van één rekening |
| Alle transacties in een periode (optioneel per rekening, relatie, type) |
| Valutalijst met ISO-code en opgeslagen koers |
| Upstream-leestools |
| Eigen runs met wat ze geboekt hebben |
Schrijven (altijd twee stappen):
Tool | qbXML |
| InvoiceAdd: itemregels en tekst-kopregels, memo, RefNumber, TxnDate, SalesTaxCodeRef, optioneel ExchangeRate, valutacontrole, verwacht totaal |
| CustomerAdd, ook met valuta |
| ItemNonInventoryAdd |
| ReceivePaymentAdd, gekoppeld aan facturen, met koers |
| DepositAdd (ook in vreemde valuta, met koers) |
| CheckAdd: bankkosten, vaste posten, vraagpost-afschrijvingen |
| JournalEntryAdd, ook met één vreemde valuta |
| Upstream-schrijftools, nu ook tweestaps |
| Eigen run terugdraaien (ook tweestaps) |
Twee stappen, afgedwongen in de server
Aanroep zonder
confirm_code: de server bouwt het exacte qbXML-request, doet de controles en geeft een voorbeeld plus controlecode. Er wordt niets geboekt.Na akkoord van de gebruiker: dezelfde aanroep met dezelfde argumenten plus
confirm_code. De code is een HMAC over (tool, geopend bedrijfsbestand, exact request) met een geheime sleutel van de server, plus een nonce. Elk ander argument, een ander bestand of een verzonnen code wordt geweigerd; een code werkt één keer.
Wat de code garandeert: wat geboekt wordt is exact het request uit het getoonde voorbeeld, en er ging altijd een voorbeeld aan vooraf. Wat de code niet garandeert: dat een mens akkoord gaf. De agent krijgt de code zelf terug en kan hem doorgeven zonder te vragen. Het menselijke akkoord loopt via de toestemmingsvraag van de MCP-client: laat in Claude Desktop de schrijf-tools op "vragen" staan (zie Installatie).
Verder weigert de server: een factuurnummer dat al bestaat; een
expected_total dat niet klopt (bij een factuur is dat het subtotaal, de
som van de regels zonder btw; na het boeken nogmaals vergeleken met het
subtotaal van QuickBooks zelf, en een afwijkende factuur wordt dan direct
weer verwijderd, met de bijbehorende regel uit het run-log); onbekende
klanten, items of rekeningen; betalingen boven het openstaande saldo (ook als
dezelfde factuur meerdere keren in apply_to staat) of op facturen van een
andere klant. Bedragen als tekst worden alleen geaccepteerd als ze eenduidig
zijn: 1250.50, 1,250.50, 1.250,50 en 12,50 mogen; 1,250 of 1.250
(duizend of decimaal?) wordt geweigerd.
Terugdraaien
Elke boeking komt in een run (run_id in het resultaat; met run_id als
argument voeg je een boeking toe aan een bestaande run, bijvoorbeeld alle
regels van één bankafschrift). qb_revert_run(run_id) draait een run in
omgekeerde volgorde terug. De run wordt alleen in de eigen run-map gezocht.
Het run-log bevat per boeking alleen wat er is aangemaakt (type en
TxnID/ListID) en in welk bedrijfsbestand; de revert bouwt zelf het
TxnDelRq/ListDelRq voor precies die objecten. Een revert wordt geweigerd als
QuickBooks een ander bedrijfsbestand open heeft dan dat van de run, of als
een regel van het run-log onleesbaar is (bijvoorbeeld een halve regel na een
crash): dan wordt niets teruggedraaid en ook niets meer aan die run
toegevoegd. Antwoordt QuickBooks op een boeking met een waarschuwing
(statusCode ≠ 0) maar wel met een TxnID/ListID, dan staat de boeking toch in
het run-log en krijgt de aanroeper de waarschuwing terug. Mislukt een deel
van een revert, dan slaat een herhaalde revert de al teruggedraaide stappen
over; aan een (deels) teruggedraaide run kun je niets meer toevoegen.
Bestaande boekingen van de gebruiker kan de server niet verwijderen of
wijzigen.
Valuta (multicurrency)
exchange_rateis altijd: home-valuta per 1 eenheid vreemde valuta (bijvoorbeeld home USD, bank in EUR: 1 EUR = 1,08 USD). QuickBooks bewaart koersen op 6 decimalen.De factuurvaluta is altijd de valuta van de klant;
currencybijqb_create_invoiceis alleen een controle.QuickBooks staat een ontvangst van een klant in valuta A niet toe op een bankrekening in een andere vreemde valuta B ("The currency of the account must be either in home currency or the transaction currency"). Werkende route:
qb_receive_paymentop een tussenrekening in valuta A, daarnaqb_depositnaar de bank in valuta B met de koers; een eventuele afrondingsrest van een cent metqb_journal_entry. Hoe er in een echte administratie geboekt wordt, bepaalt de skill.Ontbreekt een valuta in de lijst van QuickBooks, dan kan die als eigen valuta worden toegevoegd (in QuickBooks zelf, niet via deze server).
Installatie (QuickBooks Desktop, 32-bit)
Altijd eerst op een kopie van het bedrijfsbestand. Maak in QuickBooks
een backup (.QBB) of kopie van het bestand, open de kopie, en test daar
qb_status en één factuur. Pas daarna het echte bestand.
QuickBooks openen als Admin, single-user, met het (kopie-)bedrijfsbestand.
QBBridgeSetup.exedraaien. De installer zetqbbridge-mcp.exe(32-bit) inC:\Program Files (x86)\QBBridgeen registreert de server alsqbbridgein%APPDATA%\Claude\claude_desktop_config.json(bestaande servers blijven staan). Windows SmartScreen kan waarschuwen ("onbekende uitgever"): de installer is niet gesigneerd.Claude Desktop herstarten. Laat bij de tools van
qbbridgede schrijf-tools (qb_create_*,qb_receive_payment,qb_deposit,qb_write_check,qb_journal_entry,qb_add_*,qb_revert_run) op "vragen" (toestemming per aanroep) staan, niet op "altijd toestaan". Die toestemmingsvraag is het menselijke akkoord; de controlecode bewaakt alleen dat het geboekte request gelijk is aan het voorbeeld.In Claude: "roep qb_status aan". QuickBooks toont dan eenmalig de toegangsvraag "QBBridge without a certificate is requesting permission":
kies "Yes, always allow access; even when my QuickBooks isn't running" (bevestigen met Yes);
het vak "type 'yes'" is grijs en neemt geen invoer (bekende QuickBooks-bug; de letters y/e springen naar de keuzerondjes). Truc: klik eerst op de link "Learn more about permissions of applications that integrates with QuickBooks". Er opent een browser; sluit die. Klik dan in het vak, typ
yes, kies Continue en daarna Confirm.Toestemming geldt per bedrijfsbestand en per programma: na een nieuwe versie van de exe of op het echte bestand komt de vraag opnieuw. Terugvinden/intrekken: Edit > Preferences > Integrated Applications.
Controleer in
qb_status:qbxml_version_in_use(13.0 of lager),country,multicurrency_onenhome_currency. Is het land niet US, CA of UK, dan ondersteunt de SDK de editie officieel niet; stop dan en overleg.
Bestanden van de server: %LOCALAPPDATA%\QBBridge\ (runs\ undo-logs,
log\ alle qbXML-requests en -antwoorden, confirm.key en
used_codes\ met één bestand per gebruikte controlecode). Instelbaar met omgevingsvariabelen:
Variabele | Standaard |
|
|
|
|
|
|
|
|
Waarom 32-bit
QuickBooks Desktop t/m 2021 is 32-bit. De COM-component
QBXMLRP2.RequestProcessor werkt dan alleen vanuit een 32-bit proces; een
64-bit Python geeft 0x800700C1. De server draait daarom als 32-bit exe
(PyInstaller met 32-bit Python). Die werkt ook met 64-bit QuickBooks 2022+
(getest met QuickBooks Enterprise 24 op Windows 11 ARM).
Bouwen
In Windows, met de 32-bit Python van python.org en Inno Setup 6:
powershell -ExecutionPolicy Bypass -File installer\build_win32.ps1 -Python C:\py32\python.exe -Iscc C:\inno\ISCC.exeHet script weigert een 64-bit Python, installeert
installer/requirements-win32.txt (mcp<2; cryptography<45, want nieuwere
versies hebben geen 32-bit wheel), bouwt installer\dist\qbbridge-mcp.exe en
configure_claude_desktop.exe en daarna installer\Output\QBBridgeSetup.exe.
Zie ook installer/README.md.
Testen
tests/test_offline.py: controlecode, versiekeuze, bedragen, en de schrijf-tools tegen een nep-QuickBooks (zonder QuickBooks; vereist het pakketmcp):python -m pytest tests/test_offline.py.tests/vm/mcp_harness.py: MCP-client die de server via stdio start zoals Claude Desktop en elke aanroep vastlegt, voor tests tegen een echte QuickBooks Desktop met een testbedrijfsbestand. Scenario's en resultaten met bedrijfsdata horen niet in deze repo.
Licentie
MIT, zie LICENSE (copyright van de oorspronkelijke auteur van qbbridge).
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect Claude or Cursor to books, invoices, bills, payroll, and sealed closes.
Headless API-first double-entry accounting & bookkeeping engine. 84 MCP tools over HTTP.
QuickBooks Online in Claude and ChatGPT: 221 tools, full ledger, multi-company, Canada + US, FR/EN.
- KonnektaOAuthnl.konnekta
Connect Claude to Dutch accounting software: e-Boekhouden invoices, contacts and ledgers.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThis MCP server enables AI assistants like Claude to perform Wave Accounting bookkeeping tasks—such as drafting invoices, managing customers, recording payments, and looking up financial data—through natural language commands.5MIT
- FlicenseAqualityDmaintenanceProvides double-entry accounting ledger creation, transaction recording, and financial reporting capabilities via MCP.7-
- AlicenseAqualityBmaintenanceConnects Claude Desktop, Claude Code, and other MCP-compatible clients to cloud accounting and GST billing records, enabling GST-compliant invoice creation, ledger and voucher management, balance queries, and real-time financial reporting through natural language with role-based tenant isolation.220MIT
- AlicenseBqualityCmaintenanceEnables querying and managing a live accounting ledger, including transactions, balances, VAT summaries, deadlines, and documents, from any MCP client.8623 npmMIT