QuickBooks Online MCP
Allows managing QuickBooks Online accounting data, including searching transactions; creating, reading, updating, and deleting entities such as customers, invoices, vendors, bills, payments, journal entries, deposits, transfers, taxes, and attachments; and retrieving financial reports such as balance sheet, profit and loss, cash flow, trial balance, general ledger, aged receivables/payables, customer sales, and vendor expenses.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
QuickBooks Online MCP
Mon serveur MCP pour piloter la comptabilité QuickBooks Online de Correctia depuis Claude (app desktop et Claude Code). Je m'en sers pour chercher des transactions, sortir les rapports financiers et saisir des factures, dépenses et écritures sans ouvrir QuickBooks.
C'est un fork du serveur MCP QuickBooks Online d'Intuit, que j'ai adapté à mon usage. Les changements sont listés plus bas.
Ce que ça couvre
29 types d'entités : clients, factures, fournisseurs, factures fournisseurs, achats, paiements, écritures de journal, dépôts, virements, taxes, pièces jointes, etc.
11 rapports : bilan, état des résultats, flux de trésorerie, balance de vérification, grand livre, comptes clients et fournisseurs par ancienneté, ventes par client, dépenses par fournisseur.
Authentification OAuth 2.0 avec rafraîchissement automatique du jeton.
Related MCP server: quickbooks-mcp-server
Ce que j'ai changé par rapport à l'original
Le jeton de rafraîchissement ne meurt plus. Intuit fait tourner le refresh token à chaque rafraîchissement. Le serveur d'origine gardait l'ancien en mémoire, qui finissait par expirer. Maintenant le nouveau jeton est réécrit dans
.envà chaque rotation.Le
.envdu dépôt est toujours lu, et il a priorité. L'app Claude lance le serveur avec le dossier/comme répertoire courant et peut lui passer un jeton périmé dans sa config. Le serveur charge donc.envà partir de son propre emplacement et ses valeurs écrasent celles de l'environnement.Claude sait se servir des outils. Chaque outil dit ce qu'il fait, quand l'utiliser plutôt qu'un autre, d'où viennent les Id et le SyncToken, les règles qui font refuser l'appel (taxes TPS/TVQ, débits égaux aux crédits) et donne un exemple. Les schémas vides comme
purchase: {}sont devenus des objets avec chaque champ documenté. Le tout s'appuie sur la doc officielle d'Intuit, résumée dans docs/qbo-api-reference.md.Lecture et suppression sont signalées. Les outils portent les annotations MCP
readOnlyHintetdestructiveHint, donc Claude peut demander confirmation avant de modifier ou supprimer.Outils réparés. Les outils fournisseurs et factures fournisseurs ignoraient leurs paramètres et échouaient toujours.
update_billperdait son SyncToken.delete_vendordésactive maintenant le fournisseur, puisque QuickBooks ne permet pas de le supprimer. Les recherches filtrent vraiment (critères, dates,count), le grand livre fonctionne, etdelete_invoicen'annule plus une facture en douce quand la suppression échoue.Annuler sans supprimer. Nouveaux outils
void_invoice,void_paymentetvoid_sales_receipt.TPS/TVQ. Les créations de ventes et d'achats acceptent
GlobalTaxCalculationet un code de taxe par ligne, obligatoires pour une entreprise canadienne.
Les problèmes connus qui restent dans les handlers sont listés dans docs/known-issues.md.
Installation
git clone https://github.com/Anto39/qbo-mcp-server.git
cd quickbooks-online-mcp-server
npm install
npm run buildLe build produit dist/index.js, le point d'entrée que Claude lance. Il faut relancer
npm run build après chaque modification dans src/.
Configuration
Identifiants QuickBooks
Sur le portail développeur d'Intuit, créer une app (ou reprendre l'existante).
Récupérer le Client ID et le Client Secret.
Ajouter
http://localhost:8000/callbackdans les Redirect URIs de l'app.
Fichier .env
À la racine du dépôt :
QUICKBOOKS_CLIENT_ID=...
QUICKBOOKS_CLIENT_SECRET=...
QUICKBOOKS_REFRESH_TOKEN=...
QUICKBOOKS_REALM_ID=...
QUICKBOOKS_REDIRECT_URI=http://localhost:8000/callback
QUICKBOOKS_ENVIRONMENT=productionMettre QUICKBOOKS_ENVIRONMENT=sandbox pour tester sur une entreprise de démo.
Sans refresh token, npm run auth lance le flux OAuth : un petit serveur local s'ouvre,
le navigateur demande l'autorisation, puis les jetons sont enregistrés dans .env.
Ne jamais committer .env avec de vrais identifiants.
Brancher sur Claude
App desktop (~/Library/Application Support/Claude/claude_desktop_config.json) ou
Claude Code (claude mcp add ou ~/.claude.json) :
{
"mcpServers": {
"quickbooks": {
"command": "node",
"args": ["/chemin/vers/quickbooks-online-mcp-server/dist/index.js"]
}
}
}Les identifiants peuvent rester dans .env : pas besoin de les recopier dans la config
de Claude.
Outils
Chaque entité a ses outils create_*, get_*, update_*, delete_* et search_*, sauf
exceptions ci-dessous.
Entité | Créer | Lire | Modifier | Supprimer | Chercher |
Customer, Invoice, Estimate, Bill, Vendor, Employee, Item | ✅ | ✅ | ✅ | ✅ | ✅ |
Journal Entry, Bill Payment, Purchase, Payment | ✅ | ✅ | ✅ | ✅ | ✅ |
Sales Receipt, Credit Memo, Refund Receipt | ✅ | ✅ | ✅ | ✅ | ✅ |
Purchase Order, Vendor Credit, Deposit, Transfer | ✅ | ✅ | ✅ | ✅ | ✅ |
Time Activity, Attachable | ✅ | ✅ | ✅ | ✅ | ✅ |
Account, Class, Department, Term, Payment Method | ✅ | ✅ | ✅ | ✅ | |
Tax Code, Tax Rate, Tax Agency | ✅ | ✅ | |||
Company Info | ✅ | ✅ |
Rapports
Rapport | Outil |
Bilan |
|
État des résultats |
|
Flux de trésorerie |
|
Balance de vérification |
|
Grand livre |
|
Ventes par client |
|
Comptes clients par ancienneté |
|
Solde des clients |
|
Comptes fournisseurs par ancienneté |
|
Dépenses par fournisseur |
|
Développement
npm run build # compile src/ vers dist/
npm run watch # recompile à chaque modification
npm test # tests Jestsrc/
├── clients/ # client API QuickBooks (OAuth, rafraîchissement du jeton)
├── handlers/ # un fichier par opération
├── tools/ # définitions des outils MCP
├── helpers/
├── types/
└── index.ts # point d'entréePlus de détails : docs/ARCHITECTURE.md et docs/TESTING.md.
Si ça ne se connecte pas
Vérifier les variables dans
.env.Un jeton expiré ou révoqué se règle avec
npm run auth.Vérifier que la Redirect URI de l'app Intuit correspond à
QUICKBOOKS_REDIRECT_URI.Après une modification du code, refaire
npm run buildet redémarrer Claude.
Licence
Apache 2.0, voir LICENSE. Code d'origine © Intuit, modifications © Antoine Martin.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect QuickBooks to ChatGPT, Claude & Grok. Record bills, invoices, journal entries. Run reports.
QuickBooks Online in Claude and ChatGPT: 221 tools, full ledger, multi-company, Canada + US, FR/EN.
Connect Claude or Cursor to books, invoices, bills, payroll, and sealed closes.
Connect Claude to Dutch accounting software: e-Boekhouden invoices, contacts and ledgers.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides complete QuickBooks Online API integration for Claude Code and other MCP-compatible clients, enabling full CRUD operations on 29 entity types and 11 financial reports.100Apache 2.0
- AlicenseNot gradedqualityCmaintenanceGives Claude full read/write access to QuickBooks Online, including tools to create, delete, and query accounting data, plus reconciliation features that detect bank-feed gaps and duplicate transactions.MIT
- 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.2238 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query a connected accounting platform for organisations, invoices, contacts, chart of accounts, and profit-and-loss reports, supporting bookkeeping, AR/AP, and financial reporting workflows.299 npmMIT