
QuickBooks Online
io.github.mindstonePublished by GitHub account mindstonev0.4.3Updated Oct 24, 2026
QuickBooks Online MCP server: invoices, bills, customers, vendors, employees, and accounts
Overview
A local MCP server that lets an assistant read and write QuickBooks Online data: customers, vendors, invoices, bills, estimates, employees, accounts and reports
- What you can do
- Query and fetch entities with QuickBooks Query Language, and run financial reports such as Profit and Loss, Balance Sheet, Cash Flow, Aged Receivables and Aged Payables. List, create and update customers and vendors, including deactivating them. List, create and update invoices, email an invoice to its customer, and download an invoice as a PDF. List and create estimates and bills, and list employees and the chart of accounts. Configure the QuickBooks Online OAuth credentials from within the assistant.
- When to use it
- Useful when an assistant should work directly with a company's QuickBooks Online books: pulling reports, looking up customers or invoices, drafting and sending invoices, or recording bills and estimates without switching to the QuickBooks web interface.
- Requirements
- Runs locally via npx with Node.js 20+ and npm. Needs an Intuit Developer app and the environment variables QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN and QUICKBOOKS_REALM_ID; QUICKBOOKS_ENVIRONMENT selects sandbox or production and defaults to production. Network access to the QuickBooks API.
Installation
In SourceWeft
- Open QuickBooks Online in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@mindstone/mcp-server-quickbooks
[npm version] [License: FSL-1.1-MIT]
QuickBooks Online MCP server for Model Context Protocol hosts. Manage invoices, bills, customers, vendors, employees, and accounts in QuickBooks Online through a standardised MCP interface.
Status
- Version: 0.4.3 · npm
- Auth: OAuth (
QUICKBOOKS_REFRESH_TOKEN) - Tools: 21 (customers, vendors, invoices, bills, estimates, reports)
- Surface: cloud-api
- Machine-readable:
STATUS.json
Production writes are enabled by default
Every QuickBooks-mutating tool
(create_quickbooks_invoice, create_quickbooks_bill,
create_quickbooks_customer, create_quickbooks_vendor,
create_quickbooks_estimate, send_quickbooks_invoice_email,
update_quickbooks_invoice, update_quickbooks_customer,
update_quickbooks_vendor) executes its write without any opt-in:
capability is enabled by default and the host's tool-approval layer is the
gate. Read-only tools (list_*, get_*, query_*, download_*,
configure_quickbooks) are unaffected.
Versions 0.3.0–0.4.0 gated these writes behind a QB_ALLOW_PROD_WRITES=1
environment variable. That gate has been removed; the variable is no longer
read and can be deleted from host configurations.
Requirements
- Node.js 20+
- npm
One-click install
[Add to Cursor] [Add to VS Code] [Add to VS Code Insiders]
After clicking the button, your host will prompt you to fill: QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID, QUICKBOOKS_ENVIRONMENT.
Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (QuickBooks Online)
Quick Start
Install & build
npx (once published)
Local
Configuration
Environment variables
QUICKBOOKS_CLIENT_ID— Intuit Developer app client IDQUICKBOOKS_CLIENT_SECRET— Intuit Developer app client secretQUICKBOOKS_REFRESH_TOKEN— OAuth 2.0 refresh tokenQUICKBOOKS_REALM_ID— QuickBooks company (realm) IDQUICKBOOKS_ENVIRONMENT—sandboxorproduction(default:production)MCP_HOST_BRIDGE_STATE— optional path to a host bridge state file used for credential managementMINDSTONE_REBEL_BRIDGE_STATE— backwards-compatible alias forMCP_HOST_BRIDGE_STATE
Host configuration examples
Claude Desktop / Cursor
Local development (no npm publish needed)
Tools (21)
Configuration
configure_quickbooks— Configure QuickBooks Online OAuth credentials
Query
query_quickbooks— Run a QuickBooks query using QuickBooks Query Languageget_quickbooks_entity— Get a single entity by type and ID
Reports
get_quickbooks_report— Run a financial report (ProfitAndLoss, BalanceSheet, CashFlow, AgedReceivables, AgedPayables)
Customers
list_quickbooks_customers— List customerscreate_quickbooks_customer— Create a new customerupdate_quickbooks_customer— Sparse-update a customer (deactivate withactive: false)
Vendors
list_quickbooks_vendors— List vendorscreate_quickbooks_vendor— Create a new vendorupdate_quickbooks_vendor— Sparse-update a vendor (deactivate withactive: false)
Invoices
list_quickbooks_invoices— List invoicescreate_quickbooks_invoice— Create a new invoiceupdate_quickbooks_invoice— Sparse-update invoice header fields (dueDate, memo, privateNote)send_quickbooks_invoice_email— Email an invoice to its customerdownload_quickbooks_invoice_pdf— Download an invoice as a PDF (saved to the system temp directory)
Estimates
list_quickbooks_estimates— List estimates (quotes)create_quickbooks_estimate— Create a new estimate
Bills
list_quickbooks_bills— List bills (accounts payable)create_quickbooks_bill— Create a new bill
Employees
list_quickbooks_employees— List employees
Accounts
list_quickbooks_accounts— List chart of accounts
Untrusted content envelopes
Text authored inside QuickBooks (customer/vendor display names, memos, line
descriptions, report cells) is attacker-influenceable, so the connector wraps
it in <untrusted-content source="quickbooks:…"> envelopes before returning
it to the model. Typed entity payloads are sanitized deny-by-default: every
string is enveloped — including strings inside arrays, which have no key
context — unless its key is a narrow structural predicate (IDs, SyncToken,
dates/timestamps, enums) and its value passes a shape guard. query_quickbooks,
get_quickbooks_entity, and reports envelope every string key and value
wholesale. Structural values such as Id, SyncToken, dates, and
amounts are left untouched so they stay usable as inputs to follow-up calls.
Licence
FSL-1.1-MIT — Functional Source License, Version 1.1, with MIT future licence. The software converts to MIT licence on 2030-04-08.
Source: connectors/quickbooks/README.md at commit 0396f0b
Tools
0Version history
2- v0.4.3LatestOct 14, 2026
- v0.4.2Sep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.