Model Context Protocol (MCP) server for the QuickBooks Online Accounting API. Enables Claude and other MCP-compatible clients to manage QBO customers, invoices, expenses, payments, and reports.
- Node.js >= 20
- QuickBooks Online OAuth2 app credentials (requires an Intuit developer account)
npm install
npm run buildQBO_ACCESS_TOKEN=your-access-token QBO_REALM_ID=your-realm-id npm startMCP_TRANSPORT=http QBO_ACCESS_TOKEN=your-access-token QBO_REALM_ID=your-realm-id npm startThe server listens on http://0.0.0.0:8080/mcp by default.
docker build -t qbo-mcp .
docker run -p 8080:8080 \
-e MCP_TRANSPORT=http \
-e QBO_ACCESS_TOKEN=your-access-token \
-e QBO_REALM_ID=your-realm-id \
qbo-mcp| Variable | Required | Default | Description |
|---|---|---|---|
QBO_ACCESS_TOKEN |
Yes (env mode) | — | QuickBooks Online OAuth2 access token |
QBO_REALM_ID |
Yes (env mode) | — | QuickBooks Online company (realm) ID |
MCP_TRANSPORT |
No | stdio |
Transport type: stdio or http |
MCP_HTTP_PORT |
No | 8080 |
HTTP server port |
MCP_HTTP_HOST |
No | 0.0.0.0 |
HTTP server bind address |
AUTH_MODE |
No | env |
Auth mode: env or gateway |
When AUTH_MODE=gateway, credentials are passed per-request via HTTP headers instead of environment variables:
X-Qbo-Access-Token— OAuth2 access tokenX-Qbo-Realm-Id— QuickBooks Online company (realm) ID
This allows a gateway/proxy to manage multi-tenant credentials.
Tools are organized into domains. Use qbo_navigate to select a domain, then use the domain-specific tools.
qbo_navigate— Select a domain (customers, invoices, expenses, payments, reports)qbo_back— Return to domain selection
qbo_customers_list— List customersqbo_customers_get— Get customer by IDqbo_customers_create— Create a new customerqbo_customers_search— Search customers by name or other criteria
qbo_invoices_list— List invoicesqbo_invoices_get— Get invoice by IDqbo_invoices_create— Create a new invoiceqbo_invoices_send— Send an invoice via email
qbo_expenses_list_purchases— List purchase transactionsqbo_expenses_list_bills— List billsqbo_expenses_get_purchase— Get purchase by IDqbo_expenses_get_bill— Get bill by ID
qbo_payments_list— List paymentsqbo_payments_get— Get payment by IDqbo_payments_create— Create a new payment
qbo_reports_profit_and_loss— Generate Profit and Loss reportqbo_reports_balance_sheet— Generate Balance Sheet reportqbo_reports_aged_receivables— Generate Aged Receivables reportqbo_reports_aged_payables— Generate Aged Payables reportqbo_reports_customer_sales— Generate Customer Sales report
Apache-2.0