quickbooks-online-mcp
QuickBooks Online MCP server rebuilt on Cloudflare Workers with OAuth 2.0, typed Zod schemas, and Streamable HTTP/SSE transport. Drop-in compatible with LibreChat and other MCP clients.
Install / Use
claude mcp add LibreChat-AI -- npx -y github:LibreChat-AI/quickbooks-online-mcpIf the server publishes to npm under a different name, use that package instead ā check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Tags
Our assessment of quickbooks-online-mcp
quickbooks-online-mcp scores 83/100 on our quality scale, 681st of 954 AI & Machine Learning skills we index.
Its MCP Server is 9.3 KB long, well organised into 28 sections with 10 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so quickbooks-online-mcp is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit ā read the skill file before letting an agent act on it.
quickbooks-online-mcp compared with similar skills
All 4 of these similar skills score higher than quickbooks-online-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| quickbooks-online-mcp (this skill)by LibreChat-AI | 83 | 10 | 2mo ago | MCP Server |
| claude-memby thedotmack | 100 | 101.9k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 100.2k | today | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 87.2k | 8d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 76.7k | today | CLAUDE.md |
Frequently asked questions
- How do I install quickbooks-online-mcp?
- Run
claude mcp add LibreChat-AI -- npx -y github:LibreChat-AI/quickbooks-online-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does quickbooks-online-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is quickbooks-online-mcp safe to use?
- It is Apache-2.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is quickbooks-online-mcp still maintained?
- The repository was last updated about 2 months ago, so quickbooks-online-mcp is actively maintained.
Skill content
View source on GitHubQuickBooks Online MCP Server
A Model Context Protocol server for QuickBooks Online, built on Cloudflare Workers with OAuth 2.0 authentication.
Provides 55 tools for managing QuickBooks entities (customers, invoices, bills, vendors, etc.) via any MCP-compatible client.
Architecture
- Cloudflare Workers runtime with Durable Objects for MCP state
- Hono for HTTP routing and OAuth proxy
- McpAgent (from
agentspackage) for MCP transport (SSE + Streamable HTTP) - Pure
fetch()calls to the QuickBooks REST API ā no Node.js SDKs required
api/
āāā index.ts # Hono app: OAuth discovery, /register, /authorize, /token, MCP routes
āāā QuickBooksMCP.ts # McpAgent Durable Object with all tools
āāā QuickBooksService.ts # Fetch-based QB API client (generic CRUD + query builder)
āāā lib/
āāā qb-auth.ts # OAuth middleware and token exchange helpers
Getting Your Intuit Developer Credentials
The Intuit Developer sandbox is completely free ā no QuickBooks subscription needed for testing.
Step 1: Create a Free Developer Account
- Go to developer.intuit.com and sign up (no credit card required)
- Once registered, Intuit automatically creates a sandbox company with sample data
Step 2: Create an App
- After logging in, go to My Hub > App Dashboard
- Click Create an app
- Select QuickBooks Online and Payments
- Name it anything (e.g. "QBO MCP Server")
- Select the
com.intuit.quickbooks.accountingscope - Click Create app
Step 3: Get Your Client ID and Client Secret
- Inside your app, click Keys & OAuth in the left nav
- Make sure you're on the Development tab (not Production)
- Click Show credentials
- Copy your Client ID and Client Secret
Step 4: Add the Redirect URI
Still in Keys & OAuth:
- Scroll to Redirect URIs
- Click Add URI
- Add the redirect URI for your MCP client (see table below)
- Save
| MCP Client | Redirect URI |
|---|---|
| LibreChat (Docker or local) | http://localhost:3080/api/mcp/quickbooks/oauth/callback |
| MCP Inspector | Use the callback URL shown in the Inspector UI |
Setup
1. Install dependencies
npm install
2. Configure secrets
Copy the template and fill in your credentials from the steps above:
cp .dev.vars.template .dev.vars
QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REALM_ID=your_company_id # Optional if passed via header
QUICKBOOKS_ENVIRONMENT=sandbox # 'sandbox' or 'production'
3. Start the server
npx wrangler dev
The server starts at http://localhost:3000.
4. Verify
# Health check
curl http://localhost:3000/
# OAuth discovery
curl http://localhost:3000/.well-known/oauth-authorization-server
MCP Client Configuration
LibreChat
Add to your librechat.yaml:
mcpServers:
quickbooks:
type: "streamable-http"
url: "http://host.docker.internal:3000/mcp" # Use localhost:3000 if not using Docker
requiresOAuth: true
headers:
X-QB-Realm-Id: "{{QB_REALM_ID}}"
X-QB-Environment: "{{QB_ENVIRONMENT}}"
customUserVars:
QB_REALM_ID:
title: "QuickBooks Realm ID"
description: "Your QuickBooks Company ID (found in Intuit Developer Portal under Sandbox settings)"
QB_ENVIRONMENT:
title: "QuickBooks Environment"
description: "Enter 'sandbox' or 'production' (defaults to sandbox)"
You must also add the server's address to mcpSettings.allowedDomains ā LibreChat requires this for any local/non-public MCP server URL:
mcpSettings:
allowedDomains:
- "http://localhost:3000"
When LibreChat starts, it will:
- Detect the server needs OAuth and prompt you to authorize
- Redirect you to Intuit's OAuth page
- After authorizing, ask you for the Realm ID and Environment via the customUserVar prompts
- Connect and expose all QuickBooks tools
Other MCP Clients
Connect to /mcp (Streamable HTTP) or /sse (SSE) with:
Authorization: Bearer {access_token}header (required)X-QB-Realm-Id: {company_id}header (required if not set in env)X-QB-Environment: sandbox|productionheader (optional, defaults to sandbox)X-QB-Refresh-Token: {refresh_token}header (optional, enables auto-refresh on 401)
Finding Your Realm ID
The Realm ID is the QuickBooks Company ID of the company you want to access. This is not the same as your App ID or the developer account Company ID.
Common confusion: The Intuit Developer Portal shows multiple IDs. Your app has a UUID App ID (e.g.
5ff5fa24-...) and the app overview page shows a Company ID for your developer workspace. Neither of these is the Realm ID. The Realm ID is the Company ID of the sandbox or production company with actual accounting data.
For sandbox:
- Go to developer.intuit.com ā your app ā Sandbox tab
- Under your sandbox company, the Company ID is the Realm ID (a numeric string like
9341456502676660)
For production:
- Keyboard shortcut (while logged into QBO):
Ctrl+Alt+?(Windows) orControl+Option+?(Mac) ā shows Company ID on screen - Settings page: Gear icon ā Subscriptions and billing ā Company ID is at the top
- OAuth callback: Intuit includes
realmIdas a query parameter in the redirect URL
Available Tools (55)
Full CRUD + search on all 11 QuickBooks entity types:
| Entity | Create | Read/Get | Update | Delete | Search |
|---|---|---|---|---|---|
| Customer | create_customer | get_customer | update_customer | delete_customer | search_customers |
| Invoice | create_invoice | read_invoice | update_invoice | delete_invoice | search_invoices |
| Account | create_account | get_account | update_account | delete_account | search_accounts |
| Item | create_item | read_item | update_item | delete_item | search_items |
| Estimate | create_estimate | get_estimate | update_estimate | delete_estimate | search_estimates |
| Bill | create_bill | get_bill | update_bill | delete_bill | search_bills |
| Vendor | create_vendor | get_vendor | update_vendor | delete_vendor | search_vendors |
| Employee | create_employee | get_employee | update_employee | delete_employee | search_employees |
| Journal Entry | create_journal_entry | get_journal_entry | update_journal_entry | delete_journal_entry | search_journal_entries |
| Bill Payment | create_bill_payment | get_bill_payment | update_bill_payment | delete_bill_payment | search_bill_payments |
| Purchase | create_purchase | get_purchase | update_purchase | delete_purchase | search_purchases |
Note: Delete on Customer, Vendor, Employee, Account, and Item performs a deactivation (
Active: false) since QuickBooks doesn't support hard deletion on these entities. Delete on Invoice performs a void. Delete on Bill, Estimate, Journal Entry, Bill Payment, and Purchase performs a hard delete.
Tool Schemas
All create tools have typed Zod schemas matching the QuickBooks API spec ā required fields are enforced, optional fields are documented with descriptions. This gives LLMs clear guidance on what to send. For example, create_bill requires VendorRef and Line items with proper AccountBasedExpenseLineDetail or ItemBasedExpenseLineDetail nesting.
All update tools auto-fetch the current entity to get SyncToken and required fields, so callers only need to provide the Id and the fields they want to change.
All delete tools only need the entity id ā SyncToken is fetched automatically.
Search Tools
All search tools accept structured criteria with operators:
{
"criteria": [
{ "field": "DisplayName", "value": "Acme", "operator": "LIKE" },
{ "field": "Balance", "value": 0, "operator": ">" }
],
"limit": 10,
"asc": "DisplayName"
}
Supported operators: =, <, >, <=, >=, LIKE, IN
Deployment
Deploy to Cloudflare Workers:
# Set your Cloudflare account ID (find it in the Cloudflare dashboard)
export CLOUDFLARE_ACCOUNT_ID=your_account_id
# Login to Cloudflare
npx wrangler login
# Set secrets (each prompts for the value)
npx wrangler secret put QUICKBOOKS_CLIENT_ID
npx wrangler secret put QUICKBOOKS_CLIENT_SECRET
npx wrangler secret put QUICKBOOKS_REALM_ID # Optional if passed via header
npx wrangler secret put QUICKBOOKS_ENVIRONMENT # 'sandbox' or 'production'
# Deploy
npx wrangler deploy
The deploy outputs your worker URL (e.g. https://quickbooks-online-mcp-server.<subdomain>.workers.dev). Update your MCP client config to point to this URL.
Sandbox vs Production
| | Sandbox | Production |
|---|---|---|
| API Base URL | sandbox-quickbooks.api.intuit.com | quickbooks.api.intuit.com |
| Data | Sample data from Intuit | Real company data |
| Cost | Free (developer account only) | Requires QBO subscription (Simple Start+) |
| App Review | Not required | Required by Intuit |
| OAuth Keys | Development keys from dev portal | Production keys (after app approval) |
Sandbox is the default. Set QUICKBOOKS_ENVIRONMENT=production or pass X-QB-Environment: production header to use production.
License
MIT
Related Skills
claude-mem
101.9kPersistent Context Across Sessions for Every Agent ā Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
100.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu ā one CLI, zero API fees.
Understand-Anything
87.2kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
76.7kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit ā see the Safety scan above for what the skill file itself contains.
