Skip to main content
Glama
QuickBooks Online MCP Server

QuickBooks Online MCP Server

QuickBooks Online MCP Server

A Model Context Protocol (MCP) server for QuickBooks Online integration, enabling AI assistants like Claude to query and manage QuickBooks data through natural language.

Features

  • Customers: List, search, and view customer details

  • Invoices: Create and list invoices with filtering

  • Bills: Track vendor bills and payables

  • Vendors: Manage supplier information

  • Accounts: View chart of accounts

  • Reports: Generate Profit & Loss reports

Related MCP server: QuickBooks MCP

Prerequisites

  • Node.js 18+

  • QuickBooks Online account

  • Intuit Developer account with OAuth app

Quick Start

1. Clone the repository

git clone https://github.com/hakeemrabiuDFW/quickbooks-mcp-server.git
cd quickbooks-mcp-server

2. Install dependencies

npm install

3. Configure environment

cp .env.example .env

Edit .env with your QuickBooks credentials:

QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REFRESH_TOKEN=your_refresh_token
QUICKBOOKS_COMPANY_ID=your_company_id
QUICKBOOKS_ENVIRONMENT=production

4. Build and run

npm run build
npm start

Getting QuickBooks Credentials

Step 1: Create Developer Account

  1. Go to developer.intuit.com

  2. Sign in or create account

  3. Create a new app (select QuickBooks Online API)

Step 2: Get Client Credentials

  1. In your app dashboard, find Client ID and Client Secret

  2. Add OAuth redirect URI: http://localhost:3000/callback

Step 3: Get Refresh Token

  1. Use the OAuth Playground in Intuit Developer portal

  2. Or use a tool like qbo-oauth-tool

  3. Complete OAuth flow to get refresh token

Step 4: Find Company ID (Realm ID)

  1. Log into QuickBooks Online

  2. Company ID is in the URL: https://qbo.intuit.com/app/...?realmId=COMPANY_ID

Claude Desktop Configuration

Add to your Claude Desktop config (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["/path/to/quickbooks-mcp-server/dist/index.js"],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "your_client_id",
        "QUICKBOOKS_CLIENT_SECRET": "your_client_secret",
        "QUICKBOOKS_REFRESH_TOKEN": "your_refresh_token",
        "QUICKBOOKS_COMPANY_ID": "your_company_id",
        "QUICKBOOKS_ENVIRONMENT": "production"
      }
    }
  }
}

Available Tools

Tool

Description

qbo_list_customers

List customers with optional filtering

qbo_list_invoices

List invoices by customer, status, or date

qbo_create_invoice

Create a new invoice

qbo_list_accounts

View chart of accounts

qbo_profit_loss_report

Generate P&L report

qbo_list_vendors

List vendor/suppliers

qbo_list_bills

List bills/payables

Example Usage

Once connected to Claude:

"Show me all open invoices"
"Create an invoice for customer ID 123 with a $500 cleaning service charge"
"Get the profit and loss report for Q4 2025"
"List all unpaid bills"

HTTP Transport

To run as HTTP server instead of stdio:

TRANSPORT=http PORT=3000 npm start

Railway Deployment

Deploy to Railway with one click or via CLI:

Option 1: Railway Dashboard

  1. Fork this repository

  2. Go to Railway and create a new project

  3. Select "Deploy from GitHub repo"

  4. Add environment variables in Railway dashboard:

    • QUICKBOOKS_CLIENT_ID

    • QUICKBOOKS_CLIENT_SECRET

    • QUICKBOOKS_REFRESH_TOKEN

    • QUICKBOOKS_COMPANY_ID

    • QUICKBOOKS_ENVIRONMENT=production

  5. Railway will auto-deploy using the included Dockerfile

Option 2: Railway CLI

# Install Railway CLI
npm install -g @railway/cli

# Login and deploy
railway login
railway init
railway up

MCP Endpoint

Once deployed, your MCP endpoint will be:

https://your-app.railway.app/mcp

Health check available at:

https://your-app.railway.app/health

Docker Deployment (Local)

docker build -t quickbooks-mcp .
docker run -p 3000:3000 --env-file .env quickbooks-mcp

License

MIT

Author

Hakeem Rabiu - Martinez Cleaning LLC

Available Tools

7 tools
qbo_create_invoiceCreate QuickBooks InvoiceA

Create a new invoice in QuickBooks Online.

Args:

  • customer_id (required): The QuickBooks customer ID

  • line_items (required): Array of {description, amount, quantity}

  • due_date: Invoice due date (YYYY-MM-DD)

  • memo: Notes visible to customer

Returns: Created invoice details including Id, DocNumber, and TotalAmt

Inputs: customer_id (required), line_items (required), due_date, memo.

qbo_list_accountsList QuickBooks AccountsA
Read-onlyIdempotent

List chart of accounts from QuickBooks Online.

Args:

  • account_type: Filter by type ('all', 'Bank', 'Accounts Receivable', etc.)

  • response_format: 'markdown' or 'json'

Returns: Account list with: Id, Name, AccountType, CurrentBalance

Inputs: account_type, response_format.

qbo_list_billsList QuickBooks BillsA
Read-onlyIdempotent

List bills/payables from QuickBooks Online.

Args:

  • limit/offset: Pagination

  • vendor_id: Filter by vendor

  • status: 'all', 'unpaid', or 'paid'

  • response_format: 'markdown' or 'json'

Returns: Bill list with: Id, VendorRef, TxnDate, DueDate, TotalAmt, Balance

Inputs: limit, offset, response_format, vendor_id, +1 more.

qbo_list_customersList QuickBooks CustomersA
Read-onlyIdempotent

List all customers from QuickBooks Online.

Returns customer details including name, email, phone, balance, and status.

Args:

  • limit (number): Maximum results (default: 100, max: 1000)

  • offset (number): Skip results for pagination

  • active_only (boolean): Only active customers (default: true)

  • search (string): Filter by name/company

  • response_format: 'markdown' or 'json'

Returns: List of customers with: Id, DisplayName, PrimaryEmailAddr, PrimaryPhone, Balance, Active

Inputs: limit, offset, response_format, active_only, +1 more.

qbo_list_invoicesList QuickBooks InvoicesA
Read-onlyIdempotent

List invoices from QuickBooks Online with filtering options.

Args:

  • limit/offset: Pagination

  • customer_id: Filter by specific customer

  • status: 'all', 'open', 'paid', or 'overdue'

  • start_date/end_date: Date range filter (YYYY-MM-DD)

  • response_format: 'markdown' or 'json'

Returns: Invoice list with: Id, DocNumber, CustomerRef, TxnDate, DueDate, TotalAmt, Balance

Inputs: limit, offset, response_format, customer_id, +3 more.

qbo_list_vendorsList QuickBooks VendorsA
Read-onlyIdempotent

List vendors/suppliers from QuickBooks Online.

Args:

  • limit/offset: Pagination

  • active_only: Only active vendors (default: true)

  • response_format: 'markdown' or 'json'

Returns: Vendor list with: Id, DisplayName, Email, Phone, Balance

Inputs: limit, offset, response_format, active_only.

qbo_profit_loss_reportGet Profit & Loss ReportA
Read-onlyIdempotent

Generate a Profit & Loss (Income Statement) report.

Args:

  • start_date: Report start date (YYYY-MM-DD)

  • end_date: Report end date (YYYY-MM-DD)

  • response_format: 'markdown' or 'json'

Returns: P&L report with Income, Cost of Goods Sold, Expenses, and Net Income

Inputs: start_date (required), end_date (required), response_format.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 7 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose targeting specific QuickBooks Online resources: invoices (create and list), accounts, bills, customers, vendors, and a profit/loss report. There is no overlap in functionality—each tool serves a unique CRUD or reporting role.

    Naming Consistency5/5

    All tool names follow a consistent 'qbo_verb_noun' pattern (e.g., qbo_create_invoice, qbo_list_accounts). This uniform naming convention makes the tool set predictable and easy to navigate.

    Tool Count4/5

    With 7 tools, the count is reasonable for a QuickBooks Online server, covering core entities like invoices, customers, and reports. However, it feels slightly thin as it lacks update/delete operations for resources like invoices or bills, which are common in accounting workflows.

    Completeness3/5

    The tool set provides good listing and creation capabilities for key resources (invoices, customers, vendors) and a profit/loss report, but there are notable gaps. Missing update/delete tools for invoices, bills, and other entities limit full CRUD coverage, and additional reporting tools (e.g., balance sheet) would enhance completeness.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Connects AI assistants to QuickBooks Online, enabling management of invoices, customers, expenses, and reports through natural language.
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables financial professionals to interact with QuickBooks Online using natural language for reports, journal entries, bills, expenses, and more.
      36
      356 npm
      14
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides comprehensive CRUD operations for 29 QuickBooks Online entity types and 11 financial reports, enabling full accounting management through natural language.
      Apache 2.0
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to securely access and query QuickBooks Online accounting data through natural language, translating requests into structured queries and returning results for analysis, reporting, and financial workflows.
      -