About QuickBooks Online
QuickBooks Online is an MCP server for hosts that need to work with QuickBooks Online business records. Its tools cover common accounting entities, reports, and invoice handling, including creating and updating records.
Key features
- 01Manage customers and vendors
- 02Create and update invoices
- 03List and create bills
- 04Create estimates
- 05Run queries and financial reports
- 06Download invoice PDFs
Use cases
- 01Create or revise customer invoices
- 02Record vendor bills and estimates
- 03Review financial reports and account data
MCP support
Exposes 21 tools to MCP hosts for querying QuickBooks Online, retrieving records and reports, and managing customers, vendors, invoices, bills, and estimates. OAuth credentials configure access.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @mindstone/mcp-server-quickbooksQUICKBOOKS_CLIENT_IDIntuit Developer app client IDQUICKBOOKS_CLIENT_SECRETSecretIntuit Developer app client secretQUICKBOOKS_REFRESH_TOKENSecretOAuth 2.0 refresh tokenQUICKBOOKS_REALM_IDQuickBooks company (realm) IDQUICKBOOKS_ENVIRONMENTsandbox or productionMCP_HOST_BRIDGE_STATEOptional path to a host bridge state file used for credential managementMINDSTONE_REBEL_BRIDGE_STATEBackwards-compatible alias for MCP_HOST_BRIDGE_STATELocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
21Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| realmId | string | Yes | QuickBooks company ID (Realm ID) |
| clientId | string | Yes | Intuit Developer app Client ID |
| environment | enum | No | "sandbox" or "production" (default: production)sandbox | production |
| clientSecret | string | Yes | Intuit Developer app Client Secret |
| refreshToken | string | Yes | OAuth2 refresh token from the authorization flow |
Details
From the project README@mindstone/mcp-server-quickbooks
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
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)
{
"mcpServers": {
"QuickBooks Online": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-quickbooks"
],
"env": {
"QUICKBOOKS_CLIENT_ID": "",
"QUICKBOOKS_CLIENT_SECRET": "",
"QUICKBOOKS_REFRESH_TOKEN": "",
"QUICKBOOKS_REALM_ID": "",
"QUICKBOOKS_ENVIRONMENT": "production"
}
}
}
}
Quick Start
Install & build
cd <path-to-repo>/connectors/quickbooks
npm install
npm run build
npx (once published)
npx -y @mindstone/mcp-server-quickbooks
Local
node dist/index.js
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
{
"mcpServers": {
"QuickBooks": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-quickbooks"],
"env": {
"QUICKBOOKS_CLIENT_ID": "your-client-id",
"QUICKBOOKS_CLIENT_SECRET": "your-client-secret",
"QUICKBOOKS_REFRESH_TOKEN": "your-refresh-token",
"QUICKBOOKS_REALM_ID": "your-realm-id"
}
}
}
}
Local development (no npm publish needed)
{
"mcpServers": {
"QuickBooks": {
"command": "node",
"args": ["<path-to-repo>/connectors/quickbooks/dist/index.js"],
"env": {
"QUICKBOOKS_CLIENT_ID": "your-client-id",
"QUICKBOOKS_CLIENT_SECRET": "your-client-secret",
"QUICKBOOKS_REFRESH_TOKEN": "your-refresh-token",
"QUICKBOOKS_REALM_ID": "your-realm-id"
}
}
}
}
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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.