QuickBooks Online MCP Server
Intuit's official local MCP server: an agent finds and creates invoices, payments and customers in QuickBooks Online
- 436 ★ on the repository
- Last commit
- Apache-2.0
Broad access
Why this level
- The server sees company financial data: invoices, payments, journal entries, employee and vendor details and tax codes
- Create, update and delete tools change the real books, and a deleted invoice or payment is hard to bring back
- The app secret and refresh token sit in .env in plain text, and the token is rewritten on every renewal
Install
- Works in
Manual install
git clone https://github.com/intuit/quickbooks-online-mcp-server.git && cd quickbooks-online-mcp-server && npm install && npm run buildThen copy .env.example to .env, enter your Intuit app keys and obtain a token with `npm run auth`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The server sees company financial data: invoices, payments, journal entries, employee and vendor details and tax codes
- Create, update and delete tools change the real books, and a deleted invoice or payment is hard to bring back
- The app secret and refresh token sit in .env in plain text, and the token is rewritten on every renewal
This is third-party code. Review the repository files before installing.
What it does
The server connects an AI agent to the QuickBooks Online accounting system through the official API. It runs on your machine as a stdio process and signs in to a QuickBooks company with OAuth 2.0. For 29 entity types, including customers, invoices, payments, vendors, employees, journal entries and tax codes, it offers create, read, update, delete and search operations. Tax codes, rates and agencies are read-only. Beyond records, the server builds 11 financial reports: balance sheet, profit and loss, cash flow, trial balance, general ledger, sales by customer, and receivables and payables by age. An invoice can be fetched as a PDF, either returned inline as base64 or saved to the folder set by the QBO_PDF_OUTPUT_DIR variable. Environment variables switch whole groups of tools off: QUICKBOOKS_DISABLE_WRITE removes creation, QUICKBOOKS_DISABLE_UPDATE removes editing and QUICKBOOKS_DISABLE_DELETE removes deletion. Read and search tools always stay.
Who it is for. For accountants, finance leads and developers who keep books in QuickBooks Online and want Claude Code to handle lookups, reconciliations and reports.
Good fit when
- You need to find a customer's unpaid invoices and pull an aged receivables report
- You want a balance sheet or a profit and loss report for a period and want to walk through it with an agent
- You have to create a batch of customers, invoices or vendors from a list, and doing it in the interface takes long
- A developer is debugging a QuickBooks integration on a sandbox company and wants to inspect data quickly
- You need an invoice PDF that the agent saves to a chosen folder
Not a fit when
- You keep books in another system: the server works with QuickBooks Online only
- The agent must not be trusted to change the books and you are not ready to set the write-disabling variables
- You want a one-step install from a package registry: the server installs from source and needs your own Intuit app
- You need one server shared across a team: it runs as a local stdio process on one machine
Example request
Find all unpaid invoices for the customer Acme from the last 90 days and show the aged receivables reportMCP
- Transport
- stdio
- Authentication
- OAuth
Environment variables
QUICKBOOKS_CLIENT_IDrequired- App client ID from the Keys & Credentials page in the Intuit Developer Portal
QUICKBOOKS_CLIENT_SECRETrequired, secret- App client secret from the same page
QUICKBOOKS_REFRESH_TOKENrequired, secret- Refresh token issued by `npm run auth`
QUICKBOOKS_REALM_IDrequired- QuickBooks company ID
QUICKBOOKS_ENVIRONMENTrequired- Environment: sandbox or production
QUICKBOOKS_DISABLE_WRITE- true removes the create tools
QUICKBOOKS_DISABLE_UPDATE- true removes the update tools
QUICKBOOKS_DISABLE_DELETE- true removes the delete tools
QUICKBOOKS_TOKEN_STORE_PATH- Where to store the rotating token when the file system is read-only
QBO_PDF_OUTPUT_DIR- Folder where the server saves invoice PDFs instead of returning base64
Limitations
- Access goes through an app you must register in the Intuit Developer Portal. Intuit has no personal API keys, so OAuth cannot be skipped. A sandbox test company is the easiest start.
- For a real company the portal rejects localhost redirect URIs. You need a public HTTPS address, such as a temporary ngrok tunnel, and only for the one-time code exchange.
- Node.js is required, and the server is built with `npm install` and `npm run build`. The instructions mention no ready published package.
- Deletion is not available everywhere: accounts, classes, departments, terms, payment methods and tax entities have no delete or are read-only.
- The server rewrites the refresh token to a file on every renewal, so a read-only file system needs the QUICKBOOKS_TOKEN_STORE_PATH variable.
How to disable. Remove the quickbooks entry from the MCP client config. To close access completely, delete the .env file with the keys and revoke the app token in the Intuit Developer Portal.
FAQ
How do I connect QuickBooks Online to Claude Code?
Build the server from source, fill .env with the app keys from the Intuit Developer Portal and obtain a token with `npm run auth`. Then add an MCP config entry with the node command, the path to dist/index.js and the QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID and QUICKBOOKS_ENVIRONMENT variables.
Can I stop the agent from changing data in QuickBooks?
Yes. Set QUICKBOOKS_DISABLE_WRITE, QUICKBOOKS_DISABLE_UPDATE and QUICKBOOKS_DISABLE_DELETE to true, and the create, update and delete tools are not registered. Read and search stay available.
Why doesn't localhost work as the redirect address for a real company?
In production mode the Intuit portal rejects localhost redirect URIs and requires a public HTTPS address. A sandbox company accepts http://localhost:8000/callback. After the first exchange the refresh token lives in .env, and day-to-day work no longer needs the public address.
Which reports can the server build?
Eleven: balance sheet, profit and loss, cash flow, trial balance, general ledger, sales by customer, customer balance, vendor expenses, and receivables and payables by age, with a detailed variant for receivables. Tool names start with get_, for example get_balance_sheet.
Where does the server store the refreshed token?
In .env next to the compiled module: the path is resolved from the module, not from the shell's working folder. In a container with a read-only file system, set QUICKBOOKS_TOKEN_STORE_PATH and the token goes there.
Discussion
No questions or reviews yet.
Related
MCP serversYooKassa MCP server
MCP-сервер ЮKassa
YooKassa official MCP: an agent creates payment links and invoices, checks statuses and refunds, but cannot move money on its own
MCP server for 1C:Enterprise data over OData: receivables, sales, stock and cash, plus document creation and posting behind a separate flag
Tochka Bank MCP server
MCP-сервер Точка Банка
Tochka Bank's official MCP: an agent checks accounts and balances, builds statements and drafts payments that you sign in online banking
Official Paddle Billing MCP server: catalog, customers, transactions, subscriptions and reports via your agent, with a filter for risky operations
An MCP server for 1C-Fresh over standard OData: invoices, sales, counterparties, working around known 1C-Fresh OData quirks and the 22 percent VAT
MCP server for 1C:Enterprise databases over standard OData: catalogs, documents, registers and accounting with no configuration extension
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| QuickBooks Online MCP Server (this entry) | yes | OAuth | 436 | |
| Kontur.Elba MCP server | no | API key | 0 | works with Kontur.Elba: counterparties, invoices, acts and waybills, while this server connects to QuickBooks Online, which adds journal entries, a trial balance and a balance sheet |
| Kontur Elba MCP server | no | API key | 0 | a server for Kontur.Elba, with a different accounting system and document set |
README in short
The page covers the server's features, a quick install and a sample Claude Code config, then lists entities, reports and tools. A separate section explains the OAuth setup for sandbox and production companies with common pitfalls. The end covers building, tests, project structure and tool naming rules.