Accounting MCP Server 🐳 Docker

QuickBooks Online MCP

MCP server for QuickBooks Online. Manage customers, invoices, expenses, payments, and run financial reports.

Installation

Run the MCP server with npx:

npx @wyre-technology/qbo-mcp

Or install the package:

npm install @wyre-technology/qbo-mcp

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "qbo": {
      "command": "npx",
      "args": [
        "@wyre-technology/qbo-mcp"
      ],
      "env": {
        "QBO_ACCESS_TOKEN": "your-qbo-access-token",
        "QBO_REALM_ID": "your-qbo-realm-id"
      }
    }
  }
}

Authentication

Variable Required Description
QBO_ACCESS_TOKEN Yes OAuth 2.0 access token for QuickBooks Online
QBO_REALM_ID Yes Your QuickBooks Online company ID (realm ID)

Getting Credentials

Vendor portal: https://developer.intuit.com/

Prerequisites

  • QuickBooks Online subscription (any tier)
  • Intuit Developer account at https://developer.intuit.com/
  • Awareness that QBO uses OAuth 2.0; you create a developer app to issue tokens

Steps

  1. Sign in to your Intuit Developer account at https://developer.intuit.com/.
  2. Navigate to Dashboard → Apps → Create an app.
  3. Select "QuickBooks Online and Payments" as the scope.
  4. Configure the app: name, target environment (Sandbox for testing, Production for live), and OAuth 2.0 redirect URI per your deployment.
  5. In the app's "Keys & OAuth" section, note the Client ID and Client Secret.
  6. Walk through the OAuth 2.0 authorization flow to obtain an access_token + refresh_token.
    • QBO access tokens expire after 1 hour; the refresh_token (valid ~100 days) is used to issue new access tokens.
    • See https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0 for the canonical flow.
  7. Set QBO_ACCESS_TOKEN and QBO_REALM_ID (the QuickBooks Online company ID — visible during OAuth callback as "realmId").

Required Scopes / Permissions

  • com.intuit.quickbooks.accounting (for accounting entities — Items, Customers, Invoices, etc.)
  • com.intuit.quickbooks.payments (only if using payment endpoints)

Credential Format

Access token is a JWT-like string (long, base64-ish). Realm ID is a numeric company ID (e.g., "1234567890").

Rotation

Access token refreshes every hour via the refresh_token. Refresh_token rotates every ~100 days — store the latest refresh_token to maintain access. Gateway should implement automatic token refresh.

Architecture

Single TypeScript MCP server supporting both stdio and Streamable HTTP transports.

Available Tools (20)

Tools are organized into 5 domains:

Customers

Manage customer records.

Tool Description
List customers List customers with filtering
Get customer Get customer details
Create customer Create a new customer
Search customers Search customers by name or email

Invoices

Create and manage invoices.

Tool Description
List invoices List invoices with filtering
Get invoice Get invoice details
Create invoice Create a new invoice
Send invoice Email an invoice to a customer

Expenses

View purchases and bills.

Tool Description
List purchases List expense purchases
List bills List vendor bills
Get purchase Get purchase details
Get bill Get bill details

Payments

Record and view customer payments.

Tool Description
List payments List payments received
Get payment Get payment details
Create payment Record a customer payment

Reports

Generate financial reports.

Tool Description
Profit & Loss Generate a P&L report
Balance Sheet Generate a balance sheet report
Aged Receivables Generate aged receivables report
Aged Payables Generate aged payables report
Customer Sales Generate customer sales report