MCP Hub
Back to servers

quickbooks-mcp

MCP server for QuickBooks Online API integration

Updated
Jan 25, 2026

Quick Install

npx -y quickbooks-mcp

QuickBooks MCP Server

A Model Context Protocol (MCP) server that provides Claude with access to QuickBooks Online data. Enables querying customers, invoices, accounts, transactions, and more through natural language.

How This Differs from Intuit's Official Server

Intuit provides an official MCP server for learning and experimentation. This community server is designed for production use with additional features:

FeatureIntuit OfficialThis Server
EnvironmentSandbox onlyProduction + Sandbox
Credential StorageLocal .env fileLocal file or AWS Secrets Manager
Financial ReportsNoP&L, Balance Sheet, Trial Balance
Query StyleEntity-specific toolsGeneric SQL-like queries
DistributionClone from GitHubNPM package (npx quickbooks-mcp)
Multi-user SupportNoYes (via AWS mode)

Use Intuit's server if you're learning the QuickBooks API in a sandbox environment.

Use this server if you need production access, financial reports, or shared credential management.

Prerequisites

Installation Options

Choose the setup that fits your use case:

SetupBest For
NPM InstallQuick setup, using your own QuickBooks app
Local CheckoutDevelopment, customization
AWS ModeShared/production environments

Option 1: NPM Install

The simplest way to get started. Credentials are stored locally on your machine.

1. Create a QuickBooks App

  1. Go to developer.intuit.com and sign in
  2. Create a new app (or select an existing one)
  3. Go to "Keys & credentials"
  4. Note your Client ID and Client Secret
  5. Under "Redirect URIs", add: https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl

2. Add to Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "quickbooks": {
      "command": "npx",
      "args": ["-y", "quickbooks-mcp"]
    }
  }
}

3. Configure Credentials

Create ~/.quickbooks-mcp/credentials.json:

{
  "client_id": "your_client_id",
  "client_secret": "your_client_secret"
}

4. Authenticate

Once Claude Code is running, use the qbo_authenticate tool:

  1. Call qbo_authenticate with no arguments to get an authorization URL
  2. Open the URL in your browser and authorize the app
  3. Copy the code and realmId from the redirect URL
  4. Call qbo_authenticate again with the authorization code and realm ID

Your OAuth tokens will be saved and automatically refreshed.


Option 2: Local Checkout

For development or customization.

1. Create a QuickBooks App

Follow the same steps as Option 1 above.

2. Clone and Build

git clone https://github.com/laf-rge/quickbooks-mcp.git
cd quickbooks-mcp
npm install
npm run build

3. Add to Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["/path/to/quickbooks-mcp/dist/index.js"]
    }
  }
}

4. Configure Credentials

Create ~/.quickbooks-mcp/credentials.json with your client credentials (same as Option 1), then run qbo_authenticate to complete the OAuth flow.


Option 3: AWS Mode

For shared or production environments. Stores credentials in AWS Secrets Manager.

1. Create AWS Resources

Create the secret in Secrets Manager:

aws secretsmanager create-secret \
  --name prod/qbo \
  --secret-string '{
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "access_token": "your_access_token",
    "refresh_token": "your_refresh_token",
    "redirect_url": "https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl"
  }'

Store Company ID in SSM Parameter Store:

aws ssm put-parameter \
  --name /prod/qbo/company_id \
  --value "your_company_id" \
  --type SecureString

2. Configure the Server

Create a .env file in the quickbooks-mcp directory:

QBO_CREDENTIAL_MODE=aws
AWS_REGION=us-east-2
QBO_SECRET_NAME=prod/qbo
QBO_COMPANY_ID_PARAM=/prod/qbo/company_id

Note: Due to a known Claude Code bug, environment variables from .mcp.json are not reliably passed to MCP servers. The .env file workaround is required.

3. Add to Claude Code

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["/path/to/quickbooks-mcp/dist/index.js"]
    }
  }
}

4. IAM Permissions

The server needs these AWS permissions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:*:*:secret:prod/qbo*"
    },
    {
      "Effect": "Allow",
      "Action": ["ssm:GetParameter"],
      "Resource": "arn:aws:ssm:*:*:parameter/prod/qbo/*"
    }
  ]
}

Environment Variables

VariableDefaultDescription
QBO_CREDENTIAL_MODElocalCredential storage: local or aws
QBO_CLIENT_ID-QuickBooks app Client ID (local mode)
QBO_CLIENT_SECRET-QuickBooks app Client Secret (local mode)
QBO_CREDENTIAL_FILE~/.quickbooks-mcp/credentials.jsonCustom credential file path
QBO_SANDBOXfalseUse QuickBooks sandbox environment
AWS_REGIONus-east-2AWS region (aws mode)
QBO_SECRET_NAMEprod/qboSecrets Manager secret name (aws mode)
QBO_COMPANY_ID_PARAM/prod/qbo/company_idSSM parameter path (aws mode)

Available Tools

ToolDescription
qbo_authenticateSet up OAuth credentials (local mode only)
get_company_infoGet connected company information
queryRun SQL-like queries against QuickBooks
list_accountsList chart of accounts
get_profit_lossGet Profit & Loss report
get_balance_sheetGet Balance Sheet report
get_trial_balanceGet Trial Balance report
query_account_transactionsQuery transactions for an account
create_journal_entryCreate a journal entry
get_journal_entryFetch a journal entry by ID
edit_journal_entryModify an existing journal entry
get_billFetch a bill by ID
edit_billModify an existing bill
get_expenseFetch an expense by ID
edit_expenseModify an existing expense
get_sales_receiptFetch a sales receipt by ID
edit_sales_receiptModify an existing sales receipt
get_depositFetch a deposit by ID
edit_depositModify an existing deposit

Token Refresh

The server automatically refreshes OAuth tokens on each request and persists them back to your credential store (local file or AWS Secrets Manager).


Development

npm run dev      # Run in development mode
npm run build    # Build
npm run typecheck # Type check

Troubleshooting

"QuickBooks credentials not configured"

Run the qbo_authenticate tool to set up OAuth credentials (local mode only).

"Authorization code expired"

Authorization codes are only valid for a few minutes. Start the OAuth flow again.

Token refresh fails

  • Check that your refresh token hasn't expired (~100 days)
  • Verify your client credentials are correct
  • Try re-authenticating with qbo_authenticate

AWS credential errors

  • Ensure .env file has QBO_CREDENTIAL_MODE=aws
  • Check your AWS credentials and permissions
  • Verify the secret and parameter names match your configuration

Reviews

No reviews yet

Sign in to write a review